-
-
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
Add an effects framework. #180
Conversation
…ectJ_ParameterK. I feel like it's a lot cleaner. Updated the design doc as well.
…. I should have done this from the beginning, but didn't fully consider what presets would require, so I didn't.
…y, so all the effects framework code is built by default.
… manage their own enabled or mix parameters.
…rying desperately to avoid having to write a Factory class for every effect.
… for managing the iteration order of EffectChains.
… Now the up/down cycle-through-EffectChain buttons work!
…ffects available from backends and instantiating them without having to touch a backend. Move the Flanger creation out of MixxxApp and into EffectsManager::setupDefaultChains()
…lotParameter/EffectParameter. Also convert values that are going into the control system to be scaled by 127. Ugh.
…hen this branch merges.
… these changes when the branch merges in favor of Jus's official skins.
…ve all manual scaling by 127.
…elism of EffectChain/EffectChainSlot Effect/EffectSlot
Conflicts: mixxx/build/features.py mixxx/src/basetrackplayer.cpp mixxx/src/defs.h mixxx/src/dlgprefmidibindings.cpp mixxx/src/engine/enginedeck.cpp mixxx/src/engine/enginedeck.h mixxx/src/engine/enginemaster.cpp mixxx/src/engine/enginemaster.h mixxx/src/main.cpp mixxx/src/mixxx.cpp mixxx/src/mixxx.h mixxx/src/skin/legacyskinparser.cpp mixxx/src/skin/legacyskinparser.h mixxx/src/skin/skinloader.cpp mixxx/src/skin/skinloader.h
… to control this state.
…the engine. Fixes a bug with clearing chains and removes duplicated code in EffectRack.
First of all: Because we are running out of time, we can go with marking them experimental and candidates for removal in 1.13. Or can we go with ControlLinPotmeter in 1.12 only, IMHO that would be better ? Here my comments:
This is a nice feature, but I prefer to set CO members, and not independednt COs. This schould be possible, because Min and Max are not intended to be changable life.
Yes. This is very required and a good solution for this a great benefit for Mixxx. I have tryed to ouline one below-
I do not understand. Mixxx has currently a lot of parameters, but that was never identified as an issue.
I am not sure if we need all them. Ideal we schould stick to the establiched control types. See my proposal below.
We have already a solution for this: Parameter / MidiParameter
I think this is not true with our current COs. So we should try to keep this way doing it.
I Also do not like it.
String control should be handled allways separate.
We should really have a clue how to map buttons and rotaries, in an easy way. Even if move it to scripts, we have not outlined a solution yet. IMHO, my sepearted Buttons and Knob list (namespace) is not that bad. This would also make some parts of my solution below a lot more easy. What will be an alternative? How will a skript solution look like? Proposal: Current tree
New:
Features:
Requirements:
Replacements:
|
As I mentioned, it's not currently possible to do a parameterized set from MIDI script. |
Not sure what "this" refers to? How would a script address a bool or enum parameter that is represented by a ControlPotmeter? First off, since it can only touch the raw value, it must inspect the max and min value to determine what are valid ranges. |
Sure, that works. Though when the parameter is acting like a potmeter, it is expected by keyboard mappers and script authors that the standard potmeter auxiliary controls are in place. |
Right, but this feature makes them editable live. I do indeed mean that users will be able to change these live.. otherwise how will you know how it sounds? I sure can't hear the difference between 0.99 and 0.91 when I'm writing these effect manifests. I try it out and pick what sounds good. |
Forget I said anything. I don't want this PR to last another year :P. |
This is definitely in line with needs to happen for Control 2.0. I think the behavior approach we have now is the right one. There should be one control class (simply call it "Control") and simply change the behavior. To prevent memory allocation get rid of the polymorphism of ControlBehavior and switch to a TYPE approach. To change the control, simply atomically swap its behavior class. |
I appreciate your comments @daschuer but we are getting far beyond the point of diminishing returns here. It's clear the control system as written does not support this (it's not even "intended" behavior to change the range of a potmeter live). While we should definitely improve it so that it can, that's not going to happen for 1.12.0 so this discussion is moot. I agree this is a janky hack, but if we don't include it then MIDI scripts become somewhat useless in Mixxx 1.12.0 for effects. I'll go ahead and mark these controls as experimental. We could even prefix them with v1_ or legacy_. I'm also going to merge this now. We can continue the discussion but it's high time we start moving forward with 1.12.0. |
Ah I see, we have only setValue() mixxx/src/controllers/controllerengine.h Line 87 in 831a145
But if we introduce setParameter() whole Mixxx has the benefit. |
The same as above, lets introduce a API for this. |
If an effect requires live changes of a Min and Max value, than it is better to introduce a new Effect parameter for this. This way the Min/Max feature has a slick integration like all other parameter. |
Improve download page
This change introduces the basic infrastructure for an effects framework with multiple effects backends.
Design document: http://mixxx.org/wiki/doku.php/effects_framework
This also includes a native effects backend with simple implementations of:
This branch is stable and at the point where the remaining issues can be considered bugs. There are still a few more things I'd like to do before merge but in the interest of releasing a 1.12.0 beta I'd like to merge soon.
To test, use the 1.12.0 Deere skin: https://github.com/mixxxdj/developer_skins/tree/master/DeereSkeleton4Deck1280x800-WXGA
Remaining changes for Effects 1.0: