11. Advanced Topics

11.1. Adding support for your MIDI/HID Controller

11.1.1. MIDI Scripting

In order to support the advanced features of many MIDI / HID controllers, Mixxx offers what we call MIDI Scripting.

It enables MIDI controls to be mapped to QtScript (aka Javascript/EMCAScript) functions stored in function library files, freeing Mixxx from a one-to-one MIDI mapping ideology. These user-created functions can then do anything desired with the MIDI event info such as have a single controller button simultaneously affect two or more Mixxx properties (“controls”,) adjust incoming control values to work better with Mixxx (scratching,) display a complex LED sequence, or even send messages to text displays on the controller.

For more information, go to http://mixxx.org/wiki/doku.php/midi_scripting .

11.1.2. Controller Wizard

Mixxx Controller Wizard -  Mapping a control

Mixxx Controller Wizard - Mapping a control

Todo

Add intro and proofread

  1. Connect your controller(s) to your computer

  2. Start Mixxx

  3. Go to Preferences ‣ Controllers

  4. Select your device from the list of available devices on the left, and the right pane will change

  5. Activate the Enabled checkbox

  6. Click on Learning Wizard to open the selection dialog

  7. Click any control in the Mixxx GUI

  8. Alternatively, click the Choose Control button and choose one from the selection list

  9. Move a control on your controller to map it. Repeat this as many times as you wish.

  10. When you are finished mapping controls, click Done

The Controller Wizard works only for MIDI devices. Currently you can’t map modifier (shift) keys and platter rotations. Use MIDI Scripting instead.

11.2. Making a Custom Keyboard Mapping

The default keyboard mappings are defined in a text file which can be found at the following location:

  • Linux: /usr/local/share/mixxx/keyboard/en_US.kbd.cfg

  • Mac OS X: /Applications/Mixxx.app/Contents/Resources/keyboard/en_US.kbd.cfg

  • Windows: <Mixxx installation directory>\keyboard\en_US.kbd.cfg

Depending on your systems language settings, Mixxx might use a different file as default, e.g. de_DE.kbd.cfg for German or es_ES.kbd.cfg for Spanish.

There are two ways to customize the default Mixxx keyboard mapping:

  1. Edit your system’s default mapping file directly, e.g. en_US.kbd.cfg.

  2. Copy the default mapping file to the following location:

  • Linux: ~/.mixxx/Custom.kbd.cfg

  • Mac OS X: ~/Library/ApplicationSupport/Mixxx/Custom.kbd.cfg

  • Windows: %USERPROFILE%\Local Settings\Application Data\Mixxx\Custom.kbd.cfg

Then edit this file and save the changes. On the next startup, Mixxx will check if Custom.kbd.cfg is present and load that file instead of the default mapping file. This has the advantage, that you can always revert back to the default mapping, just by deleting Custom.kbd.cfg.

For a list of controls that can be used in a keyboard mapping, see http://www.mixxx.org/wiki/doku.php/mixxxcontrols.

You can download and share custom keyboard mappings in the Mixxx User customizations forums.

11.3. Additional Effects via external Mixer Mode

Mixxx does not have an effects engine yet (work on one is in progress). To hold you over you can use some external tools. Using the external mixer mode you route each deck directly to 3rd party effect hosts.

The following examples are only intended to encourage experimentation, they are no definitive guidance.

11.3.1. Effects via AU Lab on Mac OS X

The Au Lab routing for external effects

The Au Lab routing for external effects on Mac OS X

On Mac OS X there is a pretty simple and free way to give Mixxx access to the collection of AU/VST/MAS plugins that are installed on your system.

  • Install the free Soundflower, a system extension for inter-application audio routing.

  • Download AU Lab.app standalone from Apple (you will need an free Apple Developer Login though), go to the Downloads for Developers page and search for “AU Lab” to get it.

In Mixxx

  • Go to Preferences ‣ Sound Hardware‣ Output

  • Select for Deck 1 the Soundflower 16 device with Channel 1-2

  • Select for Deck 2 the Soundflower 16 device with Channel 3-4

  • Click the Apply button

In AU Lab

  • Click on the + button to create a new configuration

  • Add 2 stereo inputs tracks in the Audio Input Tab

  • Add 2 stereo output tracks in the Audio Output Tab

  • Click OK

  • Change the audio input device to Soundflower 16

  • Changethe audio output device for example to Built-in Output

  • Click Create document

  • In the Output 1 channel, select an effect from the drop-down menu, for example Apple > AUCompressor

The effect should now react if you play a track in Mixxx.

11.3.2. Effects via JACK Rack on GNU/Linux

The Jack routing for external effects

The Jack routing for external effects on GNU/Linux

Use Jack to route each deck directly through JACK Rack effect racks, or for more control you can use Ardour (or other DAW) using sends for effects. This gives Mixxx access to the extensive collection of LADSPA plugins.

Make sure the correct multichannel sound card has been selected in Jack (Jack settings visible bottom left). Note that Mixxx possibly labels its Jack ports as “Portaudio”.

11.4. Deleting Your Library

The library file is stored in the following places depending on your operating system:

Windows

The Mixxx library is stored in the %USERPROFILE%\Local Settings\Application Data\Mixxx\ folder. To delete your library on Windows, delete the mixxxdb.sqlite file in this folder.

Mac OS X

The Mixxx library is stored in the Library/Application Support/Mixxx folder in your home directory. To delete your library on Mac OS X type the following command into a terminal:

rm ~/Library/Application\ Support/Mixxx/mixxxdb.sqlite
GNU/Linux

The Mixxx library is stored in the .mixxx folder in your home directory. To delete your library on GNU/Linux type the following command into a terminal:

rm ~/.mixxx/mixxxdb.sqlite

Warning

Deleting your library will lose all of your metadata. This includes saved hotcues, loops, comments, ratings, and other library related metadata. Only delete your library if you are fine with losing these.