User Tools

Site Tools


This page has information for updating old controller mappings for the latest version of Mixxx.

Mixxx 2.1

  • engine.setParameter() now works with engine.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 of this 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 Effects framework for details.
  • Components JS library was introduced to make writing JavaScript mappings easier. It provides an 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.

Mixxx 2.0

Sync Buttons

(Groups stay as [ChannelX])

Name goes from beatsync to sync_enabled. Devs should test push-and-hold for enabling master sync.

Filter Knob

If the controller has a dedicated “filter knob”, it should be set to: [QuickEffectRack1_[ChannelX]],super1

Button LEDs

Update these to ensure GUI sync with the different Cue modes in the preferences.

(Groups stay as [ChannelX])

Name goes from:

  • cue_default to cue_indicator
  • play to play_indicator

Filter Control Objects

Group goes from [ChannelX] to [EqualizerRack1_[ChannelX]_Effect1]

Name goes from:

  • filterLow to parameter1
  • filterMid to parameter2
  • filterHigh to parameter3
  • filterLowKill to button_parameter1
  • filterMidKill to button_parameter2
  • filterHighKill to button_parameter3

Effects Control Objects

(These replace [Flanger] group controls.)

Full list is on the effects framework page.

The VCI400 has two effects sections, so I did the following:

Parameter adjustment

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

Change effect

Changing which effect is loaded in a section: [EffectRack1_EffectUnitX],next_chain

Translations of this page:
updating_controller_mappings.txt · Last modified: 2017/09/19 01:30 by