Software for Arduino that interfaces analogue inputs with Mixxx.

oloturia fe4a1b8a91 renamed 1 month ago
console 493d051bcf reordering 1 month ago
example configuration aa05eb2c80 Updated README 5 months ago
lib 4d3816496c minor fix 1 month ago
src fe4a1b8a91 renamed 1 month ago
test d2cd5c73cb using platformio 1 month ago
.gitignore d2cd5c73cb using platformio 1 month ago
LICENSE ddf6edd9dc Add LICENSE 1 year ago 9128b7256b put includes into library 2 months ago
platformio.ini fec1414694 tested mux, better debug output, 0 as effect in mux disables input 1 month ago

A simple project that transform an Arduino Leonardo (or similar boards based on ATmega32u4) in a mixing console for open source Mixxx DJ software. To compile, you'll need MIDIUSB and EncoderButton libraries. Both are downloadable from the official Arduino IDE's library manager.

After uploading the sketch and connecting the controls, you'll have to "train" Mixxx to recognize the various sliders and knobs: click "Learning Wizard" and then follow the instructions. Some of the commands aren't selectable from the interface, you'll need to use the drop down menu to select them (i.e. "scroll up/down the library"). An example configuration is in the folder of the same name. You have to copy the .xml into /home//.mixxx/controllers/ folder.

Be aware that the controller needs to be plugged in before starting Mixxx. If you enabled the debug, you have to open a serial console to start the device.

At the moment it supports these kinds of controls:

  • Analog controls (knobs, sliders) need to be connected to an analog input.
  • Rotary encoders, clk should be connected to an interrupt pin, dt to a digital input.
  • Buttons (also on top of rotary encoders) need to be connected to digital input.

Buttons feature single and long press. They could have also two states that toggle (i.e. start/stop, etc.). Analog controls have three "magnetic" positions: around 0, 1023 and middle (user defined) the reading has more stickyness (user definable). If you see that Mixxx's control is not in the middle when the potentiometer is at its half, alter the middle "magnetic" position. They have also a dead zone that filters small variations in the readings. If you see that the controls are oscillating, increase the dead zone.

There are two experimental improvements:

  • In the "console" folder there is a PCB made in Kicad, ready to be printed. Some of the footprints come from Digi-Key/digikey-kicad-library. The example configuration is trained on this PCB.
  • If you need more analog controls, there is a version that features a multiplexer. I've tested with three potentiometers and worked, I've not tested it yet for a full console anyway.

To compile:

  • Link the folder include into Arduino libraries folder (usually /libraries) with the name "Controllers"