Releases: MaddyGuthridge/Universal-Controller-Script
v1.2.2 - Fixes for FL Studio 2024.1
✏️ Changed✏️
- Update all try-except blocks associated with calls to the FL Studio Python API to also catch
RuntimeError
exceptions, so that the script remains stable for FL Studio 2024.1
v1.2.1 - Bug Fixes and Documentation Improvements
🔧 Fixed 🔧
- Fixed an issue where Akai MPK Mini Mk3 devices sometimes weren't recognised
📔 Documentation 📔
- Update plugins contributions documentation by @AJRubenstein in #97
🎉 New Contributors 🎉
- @AJRubenstein made their first contribution in #97
v1.2.0 - More Device Support and Other Improvements
✨ New ✨
Device support
- Akai MPK Mini Mk3
- Novation SL Mk3 (many more features since 1.1.2)
Plugin Support
- Klevgrand DAW Cassette
Other features
-
Activity Switcher: quickly jump between recent windows and plugins within FL Studio
- Novation SL Mk3: press the "Grid" button
- Novation Launchkey Mk3: Press the "Device select" button
- Novation Launchkey Mini Mk3: Double-press the play button
-
Support for forwarding MIDI CC events to allow MIDI learn in plugins such as Kontakt
-
Improved playlist navigation and pattern selection
✏️ Changed ✏️
- The mixer track mappings now respect the docking side, so it's now possible to automatically link with mixer tracks that were docked to the left or right
- When endless encoders are assigned to mixer track volumes, they are given access to the full range of volumes (0-125%)
- Pressing the control switch button on the mixer now shows the selection highlight, so it's less annoying when you forget where it is
- Manual control assignments now work for the master fader
- You can now jump through playlist markers by quickly tapping fast-forward/rewind
- A more detailed error message is given if a device cannot be recognised
- The upper clip launch button on the M-Audio Hammer 88 Pro now works as a ControlSwitch button
- The scroll multiplier in the step sequencer is now 8 instead of 4
🔧 Fixed 🔧
- Fixed a crash when updating the active plugin is paused
- Fixed pause active button on Launchkey Mk3 49/61/88 devices
- Fix a bug where misleading error messages were given when a device fails to initialise
- Fixed a crash when mixer volumes were over 100%
- Novation Launchkey Mk3 25 and 37 models had non-functional click, quantise and undo buttons
⚙️ Technical changes ⚙️
- Refactored the
ShiftMatcher
code to support multiple pages, which should make toggling between different views on smaller controllers more reliable - Add color preset definitions to ensure that colors are more consistent between plugins
- Use
__slots__
forColor
objects to improve efficiency - Update
fl_param_checker
to have better instructions - Add support for a
TruePattern
event pattern which matches everything - Add support for short presses and long presses with buttons
- Increased strictness of Mypy to help keep things more bug-free
- Update various project dependencies
v1.1.2 - Minor Bug Fixes
🔧 Fixed 🔧
- Fix an issue where incorrect values for manual control assignments were sometimes used, leading to crashes and other nasty things
v1.1.1 - Bug Fix
🔧 Fixed 🔧
- Fixed an issue where Launchkey Mk3 and Mk3 Mini devices weren't initialized correctly
v1.1 - Enahnced Plugin Support and Major Improvements
✨ New ✨
🌶️ Features 🌶️
- Added support for manual mapping to controls - the script now allows you to link fader, knob, encoder and modulation controls to FL Studio, and can give devices detailed info on these links.
- Added support for preset navigation on most FL Studio plugins.
🔌 Plugins 🔌
Mappings have been added for:
- FL Studio Playlist and Piano Roll - support for tool selection.
- Fruity Slicer and Slicex.
- Spitfire Audio Originals - Epic Choir.
- XFER OTT.
- XFER Serum (apparently the mappings for this are illogical, but I haven't tested it myself).
If you want to see a plugin supported, let me know and we can get it added to the script!
✏️ Changed ✏️
- Refactored FPC and Spitfire Audio plugins to support more arrangements of drum pads.
- Changed the color representation in the Channel Rack step sequencer to make it more readable on most devices.
🔧 Fixed 🔧
- Fixed a bug where devices wouldn't always get the most logical bindings for parameters - fallback control types are now checked in order.
- Fixed some instances of inaccurate colors in Launchkey devices.
⚙️ Technical Changes ⚙️
- Added a
DrumPadStrategy
mapping which allows plugins to bind to drum pad matrices, abstracting away differences in layout. - Added a
basicPluginBuilder
which allows for the creation of extremely simple plugins which can map parameters. - Added support for fl_param_checker which can be used to determine indexes for plugin parameters with relative ease.
- Plugins can now modify the underlying MIDI event if required.
- Added a
ToolSelector
control surface which is used to choose tools within FL Studio windows. - Added support for different representations of control surface values including
value_midi
andvalue_rec
. - Added a new
connected
property forControlShadow
objects, which controls whether they will update or not. - Removed support for transparent plugins, as they were confusing to work with, and their functionality can be entirely accomplished using the
connected
property. - Added debugger support to
DeviceShadow
objects, which makes it easy to see how events are being mapped and handled. - Renamed
final_special_plugins
tosuper_special_plugins
as "final" wasn't a clear description for how they behave. - Updated all project dependencies.
v1.0.2 - Minor Fixes
🔧 Fixes 🔧
- Sustain pedal events weren't recognized on Novation Launchkey and SL devices
v1.0.1 - Bug Fixes
v1.0 - First Major Release
This is the first major release of the script, providing a multitude of new features, as well as a massive tidy-up of existing features. The script is now in a stable state.
To install, refer to the setup instructions.
✨ New ✨
Devices
Added support for the following devices
-
Novation Launchkey Mk3
-
Novation Launchkey Mk3 Mini
-
Korg NanoKontrol
-
Novation SL Mk3 (somewhat)
Plugins
Added support for the following plugins
-
Harmless
-
Transistor Bass
Other Features
-
Clear error messages are given when the script crashes due to poor
configuration. -
A better way to manage the script's settings has been added.
-
Support has been added for ModX and ModY controls.
-
Support for relative-value events, such as those from encoders.
-
Support for grayscale colors.
-
More navigation buttons are supported.
-
Thorough documentation has been written.
✏️ Changed ✏️
Mixer
- Improved handling of mute, solo, select, and arm buttons.
Channel Rack
-
Support for mute and solo of channels.
-
Support for step sequencer.
Playlist
- Support for mute and solo of tracks.
🔧 Fixed 🔧
-
Improved active plugin tracking.
-
Device ID mapping now works correctly.
-
Device LEDs now turn off properly when switching to an unsupported plugin.
-
Mixer colours are now updated properly.
-
Fixed crash when using a pedal on a sampler channel.
⚙️ Technical Changes ⚙️
-
The entire project was refactored.
-
There are more thorough tests to ensure that the quality of the script is
maintained. These will be expanded even further in the future. -
Color, annotation and value management is now done with manager attributes,
so that multiple inheritance isn't required to show these properties. -
Control generators have all been converted to control matchers, since they
basically did the same thing anyway. -
Colors are now only applied at the end of each tick in order to prevent
flickering. -
By default, no exception is raised when a control fails to bind.
-
Added pipeline-style functions for applying properties to controls, even as
a group, or when controls didn't bind correctly (the properties are applied
to a dummy control). -
Plugins can bind a tick callback function rather than having everything be
ticked manually. -
More matchers are included: the
IndexedMatcher
and the
ShiftedMatcher
. -
Added
AbstractMethodError
which is raised to indicate to contributors that
a method should be implemented.
v0.5.2 - Add a workaround to a crash in FL Studio
✨ NEW ✨
- The profiler now has an option to print the rough execution path of the program which is helpful for finding FL Studio crashes like the one I added a workaround for below.
🛠️ FIXED 🛠️
- When switching to an effect plugin, there's now a 3 tick delay before it is activated, since sometimes closing a generator plugin causes FL to think that an effect plugin is open which causes a full on FL Studio crash if the script tries to do anything with that plugin.