Skip to content

Ui Midi Controls And Names

Albert Santoni edited this page Jun 19, 2008 · 16 revisions

UI/MIDI Controls and Names

Each control inside Mixxx is identified by a unique string. These strings are used in the keyboard mappings, the MIDI mappings, and inside Mixxx to gain access to the controls. The following is a list of controls that can be used in any of the above contexts.

List of Controls

The default range is 0.0 to 1.0, unless otherwise noted.

[Master]

  • crossfader: min = -1.0, max = 1.0
  • samplerate

[ChannelN] (where N is a number 1 or 2)

  • play
  • cue_simple
  • volume
  • pregain
  • pfl
  • flanger
  • temporalShapeRate (?)
  • temporalPhaseRate (?)
  • wheel
  • scratch
  • beatsync
  • rate
  • rate_perm_down
  • rate_perm_up
  • rate_temp_down: off = 0.0, on = 1.0
  • rate_temp_up: off = 0.0, on = 1.0
  • back: off = 0.0, on = 1.0
  • fwd: off = 0.0, on = 1.0
  • filterLowKill
  • filterMidKill
  • filterHighKill
  • NextTrack
  • PrevTrack
  • playposition
  • LoadSelectedTrack - loads selected track from the playlist/tracktable.

[Playlist]

  • SelectNextTrack - scrolls to the next track in the playlist/tracktable.
  • SelectPrevTrack - scrolls to the previous track in the playlist/tracktable.

Note: This is an incomplete list. There are a ton of these controls mapped inside Mixxx.

The full list can be generated by running the following script in your mixxx/src directory:

======

#!/bin/sh
# set -x
IFS='
'
last_control=

for ck in `grep ConfigKey *.cpp | sed -e 's/ConfigKey(group/ConfigKey("[Master]"/g' | grep 'ConfigKey("' | grep -v "Channel2" | sed -e 's/.*ConfigKey(//g' -e 's/, */,/g' | cut -d\) -f1 | sed -e 's/\[Channel1\]/\[ChannelN\] (where N is a number 1 or 2)/g' | sort -fu`; do
  control=`echo $ck|cut -d\" -f2`
  if [ "$control" != "$last_control" ]; then
    echo
    echo $control
    last_control=$control
  fi
  key=`echo $ck|cut -d\" -f4`
  if [ ! -z "${key}" ]; then echo "* ${key}"; fi
done

Using Controls Inside Mixxx (for developers)

If you want to access one of these controls inside Mixxx, you can do so with something like this:

 ControlObjectThreadMain* controlRightPitch = new ControlObjectThreadMain(ControlObject::getControl(ConfigKey("[[Channel2]]", "rate")));

That line will give you a ControlObject which allows you to read and control the pitch of the right channel in Mixxx. For example, to increase the pitch of the track in the right channel, one could do something like this:

 float fRightPitch = controlRightPitch->get();
 controlRightPitch->slotSet(fRightPitch + 0.10);

This would increase the pitch of the right channel inside Mixxx, and the GUI controls would automatically reflect this change. Access to ControlObjects is also thread-safe when used this way.

Important note: Different types of ControlObject wrappers must be used depending on what thread your code is running in. This example assumes the code will run in the GUI (ie. main) thread. The ControlObjects wrappers should be used as follows:

  • ControlObjectThreadMain - GUI (main) thread
  • ControlObject - The audio callback thread (most audio processing happens here)
  • ControlObjectThread - Other threads
Clone this wiki locally