-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Updating Controller Mappings
This page has information for updating old controller mappings for the latest version of Mixxx.
-
engine.setParameter()
now works withengine.softTakeover()
. If your script implemented its own soft takeover mechanism to get around that bug, change it to use Mixxx's soft takeover solution instead. - MIDI input handling functions are now called with the appropriate
this
object (instead ofthis
being set to the global object), allowing script files to be written with a more object oriented organization. - Metaknobs, which act like superknobs for each effect within a chain, were introduced. Also, a new framework for focusing individual effects within a chain was introduced. Focusing an effect does not do anything by itself; it is up to controller mappings to do something different depending on the focused effect. The show_focus ControlObject of an EffectUnit needs to be set to 1 for the focus to be shown in skins. Refer to Mixxxcontrols#Effects framework for details.
- Components JS library was introduced to make writing JavaScript mappings easier. It provides an Components JS#EffectUnit object that makes it easy to map the new effects interface to the common layout of 4 knobs (or 3 knobs + 1 encoder) + 4 buttons for controlling effects
- New MixxxControls for looping and beatjumping were introduced. If your mapping has buttons mapped to fixed loop sizes, update it to use beatloop_activate and beatlooproll_activate. Replace reloop_exit with reloop_toggle, and add a mapping for the new reloop_andstop Control. Replace loop_move_X_forward/backward with beatjumping, which now acts to move the loop if there is a loop enabled.
- TODO: document new library navigation interface
- A new [ChannelX], track_loaded ControlObject was added. If your script previously used track_samples to detect if a track was loaded, switch to the more readable track_loaded.
-
<key>
elements in XML that are bound to script functions can now be any JavaScript expression that evaluates to a function in the global context. Just because you can embed a JavaScript function in the XML file does not mean you should though.
Also see Getting Ready for Mixxx 1.12
(Groups stay as [ChannelX]
)
Name goes from beatsync
to sync_enabled
. Devs should test
push-and-hold for enabling master sync.
If the controller has a dedicated "filter knob", it should be set to:
[QuickEffectRack1_[ChannelX]],super1
Update these to ensure GUI sync with the different Cue modes in the preferences.
(Groups stay as [ChannelX]
)
Name goes from:
-
cue_default
tocue_indicator
-
play
toplay_indicator
Group goes from [ChannelX]
to [EqualizerRack1_[ChannelX]_Effect1]
Name goes from:
-
filterLow
toparameter1
-
filterMid
toparameter2
-
filterHigh
toparameter3
-
filterLowKill
tobutton_parameter1
-
filterMidKill
tobutton_parameter2
-
filterHighKill
tobutton_parameter3
(These replace [Flanger]
group controls.)
Full list is on the effects framework page.
The VCI400 has two effects sections, so I did the following:
Individual knobs adjust parameters for that effect unit:
[EffectRack1_EffectUnitX_Effect1],parameterY
. Where X is 1 or 2 (the
two effects sections), and Y is 1,2,3 (the three knobs).
If your controller has only one "parameter" knob, you can map it to
[EffectRack1_EffectUnitX],super1
which will modify a number of effect
parameters at once. (Sean did this for the ADJ VMS4.)
Wet/dry is: [EffectRack1_EffectUnitX],mix
(fourth knob in each
section)
Per-channel buttons to activate a FX unit on that channel:
[EffectRack1_EffectUnitX],group_[ChannelY]_enable
Changing which effect is loaded in a section:
[EffectRack1_EffectUnitX],next_chain
Mixxx is a free and open-source DJ software.
Manual
Hardware Compatibility
Reporting Bugs
Getting Involved
Contribution Guidelines
Coding Guidelines
Using Git
Developer Guide
Creating Skins
Contributing Mappings
Mixxx Controls
MIDI Scripting
Components JS
HID Scripting