effect chain preset saving/loading, custom effect defaults, and parameter hiding/rearrangement#2618
effect chain preset saving/loading, custom effect defaults, and parameter hiding/rearrangement#2618Be-ing wants to merge 552 commits intomixxxdj:mainfrom
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
2116072 to
7dc939d
Compare
|
Woohoo, you can now load chain presets for the QuickEffects. I have included two default effect chain presets that are installed with Mixxx. If the I made a new WEffectChainPresetSelector widget as a QComboBox subclass to make this feature available in skins. I was going to stick with configuring this in DlgPrefEQ, but then I saw that Traktor has a combobox in the main window for this and realized that is a better idea to make the feature more discoverable and accessible. Currently I have only added the new widget to Tango as an ugly proof-of-concept. @ronso0, could you test this and give some feedback on the design and/or send me a pull request to improve it? The new section in DlgPrefEffects could use some design work too. Next I plan to reimplement I am aware the EffectsManager class has grown enormous. I will split it up. |
|
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/chainssubfolder.effects/defaultssubfolder 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_effectControlObject 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_chainandchain_selectorControlObjects for effect units cycle through the list of chain presets.load_presetandloaded_presetControlObjects 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:
resfolder