-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
effect chain preset saving/loading, custom effect defaults, and parameter hiding/rearrangement #2618
Conversation
f3faedb
to
aa44159
Compare
Can you mark this |
06af565
to
690c3c5
Compare
Woohoo! This branch is now beyond feature parity with master. 🎉 🎉 It is ready for review and testing. I want to get this merged for 2.4. You can save and load custom effect chain presets. You can also save the state of an effect as a default snapshot so that any time you load that effect in the future, it will load with that state. This replaces the hacky toggling of effect parameters in the preferences for LV2 effects and it works for built-in effects too. DlgPrefLV2 has been removed. The chain presets as well as effects presets are stored as XML files in a new "effects" folder in the user settings folder. The old effects.xml file is still used and this branch reads old effects.xml files from master, 2.2, or 2.1. All these new features were implemented while a net of 2184 lines of code were removed. The GUI to access these new features is only a crude proof of concept right now. There is a new button which pops up a menu to save/load chain presets, hide/show parameters, and save default effect presets. I have only added it to Tango for now (when the effect units are expanded). The main thread parts of the effects system has been completely rewritten, so reviewing by looking at the diff on GitHub would be overwhelming. I suggest checking out this branch locally and exploring the code. I will add documentation soon. Further features I want to implement are letting the user rearrange the list of chain presets via the preferences. I want to add new ControlObjects to load stored chain presets so controllers can map scrolling through the list. Users could also set up loading an effect chain with a specific button by mapping a button to a position in the chain preset list and arranging the list in the preferences. I want to make chain presets able to be loaded as QuickEffects. When combined, these features will allow fully supporting the Mixer FX section on the NI Kontrol S4 Mk3: |
1784fc0
to
1407f53
Compare
1407f53
to
0c54c3c
Compare
I did some file reorganization. I think the new structure is well organized:
|
ed2d523
to
665320e
Compare
cc3fd70
to
f7d1327
Compare
Still no explanation has been made justifying why this hasn't been merged. |
NOTE FOR TESTERS: The new GUI widgets have only been added to Tango so far.
This PR is a continuation of @kshitij98's GSOC project from 2018 (#1705) to implement effect chain preset saving/loading. Since Mixxx 2.1, Mixxx has saved and loaded the state of the effects units to/from an XML file on shutdown/startup. However, due to the overcomplicated architecture, this was tightly coupled to the initialization of the effects system. To repurpose this functionality for saving/loading XML presets while using Mixxx, the entire effects system in the main thread (
src/effects
) had to be rewritten first. There are minimal changes to the DSP code in the audio thread; the only change to that is removing the useless EffectRack layer.This branch adds several new features:
effects/chains
subfolder.effects/defaults
subfolder of the user settings folder.res/effects
. I have designed these so they are useful when loaded into the QuickEffects units which are only controlled by the superknob. If you come up with cool presets, please share! :)load_effect
ControlObject for effects that loads an index in the list defined by the user in the preferences.res/effects
. It is not added to the list of chain presets for the regular effects units. The chain preset autogenerated from the Filter effect is the default.next_chain
/prev_chain
andchain_selector
ControlObjects for effect units cycle through the list of chain presets.load_preset
andloaded_preset
ControlObjects for effect units. These use an index in the list of chain presets defined by the user in the preferences. This allows controllers to be mapped to loading chain presets without coupling the chain preset with that particular controller; the user can choose which presets to use with the controller by arranging the list in the preferences. This is designed to be used with the Mixer FX buttons on third generation Traktor controllers (Kontrol S2 Mk3, Kontrol S4 Mk3, Kontrol S3). It could also be used with the Color FX buttons on the Pioneer DDJ-SX3, DDJ-1000, and DDJ-800.To do:
res
folder