Skip to content

v2.16.0

Compare
Choose a tag to compare
@github-actions github-actions released this 07 Jul 14:01
  • Important rebranding: The plug-in has been renamed from "ReaLearn" to "Helgobox - ReaLearn & Playtime". Helgobox unites 2 products: ReaLearn (free and open-source) and Playtime (paid and mostly closed-source).
  • ReaLearn now requires at least REAPER 6.11 (I simplified some code by using REAPER 6.11 features)
  • Changed scripting language from Lua 5.4 to Luau (existing scripts should run in the same way as before because all Lua 5.4 functions that I have previously unlocked for usage are also available in Luau)
  • Added welcome screen which allows one to add a Playtime toolbar button. That works best with current REAPER releases, older REAPER versions require a restart.
  • Added generic main preset for changing FX parameters
  • Added Helgobox App: An app that provides the user interface for Playtime and ReaLearn Projection. Right now, it is only available embedded into REAPER and only on macOS on Windows. In the future, it will be made available for Linux, Android and iOS, eventually replacing the ReaLearn Companion App.
  • #906 Added a REAPER extension, which is automatically loaded at REAPER startup and acts as a supplement to the actual VST plug-in. Provides a convenient entry 'Helgobox' in the REAPER 'Extensions' menu and other features right after REAPER start, which would otherwise only be available if at least one ReaLearn VST plug-in instance is loaded. This extension is currently shipped on Windows and macOS. It's optional, ReaLearn will also work without it!
  • #931 Pot Browser: Added recording of preset previews for exporting purposes
  • #870 Added ability to add additional units to one ReaLearn instance (= one ReaLearn instance can now deal with multiple controllers)
  • #901 Added support for compartment presets written in the Luau language (including the ability to require other Luau modules in the same namespace)
  • #908 Added extensive auto-generated Luau type definitions for building ReaLearn presets, ReaLearn MIDI script sources and Playtime matrices with auto-completion and error reporting (for code editors with Luau support, e.g. Visual Studio Code)
  • #908 Added menu option to create a ready-made preset development workspace that can be opened in Visual Studio Code (see workspace README for details)
  • Added possibility to reuse Luau code defined once within a compartment preset across all MIDI script sources used in that compartment (avoids having to duplicate device-specific code in hundreds of mapping, saving memory ... and it just makes sense)
  • #902 Added support for factory presets (they are really built-in, not shipped separately ... presets currently distributed via ReaPack will disappear soon)
  • #903 Added feedback logging to mapping panels (analogously to control logging)
  • #900 Added "Auto units" feature (1. Globally define what controllers you have => 2. Choose which main preset you want to use for which controller => 3. Make one or several ReaLearn instances automatically load/unload those presets whenever the controllers are connected/disconnected ... controller manager is a part of the Helgobox App, which is currently only available to Playtime Early Access testers)
  • #905 Added possibility to add metadata to Luau presets (displayed in the upcoming Helgobox App and used for the new "Auto units" feature as well as automatic creation of known controllers
  • #905 Added auto-magical creation of known MIDI controllers (via MIDI device inquiry, used for the new "Auto units" features)
  • #757 Added possibility to write feedback scripts in the glue section: Now you can build arbitrary feedback messages using Lua code (custom text formatting is just one of the many possibilities).
  • #716 Added Novation SL MkIII Pot Browser Control preset (available here)
  • #716 Added text placeholders "target.available", "global.realearn_time", "target.discrete_value" and "target.discrete_value_count"
  • #743 Added text placeholders "target.fx_parameter.macro.new_section.name" and "target.fx_parameter.macro.section.index" to target "FX parameter: Set value"
  • #743 Added many text placeholders to targets "Pot: Browse presets" and "Pot: Load preset" for obtaining preset metadata such as author and comment
  • #861 Pot Browser: Improved usability by stopping preview as soon as loading the preset
  • Improved virtual control by considering two same-named virtual control elements with different character the same (this change has only been made to named control elements, not to numbered ones!)
  • #923 Improved auto-load by falling back to initially active preset when no FX focused
  • #928 Improved both "After timeout" fire modes by respecting button filter setting (this makes long-press-on-release-off scenarios achievable with just one mapping)
  • Improved import by warning when invalid top-level properties were detected (which could indicate wrong usage of the import API)
  • Improved error reporting when importing invalid Luau code by making the error cause more visible
  • Improved reliability of preset loading/import in high-CPU usage situations by increasing the maximum execution time of Luau scripts
  • Improved reporting of general errors by not just logging repeated error messages as vertical dashes (this was confusing)
  • Improved Projection feature by building it into the Helgobox App (which is only accessible to early-access Playtime testers at the moment)
  • Improved ReaLearn unit management by allowing custom unit names and improving how units are displayed in the main panel
  • Improved Lua-based compartment presets: One can now add a preset description
  • Improved Midi Fighter Twister controller presets: Now Lua-based, with ReaLearn color support and available in 2 different virtual control schemes (grid and numbered)
  • Improved ReaLearn REAPER actions by showing an error if instance needed to execute the action and improving macOS message panel font size
  • Improved Lua MIDI scripts by allowing them to access the common compartment Lua module even when just calculating the feedback address
  • Improved Lua-based presets and imports by detecting cyclic module dependencies
  • #904 Improved target menu by distinguishing between different target sections
  • #902 Improved preset sharing by introducing the concept of preset namespaces (each sub folder of the main/controller preset folder is now a namespace, that means it's completely self-contained and can be easily shared, each namespace shows up in a different sub menu when browsing presets)
  • #788 Improved shutdown behavior by switching all device LEDs/screens off and tearing all motor faders down when quitting REAPER
  • #914 Improved input/output pickers by distinguishing between available and not available devices
  • #913 Improved OSC performance by processing more OSC messages per cycle
  • #913 Improved general performance by introducing lots of small-scale boosts after profiling hot code (non-crypto hash functions, unnecessary allocation and processing)
  • #915 Improved robustness and usability by not participating in REAPER's undo anymore (this can prevent potentially fatal but in any case surprising scenarios in which doing an undo in REAPER sets back ReaLearn and Playtime to a very old state, requires REAPER >= v7.09+dev0202)
  • Improved dummy target by making it work just like most other targets (generating pseudo feedback, value changes observable in mapping panel etc.)
  • #916 Improved user interface by adding colors
  • #743 Improved target "Pot: Preview preset" by using the same sound player as the Pot Browser (inherits its functionality such as customizable volume and stopping playback when preset loaded)
  • #864 Improved feedback due to conditional activation/deactivation by emitting it in deterministic order (in mapping order)
  • #716 Improved feedback possibilities by processing text feedback expressions and scripts even if target doesn't support normal (numerical) feedback
  • #716 Improved availability check for almost all Pot targets (good for advanced visual feedback of what Pot features are available in a certain situation, see new text placeholder "target.available")
  • Improved resource usage (by firing up threads for async logging and metrics only if enabled, by letting ReaLearn and Clip Engine metrics share the same thread, by making app and server share the same one-threaded async runtime and by stopping async deallocation thread and async runtime when last ReaLearn instance gone)
  • Improved plug-in scanning speed (ReaLearn won't initialize a few things if it knows it's just being scanned anyway)
  • Improved resource clean-up on Windows when REAPER preference "Allow complete unload of VST plug-ins" enabled
  • Fixed memorization of last color in color picker
  • Fixed some incorrect detection of recursive tables in Luau code on import
  • #862 Fixed source "MIDI script" feedback address not being respected (important e.g. for switching feedback off correctly)
  • #863 Fixed ambiguous "kind" properties in ReaLearn Script (Lua import/export)
  • #716 Fixed "context.feedback_value.color" not containing nil when no color set in source "MIDI script"
  • #860 Fixed possible freeze when using "Open in text editor on macOS" by completely disabling this function on macOS
  • #857 Fixed possible error when using "Selected" track selector and removing that selected track
  • #875 Fixed deadlock when using 500+ ReaLearn instances
  • #867 Fixed possible 'REAPER string should be UTF-8 encoded' error (when using long compartment parameter names in ReaLearn and referring to them elsewhere, e.g. as TCP param)
  • #865 Fixed Lua import of XTouchMackieLCD display source settings
  • #866 Fixed linking from FX to preset when ReaLearn is on monitoring FX chain
  • Fixed 'BorrowMut' error when copy/pasting mapping with target-based activation condition
  • Fixed potential hard crash in process_f64 call
  • Fixed possible panic when closing REAPER
  • #916 Fixed scaling issue on Linux (colors are now also available on Linux but still looks a bit funny, hopefully the dark mode detection for SWELL customizations works now)
  • Internal change: Added counter of undesired real-time allocations to UI (debug builds only)
  • Internal change: Removed undocumented ReaLearn script utility functions
  • Internal change: Removed old logging framework
  • Internal change: Renamed lots of Prometheus metrics
  • Internal change: Enforced UTF-8-encoded paths very early in the processing when interfacing with the REAPER API (REAPER by contract should provide UTF-8 encoded paths, if not it's a bug in REAPER)
  • Removed CSI MST import
  • Internal change: Use Rust 1.79.0