Skip to content

Updating Controller Mappings

Be.ing edited this page Sep 19, 2017 · 17 revisions

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 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.

Mixxx 2.0

Also see Getting Ready for Mixxx 1.12

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

Wet/dry is: [EffectRack1_EffectUnitX],mix (fourth knob in each section)

Activation

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

Clone this wiki locally