Custom Built Arduinobased Midi DJ Controller

21 April 2014

Seit meinen ersten Experimenten mit Arduino und MIDI wollte ich einen DJ Controller für NI Traktor bauen. Ursprünglich wollte ich einen Traktor S4, da ich mir damals allerdings nicht leisten wollte, da ich dachte, ich könnte etwas gleichwertiges selbst bauen. Nach einigen Nachforschungen stieß ich auf HIDuino (Eine alternative Firmware für den Arduino USB Serial Chip). Ich kaufte einen billigen MIDI Controller von eBay und begann mir dazu eine kleine Box mit zusätzlichen Knöpfen und Reglern zu bauen, um Funktionen zu verwenden die auf dem Controller nicht verfügbar waren.

 

 
Ich entwarf ein simples Mapping und das Setup funktionierte ganz gut, allerdings wollte ich es bald kompakter machen. Und so begann das Design des Custom MIDI DJ Controllers.

Der Controller besteht aus einem hölzernen Chassis mit einer Laser-geschnittenen Frontplatte. Die Platte ist mir 4 Schrauben befestigt (was eventuell zu überdenken ist...)

 

Gezeichnet habe ich die Platte in einem kostenlosen Programm namens DraftSight. Danach konnte ich das Design bei einer Firma in Schwechat (nahe Wien) lasern lassen. Zusätzliche Knöpfe und Fader bestellte ich auf RS Components, und viele Teile konnte ich auch aus dem eBay MIDI Controller ausbauen: 15 Potentiometer, 15 Buttons, 3 Encoder und die beiden Jogwheels

 

Zusätzlich verwendete ich 15 Omron Taster von RS, 10 Sanwa Arcarde Buttons von DJ TechTools und 2 Alps Encoder mit Taster.

Dann begann das Platinendesign. Alle Platinen sind selbst designed und selbst geätzt. Man sollte beachten dass cih damals 15 war und das mein erstes Platinenprojekt überhaupt war. Zum designen verwendete ich Fritzing für die meisten Boards (außer eines für das ich Eagle verwendete)

 

Um die Boards im Gehäuse zu befestigen experimentierte ich anfangs mit Holz. Das wurde jedoch nach einiger Zeit durch Stand-offs aus Aluminium ersetzt.
 

Es sind 8 IIC Portexpander und 3 8-Kanal Analogmultiplexer verbaut, für die LEDs wir später ein SPI LED Treiber verwendet werden (von MAXIM).

Da der Controller bereits in Verwendung war bevor er fertig gestellt wurde musste ich die Löcher für die Jogwheels einige Zeit mit Aufstrichdosendeckeln verschließen um die Elektronik zu schützen.
 

Die beiden Jogwheels sind direkt auf ihre optischen Encoder montiert. Ich entfernte die originale Achse der Wheels und ersetzte sie mit einer Acrylkonstruktion um sie anzubringen.

 

 
Alle 7 Encoder sind mittels einem Board mit 8 ATTiny13 Prozessoren angeschlossen. Diese dienen quasi als "Quadrratur Decoder". Das funktioniert so: 2 Pins der Tinys sind mit je einem Enncoder verbunden. Wenn der Tiny einen Encoderimpuls registriert setzt er, der Richtung entsprechend, einen seiner Outputpins auf HIGH. Der Hauptprozessor fragt dann inn der Hauptschleife alle Tiny Outputs up, registriert so den Impuls und sendet den MIDI Befehl, danach werden die Tinys mit einem Reset-Impuls zurückgesetzt. Um die ATTiny13 Chips zu programmieren und zu debuggen verwendete ich eine Chip clamp, ein sehr praktisches Tool. Der Code für die Tinys findet sich hier.

 

Der Kontroller ist for NI Traktor gemappt. Das Mapping inkludiert allerdingss noch keine Outputs, da die LEDs noch nicht mit dem MAXIM Driver verbunden sind. Für diesenn musss noch ein eigenes Board geätzt werden.

Einige Buttons fehlen noch, generell wurde das Projekt nie ganz fertiggestellt, sollte ich daran weiterarbeiten werde ich diese Seite aktualisieren.

Aber bis dahin sind hier einige Photos des aktuellen (funktionstüchtigen) Zustands:
 

 
Hier noch eine Schnelle Übersicht des Mappings: (ein bisschen inspiriert vom S4):

Deck Control Section (Play,Cue, Beatjump Encoder,Loop in/out, Loop Encoder, Sync, Hotques (Erster Knopf um zwischen Decks 1-4 und 5-8 zu wechseln))

Deck Section (Shift Button, Jogwheel, Tempo fader, Pitch +/-, Deck Selection (Aktuell nur um einige Effekte zu steuern))

FX Section (4 Buttons und 4 Pots wie die Effektmodule in Traktor, hier gibt es auch Spezialtricks um Effektkombinationen zu aktivieren (wie den "Sweep and Drama" Effekt von PushMoreButtons))

Und letztendlich die Mixer Section (Browser Verwendung, Gain/High/Mid/Low/Filter, Regler und Crossfader, Filter On/Off, FX Assign (3,4 mit Shift Verwendung), 2 Zusätzliche Buttons (noch nicht in Verwendung))