DIY USB DJ Controller

16 Schritt:Schritt 1: Case Construction - Front Panel / Schneiden der Rechtssache Schritt 2: Hardware Schritt 3: Hardware - Launchpad-Konfiguration Schritt 4: Hardware - Bauen Sie den Schirmstecker Schritt 5: Hardware - Bauen Sie die Tastatur Platine und Stecker Schritt 6: Hardware - Bauen Sie die Taste / Slider / Knob Boards Schritt 7: Firmware Schritt 8: Firmware - Secondary Mikrocontroller Schritt 9: Firmware - Primär Mikrocontroller Schritt 10: Hardware - Erstellen Sie das Main Board Schritt 11: Case Construction Schritt 12: Software Schritt 13: Software - Virtuelle MIDI-Treiber Schritt 14: Software - Verarbeitungsprogramm Schritt 15: Software - DJing Programm Schritt 16: Finishing Up - Hinweise für die Zukunft

DIY USB DJ Controller

DIY USB DJ Controller


Viele Menschen sind immer in DJing in diesen Tagen, ob als Mittel der Selbstdarstellung oder ein Weg, um mehr Geld zu machen. Ich genieße DJing, weil es eine interessante, beteiligt, und interaktive Musik-Hörerlebnis, ob in Gesellschaft von Freunden oder während in privaten.
Hardware DJ Controller sind traditionell der nächste Schritt nach dem Aufstehen die Füße nass mit Hilfe eines Software-basierten DJ Controller. Und sie sind auch traditionell teuer. Ich bin nur ein Hobby-DJ und nicht wirklich wollen, eine Menge Geld auf mein erstes DJ Controller zu verbringen. Sie sind da draußen für rund € 100 USD, aber ich bin auch in DIY! Ich habe eine Leidenschaft für die Musik und Elektronik und wollte einen Weg, beides zu verbinden, so dass ich beschloss, eine benutzerdefinierte DJ-Controller mit kostengünstiger und schneller Aufbau im Auge zu bauen.
Der DJ-Controller ich in diesem Instructable konstruieren Sie mit nur ein Beispiel dafür, was man bauen konnte mit dem Code, Struktur und Prozess, die ich hier zeigen werden. Wenn Sie diese Idee übernehmen und ausbauen und polieren es war, könnten Sie am Ende mit einem wirklich schönen und / oder ganz anderen MIDI-Gerät. Meine Lieblings-Aspekt dieses Projekts ist es, wie offen ist und Änderungen vorbehalten. Das Endprodukt ist nur etwas, das analoge und digitale Eingänge annimmt und liefert eine einzigartige und einfache Methode, um sie in MIDI Ausgänge einzuschalten. Siehe den Abschnitt über das, was Ich mag zu "quasi-MIDI" später in diesem Einführung nennen. I modelliert mein Controller nach dem Numark Mixtrack II .
Meine konkrete DJ Controller nutzt eine frühe Revision des TI MSP430 Launchpad, einem Mikrocontroller Entwicklungsplattform für seinen niedrigen Preis (10 €) und Bastler folgenden bekannt. Der Microcontroller-Code meine Daten mit Energia geschrieben und kann übertragen, um mit wenig Aufwand Arduino, müssen andere Microcontroller, um den Code, um sie speziell portiert, das nicht zu hart sein würde. Eine bessere Mikrocontroller mit mehr Pins der Lage wäre, unterstützt mehrere Eingänge, etwas im Auge zu behalten, wenn Sie vorhaben, dieses Projekt anders bauen. Ich werde später in der Instructable umfassen eine umfangreiche Liste der benötigten Materialien, Fähigkeiten und Software.
Was ist ein DJ-Controller?
Seltsam, dass Sie fragen. Ein DJ Controller ist ein physikalisches Gerät, die Sie auf einem Computer, der mit einer Software-basierten Musik-Mischprogramm ausgestattet ist, zu verbinden. Ein Musik-Mischprogramm ermöglicht es einem DJ, Songs zu spielen und Effekte hinzufügen, "scratch" die Spur, Steuerung Audio Equalizer, Lautstärke, Play Loops und Samples, und am wichtigsten, mischen mehrere Songs zusammen, um nahtlos von einem Song zum anderen. Das alles geschieht Live und ist ziemlich beeindruckend, wenn der DJ ist gut ( Sehen Sie dieses Video ,. WARNUNG: Enthält explizite Sprache Sie ist mit mehreren DJ-Controller in diesem Video zu vier Spuren gleichzeitig mischen), manchmal ähnlich wie ein Instrument zu spielen! Der DJ-Controller gibt dem DJ eine physikalische Schnittstelle, um alle diese Maßnahmen schnell durchzuführen. Mit einer Maus und Tastatur, um schnell DJ limitierend wird nach einiger Zeit, wenn Sie eine Software-basierte DJ Controller für einige Zeit verwendet haben, wissen Sie, was ich meine.
Auf Hardware-Ebene, Entry-Level-DJ-Controller sind sehr einfache Geräte. Sie lesen eine Eingabe von einem Bündel von Sensoren (Tasten, Schieberegler, Knöpfe, usw.) und wandeln den Input in Steuernachrichten für die DJ-Software. Ein beliebtes Format für diese Meldungen ist MIDI, die ziemlich viel, was wir hier zu verwenden ist.
Allerdings ist dieses Projekt nicht vergleichbar mit High-End-professionellen Niveau DJ-Controller, die viel komplexer sind und andere Funktionen (Pre-Cueing, integrierte Soundkarten, etc). Dieses Projekt hat auch nicht Jogwheels (Ich weiß nicht wissen, wo, um die Teile zu bekommen, weiß ich nicht persönlich benutze sie, und sie würde dieses Projekt kosten viel mehr).
Geben Sie dieses Projekt
Dieses Projekt stellt eine relativ einfache und kostengünstige benutzerdefinierte Schnittstelle, die grundlegenden Aufgaben des DJing zu erreichen. Es macht Spaß,, kundengerecht, erweiterbar und ein Einstiegs-DJ-Controller für Hobby-DJs zu bauen! Überlegen Sie, wie cool es wäre, eine eigene, handgemachte DJ-Controller auf den Tisch Parteien auf, und wissen, dass es tatsächlich funktioniert!
Eigenschaften:
Low-Cost (ca. € 75 gesamt) Gestaltbar (vor allem mit einem 3D-Drucker;)) und Extensible Reconfigurable USB Connected (benötigt keine externe MIDI-Kabel / Konverter) Coole Laser cut Fall! Relativ einfach und leicht zu Kreuz-Plattform auf Windows, Mac und Linux zu machen (nicht getestet, aber mehr dazu später) kann mit vielen der beliebtesten professionellen DJ-Software-Programme (mehr dazu später) Die Art, wie ich es zu bauen, es verwendet werden, sind mehr als 80 möglichen Eingaben!
Wie viele und welche Kontrollen bedeutet das DJ Controller haben?
Dieser Controller hat einige Kontrollen auf sie. Da ich nur mit einem 20-Pin-Mikrocontroller, beschloss ich, zwei gleiche Mikrocontroller und auch eine zusätzliche 8-Kanal-Analog-zu-Digital-Wandler, um das Beste aus meinem kleinen MSP430G2553s bekommen. Meine Permutation dieser Controller verfügt über:
11 Knöpfe 3 Sliders 5 Tasten A Drehgeber w / integrierten Taste A 12-stellige Tastatur, die 3 verschiedenen Modi hat und kann entweder Deck (12 X 3 x 2 = 72 verschiedene Funktionen!) Das Deck Switch sendet auch Befehle wirken, so dass sie wählen Sie den aktiven Deck / PFL
Diese Kontrollen können so programmiert werden, zu tun, was Sie wollen! Meine Konfiguration wird später gezeigt, aber es ist im Grunde:
Knöpfe - Bass / Mitten / Höhen / FX 1 / FX 2 für jedes Deck und dann ein "Master etwas"
Sliders - Crossfader, Deck 1 Volume und Deck 2 Volume
Buttons - "!" Play / Pause und Sync für jedes Deck, und dann ein Taste (was immer du willst)
Drehgeber / Button - Wird verwendet, um Musik-Sammlung und wählen Songs durchsuchen
Keypad - Modus 1 ist für Schleifen, ist für Effekte Modus 2 ist für Proben Mode 3
Was dies Instructable deckt
In diesem Instructable, werde ich Sie ganz wenigen Elektronik Lektionen, vereinen wird, um das Endprodukt zu erstellen vorstellen! Eine grobe Liste einiger Dinge, die Sie lernen / Praxis durch den Bau dieses:
Verfahren zur raschen Entwerfen eines Projekts mit einem Mikrocontroller und serieller Kommunikation Mit Energia, eine integrierte Entwicklungsumgebung (IDE) für den TI Launchpad, und das Hochladen Code an einen Mikrocontroller verwenden Verarbeitung , eine Programmiersprache und IDE, die perfekt ist für die schnelle Einrichtung der seriellen Kommunikation mit einem Projekt wie diesem Anschluss und Interpretation digital (Tasten) und analogen (Dreh- und Schieberegler namens Potentiometer ) Eingangs Lesen eines 12-stellige Tastatur (nützlich bei anderen Projekten auch!) Leseeingang von einem Drehgeber Raw binäre serielle Kommunikation zwischen einem Computer und ein Mikrocontroller und zwischen zwei Mikrocontrollern Erstellen einer benutzerdefinierten Low-Datenkommunikationsprotokoll (starke Nutzung von bitweise Mathematik, gute Praxis für die digitale Logik Studien!) SPI-Kommunikation zwischen zwei ICs (nämlich eine MSP430G2553 und der MCP3008 Analog-Digital-Wandler) Bau von Schaltungen auf perfboard
Und möglicherweise noch mehr!
Bitte beachten Sie, dieses Projekt war sehr schwierig zu montieren, so dass nur versuchen, wenn Sie gut mit einem Lötkolben oder können es sich leisten, ein paar Fehler zu machen!
Übersicht Benötigte Materialien
Diese Liste wird je nachdem, wie Sie gezielt dieses Projekts zu ändern, aber es gibt einen allgemeinen Überblick von dem, was Sie erwarten sollten, benötigen. Bestimmte Listen von Teilen für jeden Schritt wird mit den folgenden Schritten enthalten sein. Links dienen zur Verfügung gestellt.
Für die Elektronik:
Drehpotentiometer (x11, 10 kOhm, lineare Verjüngung, variabler Widerstände) Knöpfe für Potentiometer (x11, ich habe 7 rote , 2 blaue und weiße 2 ) Schiebepotentiometer (Ich habe eine x-large und zwei mittel ) Tops für Schiebepotentiometer ( x3) ​​Tastenschalter (x5) Schalter (1x Zweiwege , 1x Dreiwege [aus alten Wecker sourced]) Eine 12-stellige Tastatur (x1) Drehgeber (x1) TI Launchpad oder vergleichbare Mikrocontroller-Entwicklungsplattform MSP430G2553 oder vergleichbare Mikrocontroller (zwei von ihnen, können Sie sie von TI als kostenlose Proben zu erhalten! Achten Sie auf die Verpackung als "PDIP" bestellen oder aber es wird nicht in Ihr Launchpad! passen) MCP3008 (x1), ein 10-bit, 8-Kanal-Analog-Digital-Wandler Viele 22ga Schaltdraht (solid core, nicht stranden!) Ein paar Protoboards zu zerschneiden und die Verwendung bestimmter female / male -Header (das Klebeband von Elektronik, abholen eine Menge auf ebay! ) Ein paar Widerstände (brauchen Sie nicht 500) Sie können LEDs im fertigen Projekt gesteckt, um es aussehen super cool, versuchen diese ( Video )
Für den Fall:
Sie haben Zugang zu einem Laserschneider muss mein Design zu verwenden. Für den oberen und unteren Platten haben wir 1/8 "Sperrholz und für die Seitenteile und Einlegearbeiten verwendeten wir 1/8" Plexiglas. Dies sollte in der Lage, an der Laser-Cut-Shop bezogen werden können. Sie müssen auch Sekundenkleber (ich empfehle sowohl Gel Kontrolle und Flüssigkeit Loctite). Sie können Plexiglas Kleber versuchen so es kommt klar, aber ich fand es war nicht stark genug.
Und das ist es!
Überblick über Tools / Benötigte Ausrüstung:
Einige Werkzeuge sind nicht völlig notwendig, aber sie machen die Konstruktion gehen viel schneller. Ich benutzte:
Zugang zu Laserschneider Verschiedene Handwerkzeuge (Spitzzange, Drahtschneider bündig, Rasierklingen, Schraubendreher, etc.) Drahtabisolierer Drehwerkzeug (IE: Dremel kann eine geeignete für € 20 oder weniger zu haben Mein Lieblingswerkzeug.! ) Lötkolben ( passende für 20 € ) Rosin Core-Electronics Solder Various löten supplies (Ablötgeflecht, Flussmittel, etc) Helping Hands (Ich habe meine Mitbewohner) Schleifpapier (600 / feine Körnung, 100 / grobe Körnung) Schutzbrille :)
Überblick über Fähigkeiten,
Ich werde versuchen, dieses Projekt so einfach wie möglich zu folgen, um zu machen, aber einige Dinge sollten Sie ein grundlegendes Verständnis umfassen müssen:
Löten Fähigkeiten ( Tutorial hier ) Kompilieren und Hochladen der Software auf Ihre speziellen Mikrocontroller-Plattform ( Tutorials für Energia kann hier gefunden werden , sollten Sie ein paar einfacher Projekte zuerst, wenn Sie nicht vertraut sind) Mit Hilfe eines Software-DJ-Programm, wie das, was ich in der Verwendung: Virtuelle DJ Programmierkenntnisse sind von Vorteil, da mein Code kann nicht direkt mit Ihrer Konfiguration arbeiten, das Verständnis der bitweise Mathematik
Was ist "Quasi-MIDI"?
Quasi-MIDI, wie Ich mag es nennen, ist etwas, was ich für dieses Projekt. Als ich zum ersten Mal wieder mit, wie die Hardware in die DJing-Software in der schnellste und einfachste Weg, zu verknüpfen, dachte ich sofort von MIDI. Fast jede größere DJing-Programm unterstützt, kann es für andere Projekte verwendet werden, und es ist ein ziemlich einfaches Protokoll in seinem eigenen Recht. Allerdings ist die archaische Stecker ist, dass es nicht mehr auf modernen Computern gefunden, und Sie müssen oft einen MIDI zum USB-Konverter, der zusätzliche Kosten und mögliche Unvereinbarkeit mit dem Projekt hinzufügt. MIDI-Geräte, die tatsächlich auf dem Industriestandard entsprechen erfordern auch eine zusätzliche Schaltung (Optokoppler usw. komplizierter!) Und gerade im Allgemeinen schwieriger zu schnell mit Prototypenfertigung. So kam ich auf die Idee, ein paar zwischengeschalteten Programme. Eine Übersicht, wie es funktioniert, ist dies:
1. Haupt Mikrocontroller empfängt Hardware-Eingang
2. Haupt Mikrocontroller sendet eine spezielle Nachricht an den Computer über ein USB serielle Verbindung
3. Host-Programm auf dem Computer geschrieben mit Verarbeitung lauscht auf diesem Port und die Nachricht empfängt
4. Das Verarbeitungsprogramm wandelt diese Nachricht in eine MIDI-Nachricht und sendet diese Meldung über eine virtuelle MIDI-Anschluss (dazu später mehr). Die virtuelle MIDI-Verbindung je nach Plattform, aber unter Windows Ich habe loopMIDI von Tobias Erichsen. Unter Mac und Linux diese Funktion eingebauter ...
5. Die DJing Programm erhält den MIDI-Nachricht über die virtuelle MIDI-Verbindung und eine bestimmte Funktion zu diesem MIDI-Nachricht abgebildet.
Ich werde mein Bestes tun, um auf die spezifischen Schritte in diesem Prozess später im Instructable beteiligt zu erarbeiten. Dies ist weit von robusten, aber es funktioniert, ohne dass zusätzliche Hardware, ein definitives Plus unter Berücksichtigung der ursprünglichen Ziele von meinem Projekt. Sie können diesen Datenfluss zu nehmen und ändern Sie es, jede MIDI-basierte Projekt, das Sie mit oben kommen zu passen! Möchten Sie Ihre eigenen kundenspezifischen digitalen MIDI-Drumset zu machen? Oder etwas noch seltsamer, wie , was Purity Ring verwendet ? Sie können ganz einfach tun, dass mit dieser Methode!
Credits:
Electronics and Code - Me! Fall-Entwurf, die meisten von der Konstruktion, und halten alles, während ich es gelötet - Mein Mitbewohner Eric Rocket Ship Logo - Mein Freund Philip DJ Demo - Mein Freund Kyle
Musik im Video:

. Merce ft Farisha - Regen-Stadt
Attak (Feat Danny Brown.) - Rustie Roller - Herr Carmack Machen Sie es Bun Dem - Skrillex Tell Me (feat. Was so nicht) - RL Grime Last Year - Borgore Sleepless - Flume
Ausrufe und Zeug
Ich möchte ein paar Ausrufe auf alle Richter, die Auswertung werden diese Instructable mehrere Wettbewerbe Ich möchte geben :) enthalten.
Formlabs Contest:
Machen Sie den Fall für ein Elektronik-Projekt ist immer der schwierigste Teil für mich. Wie wird alles zusammen? Wie werde ich die Kabel? Wie wird sich die Schnittstelle Look und fit mit der Elektronik? Das endgültige Projekt wollte nur ein breadboarded Schaltung auf einem Stück Pappe, aber meine Mitbewohner erzählte mir, er einen Laser geschnitten Fall entwerfen könnte also ging ich alle aus. Der schwierigste Teil war noch legt es in dem Fall, während es gleichzeitig gut aussehen. Ein Laser-Cutter kann nur erhalten Sie so weit ... 2 Abmessungen. Ein 3D-Drucker eröffnet eine ganz neue Ebene der Anpassung. Ich mag es Elektronik mit Musik zu tun, und sie sollten so gut, wie sie klingen zu suchen.
Mein Partner an diesem Projekt ist auch ein Architekt und könnte sich stark von einem 3D-Drucker zu profitieren. Seine Modelle würde das Leben von hoher Qualität aus einer Harz 3D-Drucker erhalten 3D-Drucke gebracht werden.
Ich bin auch in der Wiederherstellung Autos (insbesondere eine 1980 MGB im Moment) und ich denke, dass Ihre 3D-Drucker würde mir erlauben, hochwertige Reproduktion von Kunststoffteilen für Oldtimer, die sonst sehr teuer oder nicht verfügbar sind neu zu machen. Die Online-Community MGB Ich bin Auseinander würde auf jeden Fall von den Reproduktions Teile, die ich produzieren könnte profitieren. Ich könnte auch eine Menge coole Upgrades / Klammern und so für Autos.
Außerdem habe ich immer wollte CAD zu lernen, und ein 3D-Drucker würde mir etwas Motivation zu geben :)
Mikrocontroller Contest Gesponsert von Radioshack:
Dieses Projekt beinhaltet nicht nur einen Mikrocontroller, aber es hat zwei! Das Zweifache der erforderlichen Anzahl von Mikro! Ich möchte auch darauf hinweisen, dass ich eine unterrepräsentiert Mikrocontroller-Plattform (TI MSP430), vor allem wegen der niedrigen Anschaffungskosten und Vielseitigkeit. Dieses Projekt zeigt wirklich, wie Sie die begrenzte Stifte dieser Plattform, eine ganze Menge zu tun dehnen.
Es ist auch erwähnenswert, dass der Datenfluss in diesem Projekt verwendet kann jeder serielle fähigen Mikrocontroller, um die Gehirne von einem MIDI-Instrument, werden nicht nur MCUs mit in HID / USB-Hardware gebaut.
Tech Contest Gesponsert von littleBits:
Dieses Projekt und littleBits haben ein gemeinsames Ziel: Rapid Prototyping. Einfallsreichtum und die richtigen Werkzeuge gehen einen langen Weg bei der Arbeit hin zu einer funktionsfähigen Prototypen, wodurch die "quasi-MIDI" Methode, die ich kam mit. Ich habe auch versucht, um Leser zu Rapid Prototyping mit einer meiner Lieblings-Programmierwerkzeuge, Herstellung einzuführen.
Auch hier ist es erwähnenswert, dass der Datenfluss in diesem Projekt verwendet kann jeder serielle fähigen Mikrocontroller, um die Gehirne von einem MIDI-Instrument, werden nicht nur MCUs mit in HID / USB-Hardware gebaut.
Vielen Dank für Ihre Überlegungen!

Schritt 1: Case Construction - Front Panel / Schneiden der Rechtssache

  1. DIY USB DJ Controller

    DIY USB DJ Controller

    Wir werden durchgeführt, indem alle Gehäuseteile beginnen, damit wir wissen, was wir arbeiten. Ich war ursprünglich gerade dabei, dieses Zeug auf einem Karton zu montieren, aber meine Mitbewohner sind alle Architekten Majors an meiner Universität, so dass sie den Zugang zu einer Vielzahl von Herstellungswerkzeuge haben. One angeboten zu entwerfen und Laser-schneiden Sie ein Fall für sie, ich werde diese Designs anbieten, so dass Sie sie verwenden können. Dieser Teil geht davon aus, haben Sie Zugriff auf eine Art von Laser-Cutter haben (wer nicht?), Aber wenn Sie nicht können Sie versuchen, eine ähnliche Frontplatte / Gehäuse herzustellen.
    Ich werde nicht über die Stufen zum Laserschneiden zu gehen, weil es ist ziemlich subjektive je nachdem, wie Sie tatsächlich schneiden (ich weiß auch nicht, die Zauberei, CAD-Programme). Die Dateien sind für Download und Sie sollten in der Lage, sie in den meisten CAD-Programme zu öffnen.
    Wir haben zwei unterschiedliche Materialien für den Fall, Plexiglas und Sperrholz. Unsere Materialien wurden bei der Universität Shop gekauft, würde ich mir vorstellen, dass es wäre eine ähnliche Einrichtung für die meisten Menschen, die nicht persönlich besitzen ihre Laserschneid sein.
    Materialien:
    Blatt 1/8 "dickem Sperrholz Blatt 1/8" Thick Plexiglas Sekundenkleber (Loctite Gel Steuerung / Flüssig empfohlen) Schleifpapier (feine Körnung, 600 glaube ich) die Kontrollen Sie verwenden werden, um den Sitz zu überprüfen
    Schneiden Sie den Kasten
    Wir verwendeten das Sperrholz für die Basis und der Frontplatte des Gehäuses. Wir haben das Plexiglas für die Seiten (so dass jeder die kühlen Elektronik im Inneren zu sehen!), Zum Befüllen des negativen Raum der rocketship Logo auf der Front, und auch die Wahlplattform LEDs zu füllen.
    Wichtiger Hinweis: Einige meiner Teile sind wahrscheinlich anders (Tastatur, Schalter), so sollten Sie überprüfen und die Laser-Cut-Dateien, spezifische Teile passen zu bearbeiten. Ihren Abmessungen exakt messen oder finden sie in der Teiledatenblatt und ändern, was Sie benötigen. Sie müssen auch die Seiten zu überprüfen und sicherzustellen, dass alle Teile im Inneren passen. Ich habe versucht, der Fall so dünn wie möglich zu machen. Dies ist aus dem Anwendungsbereich dieser Instructable (nicht Sie hasse es, wenn Lehrbücher das tun?), Aber Sie finden hier ein geeignetes Programm, um die Dateien zu bearbeiten und die erforderlichen Änderungen vornehmen. Es sollte nicht zu schwer sein, sie sind nur Rechtecke. Die Schüler können von Autodesk AutoCAD kostenlos zu bekommen hier . Sie können auch in der Lage, die kostenlose Version von verwenden zu können Google Sketchup . Die Originaldateien wurden mit AutoCAD und Rhino3D gemacht.
    Holen Sie sich sowohl die Sperrholz und die Plexi-Dateien schneiden. Halten Sie alle Teile! Etwas von dem Material kann wie Junk aussehen, aber es kann später so nur die Stücke halten zusammen verwendet werden.
    Kleben Sie die Plexiglas-Inlays
    So, jetzt sollten Sie die Frontblende und die Plexi-Bits haben, beginnen wir setzen sie zusammen! Nehmen Sie die losen Plexiglas Stücke der Rakete Logo und legen Sie sie beiseite. Dann nehmen Sie die Frontplatte und legen Sie sie der Vorderseite nach unten. Dadurch wird die Plexi Teile bündig mit der Vorderseite, wenn wir fertig sind. Die Plexi logo Teile in die negativen Bereiche des Holz rocket ship logo sorgfältig Sekundenkleber und lassen Sie es für eine Weile trocknen. Ich schlage vor, mit Gel-Steuer Loctite, so dass es keine kleinen Lücken zu füllen. Sie können auch versuchen, mit Plexiglas-Kleber, so dass es herauskommt klar, aber ich fand, dass es nicht stark genug.
    Während der Leim trocknet, nehmen die kleinen Kreise plexi (Ich hoffe, Sie ihnen gehalten!) Und kleben sie in die Löcher neben dem Deck Wahlschalter, unter der große rechteckige Lücke für die Tastatur ist es.
    Sobald der Kleber trocken ist und es fühlt sich robust, sollten Sie mit einigen ziemlich unattraktiv Klebstoffreste verbleiben. Um dies loszuwerden, beschloss ich, nur frost die Plexi-Inlays mit Sandpapier. Dies hilft auch, um die LED-Leuchten diffundieren also ist es nicht so direkt und Retina-Brennen. Nehmen Sie sich die feinen Schleifpapier (ich glaube, wir verwendet, 600) und Sand hinunter beiden Seiten der Plexi-Einlagen, bis Sie mit dem Aussehen zufrieden sind Protip:. Sie können durch leichtes Schleifen mit derselben feine Körnung loszuwerden, die Brandflecken auf dem Holz zu bekommen Sandpapier.
    Bereiten Sie das Bedienfeld für die Kontrollen
    Dieser Schritt hängt von Ihrer Teile und Konfiguration, aber ich musste einige Änderungen an meinem Fall, um die Teile richtig fit zu machen.
    First off, wenn Sie mit den Potentiometern aus adafruit, die ich verbunden, um, werden Sie feststellen, gibt es einen kleinen Rastnoppen auf der Oberseite des dabei sind. Das war eine nette kleine Überraschung ... nicht! Es hilft mit Stabilität, aber wir müssen die Rückseite der Frontplatte infolge ändern. Sie können entweder: A.) Grind / Schneiden Sie den nub off oder B.) Grind / Schneiden Sie kleine Löcher in der Rückseite der Frontplatte, um die Noppen unterzubringen. Ich ging mit Option B, weil ich lieber nicht die Teile zu modifizieren. Um dies zu tun, habe ich ein Drehwerkzeug mit einem Schleif bisschen auf sie. Es spielt keine Rolle, wo das Loch ist, solange es ist der richtige Abstand von der Mitte Loch. Messen Sie diesen Abstand zweimal, markieren Sie es, und dann mahlen ein Loch. Tun Sie dies für alle 11 Potentiometer. Achten Sie darauf, den ganzen Weg durch zu gehen.
    Zweitens habe die Schalter nicht durch ihre Löcher passen und so mussten wir schleifen sie ein bisschen größer. Stellen Sie sicher, dass Sie den Sitz jeder so oft, es zu eng werden wollen, dass Sie zu prüfen.
    Drittens, die Tastatur ich hatte eine Montagehalterung, die wir nicht zu haben zu berücksichtigen. Wir mussten Flügel auf der Seite der Tastatur Loch geschnitten, damit es passen würde. Das wird anders sein, wenn Sie eine Tastatur aus einer Telefonzelle zu haben!
    Finishing Up
    Das sollte es sein! Wenn Sie mit der Passform und Verarbeitung der Teile und Panel zufrieden sind, fahren Sie auf, um die Hardware für dieses Projekt zu erstellen.

Schritt 2: Hardware

  1. DIY USB DJ Controller

    DIY USB DJ Controller

    Hinweis: Der Schaltplan für dieses Projekt wird in diesem Schritt vorgesehen ist. Ich habe ein Programm namens DipTrace , es zu machen. Es ist nicht das beste, aber es schema gibt Ihnen einen Überblick darüber, wie die Dinge verbinden.
    Überblick über Hardware
    Die Hardware des Projektes besteht aus ein paar verschiedene Boards miteinander verbunden, um gemeinsam alle Kontrollen zu ziehen. Das Launchpad selbst fungiert als USB-Host für die serielle Kommunikation. Um es so modular wie möglich zu gestalten, verwenden wir ein paar verschiedene Boards und Überschriften, um jedes Board anschließen. Dies ist, so dass Sie Teile herausnehmen (ohne Lötzinn) wenn Sie überhaupt, um sie in einem anderen Projekt wieder verwenden möchten. Es macht auch das Projekt einfacher, so zu zerlegen, dass Sie reparieren kann / ändern Sie es in der Zukunft. Wir bauen ein "Schild" Stecker für das Launchpad, die in die Pins des Launchpad-Stecker und verbindet sie mit der Hauptplatine. Die Hauptplatine Gastgeber die meisten der Potentiometer und zentral steuert sowie die sekundäre Mikrokontroller und der MCP3008 A / D-Wandler. Die Kontrollen nicht direkt mit der Hauptplatine verbunden sind, können ihre eigenen kleinen Platinen, die dann an die Hauptplatine angeschlossen haben. Die letzte Hilfsleiterplatte ist derjenige, der das Tastenfeld und die zugehörigen Komponenten hostet. Diese wird dann auf der Hauptplatine durch einen anderen Stecker werden wir mit Überschriften zu konstruieren verbunden.
    Jeder Schritt zur Hardware wird zeigen, wie die einzelnen Bord an diesem Projekt beteiligt zu bauen. Jeder Schritt wird auch die benötigten Teile des Boards enthalten. Stellen Sie sicher, dass Sie alle Teile auf der Hand, bevor Sie anfangen zu bauen! Am besten wäre es, die Schaltung an einem Prototyp Steckbrett . Auf diese Weise wissen Sie, es wird funktionieren, bevor Sie sie permanent zu machen! Außerdem lesen Sie bitte die Datenblätter für alle Komponenten (insbesondere die ICs), so dass Sie nichts Haken Sie nicht auf falsche und lassen Sie die Magie Rauch aus / Ursache Feuer. Diese Schaltung wird direkt an USB Port Ihres Computers und möglicherweise Schäden an Ihrem Computer / Komponenten, wenn es mit einem kurzen oder etwas misconncected. Ich bin nicht verantwortlich für Schäden!
    Denken Sie daran, dieses Projekt ist total kundengerecht. Sie können wählen, was Sie wollen, und steuert meine Datenfluss und kommen mit einer völlig anderen, aber ebenso vielseitige MIDI-basierte Instrument! Seien Sie kreativ! Allerdings werde ich nur zu decken, wie ich meine spezifische Konfiguration zu bauen. Ich werde versuchen, Informationen darüber, wie sie an bestimmten Punkten anzupassen sind.
    Benötigte Materialien:

    TI MSP430 Launchpad Development Board (x1)
    MSP430G2553 (x2) (Studenten: erhalten sie als kostenlose Proben von TI! Hinweis: das PDIP Verpackung!)

Schritt 3: Hardware - Launchpad-Konfiguration

  1. DIY USB DJ Controller

    DIY USB DJ Controller

    DIY USB DJ Controller

    Dieses Projekt erfordert eine gewisse Konfiguration Ihres Launchpad.
    Achten Sie darauf, nicht auf dem optionalen Quarzoszillator löten nicht! Wir müssen diese Pins als Eingänge nutzen zu können!
    Entfernen Sie die Brücken, die die LEDs an den Pins P1.0 und P1.6 zu verbinden.
    Für Launchpad Rev 1.4 und älter:
    Sie können feststellen, auf älteren Revisionen des TI Launchpad wie ich bin mit, Pin 3 markiert TXD (Senden von Daten) und Pin 4 wird RXD (Daten empfangen) markiert. Das Problem dabei ist, dass auf der MSP430G2553, diese Stifte geschaltet! Pin 3 fungiert eigentlich als RXD und Pin 4 Funktionen wie die TXD. Das bedeutet, dass, um für unsere Kreis einwandfrei funktioniert, müssen wir die Querdraht die Jumper in der rechten oberen Ecke der Platine, so dass der Stift auf der Platine beschriftet TXD an RXD angeschlossen und die RXD auf der Platine verbunden ist an die TXD. In diesem Schritt habe ich auch ausführlich, wie Sie ein Crossover-Brett zu bauen. Dies betrifft nur Launchpads Revision 1.4 und älter.
    Für Launchpad Version 1.5 und neuer:
    Beginnend mit Version 1.5, machten sie es so, dass Sie die mitgelieferten Steckbrücken verwenden können, um die UART auf dem MSP430G2553 zu ermöglichen. Diese Blog-Post hat einen Abschnitt, wie dies zu tun Details. Sie müssen die Steckbrücken seitlich drehen.
    Wie Sie das Crossover-Brett Körperbau:
    Materialien:
    Buchsenleisten (2 Stück, 1x2) Kleines Stück Lochrasterplatinen Schaltdraht

    Holen Sie sich ein kleines Stück Lochrasterplatinen, einige Buchsenleisten, und einige Schaltdraht. Verwenden Sie Ihre Drehwerkzeug abgeschnitten zwei 1X2 Abschnitte der Buchsenleiste. Löten Sie die Buchsenleisten auf der Leiterplatte, so dass sie die Stifte des TXD / RXD Header passen auf. Lötdrähte so dass die Anschlüsse gekreuzt und fertig! Für weitere Anweisung, mir die Bilder I enthalten. Sie können jetzt zuverlässig verwenden Sie den Hardware-UART auf der Haupt-Mikrocontroller, um mit dem Computer zu kommunizieren!

Schritt 4: Hardware - Bauen Sie den Schirmstecker

  1. DIY USB DJ Controller

    Der Schirm-Anschluss ermöglicht es uns, die Launchpad Bord leicht befestigen an der Rennstrecke, ohne dass es permanent. Es misst die Pins des Haupt Mikrocontroller auf der Hauptplatine, die alle Steuerelemente und Hilfs integrierten Schaltungen hostet.
    Materialien:
    Stiftleisten Schaltdraht (22 ga) In geeigneter großen Protoboard (für einen bei Radioshack oder suchen online)
    Erstellen Sie die Verpflegung:
    Um das Board zu bauen, brechen zwei Sätze von 10 Stiftleisten (meine zwei / drei Jahre alten Launchpad kam mit weiblichen und männlichen, so dass ich nur solche verwendet werden). Dann nehmen Sie die protoboard, schneiden Sie es mit dem Drehwerkzeug, um die Größe und löten Stiftleisten 10 auf jeder Seite, die angeordnet sind, um in das Launchpad die Buchsenleisten passen.
    Ich entschied mich, um Drähte zu löten, um die Stifte 17 werden wir Anschluss werden an die Hauptplatine an den Rand des Schildes in einer horizontalen Art und Weise holen. Das war sehr mühsam und nicht notwendig sein, sehr vorsichtig sein, wenn Sie dies tun! Wir müssen jeden Pin mit der Hauptplatine verbinden mit Ausnahme Pins 4 (TXD), 16 (RST), und 17 (TEST).
    Sie können warten, bis Sie Ihre Gehäuse-Design ganz eingestellt, um den Schirm direkt mit der Hauptplatine zu löten, so dass Sie wissen, dass es zu erreichen. Ich werde diesen Teil in der Hauptplatine Abschnitt abzudecken.
    Bitte beachten Sie, dass ich beschloss, die Launchpad-Board direkt montieren auf der Hauptplatine für ein paar Gründe. Zum einen, es spart Platz auf der Platine. Zwei, denn wir werden Einstecken Kabel in das Launchpad recht häufig während der gesamten Lebensdauer dieser Steuerung, Montage der Launchpad mit anderen Mitteln hält uns davon ab Betonung der Lötverbindungen der Stiftleisten direkt.

Schritt 5: Hardware - Bauen Sie die Tastatur Platine und Stecker

  1. DIY USB DJ Controller

    DIY USB DJ Controller

    DIY USB DJ Controller

    DIY USB DJ Controller

    DIY USB DJ Controller

    DIY USB DJ Controller

    Alle 8 Artikel anzeigen

    Die Tastatur Bord Gastgeber - nicht überraschend - die Tastatur selbst als auch den Modus-Schalter, das Deck-Schalter, und das Deck LEDs. Ich beschloss, jeder dieser Komponenten in ein separates Minibrett und dem Lot sie alle auf das Tastenfeld Platte zu löten, damit ich kunden passen sie ihre Löcher. Die Tastatur Board bietet eine zentrale Lage, um die Schaltung zusammen zu bringen und eine Stecker, um es mit der Hauptplatine anschließen.
    Sie werden ein paar Dinge brauchen, um das Board zu bauen.
    Materialien:

    Blaue LED (x1, für Deck 1 Anzeige) Rote LED (x1, für Deck 2-Indikator) langsam wechselnden RGB-LED (x1, für Logo-Hintergrundbeleuchtung) 2-Wege-Schalter (x1, Deck Wechselschalter) 3-Wege-Schalter (x1, Modus-Schalter, habe mir von einem alten Wecker) 12-Key-Matrix-Tastatur (x1, habe mir aus zerrütteten Münztelefon) 330-Ohm-Widerstände (x2, für LEDs) Stiftleisten (7X1 Row) Buchsenleisten (12X1 Row) Schaltdraht Protoboard Kleine Stücke von Sperrholz (Abstandshalter für die Montage, benutzen Sie Überbleibsel aus Sperrholz Fall) Sekundenkleber
    Erstellen Sie das Brett
    Zweiwegschalter
    Beginnen Sie, indem Sie ein kleines Stück Lochrasterplatinen, die die 2-Wege-Schalter und ein paar Drähte halten kann, stellen Sie sicher, genügend Platz für die Verbindungen, die wir haben, um zu verlassen! Nehmen Sie die 2-Wege-Schalter und löten sie auf, wie dargestellt. Dann Lötdrähte auf, so dass es die Tastatur Bord erreichen können (überprüfen Sie Ihr Layout häufig), und so, dass sie die LED-Boards zu erreichen. Löten Sie einen Draht um die Macht (+) an einer Ecke der Platine löten einen Draht für Masse (-) an den mittleren Pin des Schalters, und dann löten einen Draht für das Schaltsignal an eine der anderen Pins des Schalters. Da wir Pullup-Widerstände, um die Schalteingang zu lesen, brauchen wir nur zu wissen, wenn der Stift nach unten gezogen, dass die Deck zu erkennen. Der andere Schaltstift ist einfach zum Schalten der LEDs. Löten Sie einen Draht aus dem linken und rechten Pins des Schalters und steckte sie weg auf beiden Seiten der Platine. Löten Sie dann zwei Drähte an die Strom (+) Draht an die Macht zu den LEDs, wenn der Schalter zieht ihren Draht zu Boden. Achten Sie darauf, diese Drähte lang genug, so dass Sie sicher sind, dass sie, wenn wir das Projekt im Falle ! Es ist besser, haben sie zu lang sein und schneiden Sie sie, als dass sie zu kurz!
    LEDs
    Stellen Sie das beiseite und schnitt drei weitere Stücke von protoboard (ca. 3X8) für die LED-Platinen. Das Layout der LEDs und Widerständen, wie dargestellt, unter Hinweis darauf, dass die Anode der LED (+, mehr Blei) ist mit dem Widerstand gelötet. Löten Sie die LEDs und ihre Widerstände auf separaten Platinen, wie dargestellt. Sie sollten über drei LED-Boards: rot, blau und RGB. Die RGB-LED ist nicht mit der Tastatur verbunden sind, aber es ist einfacher, nur bauen sie alle auf einmal.
    Dreiwegschalter
    Stellen Sie die LED-Boards zur Seite und schneiden Sie ein anderes kleines Stück Lochrasterplatinen, um den Modus-Schalter auf zu montieren. Ich rettete mein 3-Wege-Schalter von einem Wecker so ist es sehr wahrscheinlich von Ihnen anders. Aus diesem Grund sollten Sie herausfinden, wie Ihre speziellen 3-Wege-Schalter funktioniert. Sie sollten in der Lage, es mit nur zwei Stifte zu lesen. Wie auch immer, löten sie an die kleine Platine und zur Seite legen.
    Wie mein Schalter arbeitet, ist: es gibt 1 Eingangsstift und dann der Rest der Stifte sind mit dem Eingangsstift verbunden ist, wenn sich der Schalter in einer bestimmten Position. Da wir unsere Eingänge konfiguriert mit internen Pull-up-Widerstände , ist die Standard-Eingangswert eine digitale Hoch (1). Die Art, wie ich lesen Sie die Stellung des Schalters ist: Wenn der Stift 1 niedrig und Pin 2 hoch ist, bedeutet, dass sich der Schalter in der ersten Position. Wenn der Stift 2 niedrig und Pin 1 hoch ist, ist der Schalter in der zweiten Position befindet. Wenn beide Kontaktstifte 1 und 2 hoch ist, ist der Schalter in der dritten Position (dem Ausgangsstift, Stift 3, des Schalters in diesem Fall unbelegt ist). Meine Konfiguration abgebildet.
    Keypad Foren
    Schneiden Sie einen anderen, mittelgroße Stück Lochrasterplatinen und löten eine 7-polige Stiftleiste auf der Platine, so dass die Tastatur-Anschluss passt. Wenn Ihre Tastatur nicht über einen Stecker wie bei mir funktioniert, entwickeln einen anderen Weg, um Ihre Tastatur zu verbinden. I like to have it modular so that you can take parts out easily if you ever want to use them in another project. The keypad board will have a 12-pin connector (7 for keypad, 2 for power/ground, and 3 for the switches), so solder on a 12-pin row of female headers in a location that would be closest to your main board in the final project. The header layout is shown in the picture. The first pin is the positive voltage (Vcc), the second and third pins are the mode switch, the fourth pin is the deck switch, the next seven are the keypad (I soldered them directly across to make it simple), and the last pin is the ground.
    Keypad Connector
    The keypad connector is what plugs the keypad board into the main board. At this point, it's just a 12X2 board that has a row of 12 male headers on it. We will solder wires to the main board later. So simply cut a 12X2 section of protoboard and then solder 12 male headers onto it in a row. See the picture for more details.
    Bring it Together
    We now have all the parts that make up the keypad part of this project. I suggest waiting until you have your enclosure design all set to solder the pieces together so that you can get the best spacing possible. The 12 pin connector needs to have these connections:
    7 pins for the keypad 1 pin for power 1 pin for ground 1 pin for the deck switch 2 pins for the mode switch
    Solder wires to the main keypad board so that all these connections are made, look at the pictures to see how I did this.
    You want to connect the LEDs so that the two-way switch connects one of them to ground in either position. I suggest breadboarding this with your specific part to be certain before you solder the permanent connections. My switch had 3 pins, the center one was the input and the left and right pins would be connected to the center pin depending on the switch's position. I simply had to connect the cathode (-) of the LED board to the left or right pin and the anode (+) to the supply voltage.
    You should be all set! Glue the keypad boards in place on the panel, except for the LED boards. These will be mounted on the bottom panel later.

Step 6: Hardware - Build the Button/Slider/Knob Boards

  1. DIY USB DJ Controller

    DIY USB DJ Controller

    DIY USB DJ Controller

    DIY USB DJ Controller

    DIY USB DJ Controller

    DIY USB DJ Controller

    Alle 9 Artikel anzeigen

    This section is pretty much a catch-all for various boards that host controls and shows you how to solder leads onto a potentiometer. The buttons are soldered onto their own little boards mounted on wooden spacers and have the external buttons glued to them. See the pictures for a better explanation. The rotary encoder is also mounted on its own little board and then glued to the front panel. The sliders and potentiometers simply have leads soldered onto their pins and then shrinkwrap over them to prevent shorts.
    Materialien:
    Tactile Push-button Switches (x5) 10 kOhm, Linear Potentiometers (x11) 10 kOhm, Linear Slide Potentiometers (x2 Medium , x1 X-Large ) Rotary Encoder w/ Pushbutton (x1) Protoboard Hookup Wire 1/4" Heat shrinkwrap tubing (optional)
    Build the Button Boards
    To build the button boards, you need to cut three pieces of protoboard. Measure before you cut and see how much you're going to need to accommodate the buttons and wires, as well as the standoffs we are going to use to attach them to the front panel. Also take into account the spacing of your buttons and try to get them centered as much as possible under the panel button. There should be two boards that have two buttons and one board that has one button (or one long board that has all buttons on it, but I didn't have a big enough piece of protoboard).
    My pieces came out to measure 2 1/4" by 11/16" (for 2-button boards) and 1 1/4" by 5/8" (for single-button board).
    Solder the buttons on, make sure you know which pins are connected when pressed and when not pressed! Then, solder three wires to the two-button boards and two wires to the one-button board. Make sure these will be long enough for the final installation! The two-button boards' wires are ground, button 1, and button 2. Solder ground connections to one side of each button and then solder the other two wires, one to each buttons' side opposite the ground connection. See the pictures for more details. Make sure to leave space on either side and in the center for standoffs that will we use to attach the boards to the front panel.
    Build the Rotary Encoder Board
    To build the rotary encoder board, you need to cut a piece of protoboard that will accommodate the encoder itself (I just cut out sections where the mounting pins are located), the five wires we need to solder on, as well as the two standoffs on either side that we will use to mount the encoder to the front panel.
    Solder the encoder on and simply attach wires to each of the pins. Make sure they are long enough so that they will reach the main board during final assembly!
    Solder Wires to the Potentiometers
    In this step we will solder wires to the potentiometers since they will be panel mounted. This can get pretty tedious so be prepared! My preferred method of doing this is to twist the wire and then fit it over the pin of the potentiometer for physical support, then solder it on, and finally slide some shrinkwrap tubing over the connection to make it look neat and to prevent possible short circuits. This process is detailed in the pictures. Simply heat the shrinkwrap tubing to make it shrink. I used a super-high-tech space heater, just find something that works! Note that I used the front panel to hold all the potentiometers in place while I soldered wires onto them. Repeat this process for the slide potentiometers. Make sure the wires are long enough to reach during final assembly!
    Mounting Everything
    Now we will mount everything to the front panel.
    For the button boards, cut a couple small pieces of plywood to act as spacers and glue them to the button boards on either side of the buttons, and one in the center. Then, glue these boards under the cutout holes for the buttons, making sure to center the buttons as much as possible. Look at the pictures to see how I positioned everything. When you are satisfied with their positioning, you can glue the wooden button tops directly to the push buttons. Use a very small amount of glue so that you don't affect the operation of the push button!
    The rotary encoder can simply be glued directly to the front panel without any spacers. Be certain the knob will have enough clearance to be pushed down for the button functionality!
    Mount the rotary potentiometers using the provided nut and washer, tighten them down so that they don't rotate while you turn them.
    The slide potentiometers have screw mounting holes but I opted to just simply glue them into place. Line them up carefully so that the slider can go through its full range of motion. Make sure to strip the felt guard off the edges of the x-large slide pot where you will be gluing it or else it won't glue effectively (believe me). Use a couple wooden spacers so the slider doesn't stick out as much from the front panel. See the pictures for more details.
    You should have most if not all of the controls mounted on the front panel now! It's finally starting to look like a DJ Controller!
    In the next step, we transition to the firmware side of this project before we finish building the hardware. This so we don't have to be a contortionist later on to insert the ICs in the main board. So put the soldering iron down for a bit, breathe some fresh air, and get to coding!

Step 7: Firmware

  1. DIY USB DJ Controller

    Note: On this step I attached standalone demo code for the rotary encoder and MCP3008 SPI communication as a reference. This is the barebones code for each type of input. It's amazing how there are no tutorials for using the MCP3008 with Arduino or Launchpad! I may make an Instructable just to explain this...
    As stated previously, this project has two different microcontrollers that manage different controls in the circuit. The primary microcontroller is responsible for reading input from 6 of the analog controls, reading the 5 buttons, interpreting the rotary encoder and its integrated push button, and passing serial data from the secondary microcontroller to the computer. The secondary microcontroller is responsible for SPI communication with the MCP3008 Analog-to-Digital Converter and interpreting input from the keypad circuit (which consists of the keypad, the deck switch, and the mode switch). These ICs work hand in hand to give us a diverse array of controls!
    You're going to need a few things to program the microcontrollers.
    Materialien:
    Energia , an Arduino-like IDE for TI Launchpad Arduino Keypad Library TI Launchpad MSP430G2553 (x2)
    Erste Set Up
    If you have not used/installed the default IDE (TI's Code Composer Studio) to program your Launchpad before, you need to get the drivers for the Launchpad before your computer will 'see' it. To get set up initially using Energia, follow this guide . If it's your first time using Energia, I recommend uploading a couple of their super simple demo programs first and trying it all out. It's very easy and doesn't take much time, I'll wait!
    When you get back from that, we need to install the Keypad library. It's written for Arduino but it works with Energia too. To install the library, find your Energia folder (usually in Documents), and extract the keypad library zip into the folder Energia\libraries.
    Make sure you have Energia set up to program an MSP430G2553 on a Launchpad, and that you have the correct COM port select. Follow the guide above to set this up and upload a demo program so you know it works!
    Energia should be all set to program now!
    Understanding the Protocol
    The microcontrollers communicate with the computer using a custom protocol that I made. It uses only two-byte (16-bit) messages to tell the computer information about all the controls. This was in an attempt to cut down on any possible latency and just to practice my bitwise math skills. Note that the raw serial data is not human readable in the slightest! An explanation of the protocol is included in this section so you can understand how all the code works better. You don't have to read this section but it may help you if you want to modify this project.
    General Format
    The general format for all messages is as follows:
    [00000] | [0] | [0000000000]
    ID Num | Type | Value
    The ID number tells us what control sent the message. The type tells us if it's a digital (0) or analog (1) control. And the value is just a space for the control to put whatever message it needs to send.
    Analog
    Analog messages are super simple. They are formatted as follows:
    [00000] | [1] | [0000000000]
    ID Num | Type | 10-bit ADC Value
    Look familiar? That's because it's exactly the same as a general message, only the type bit will always be a 1 for analog controls. The ADCs we happen to be using output 10-bit values, how convenient!
    Digital
    Digital controls are formatted exactly like analog controls, except the type bit will always be a 0 for digital controls. The value is just a boolean value, the last bit will either be a 1 (for digital high) or a 0 (for digital low).
    Keypad
    This is where it starts getting a little more complicated. The keypad needs to communicate several different values in order to function properly. Because of this, its messages are formatted as follows:
    [00000] | [0] | [0000] | [00] | [0] | [00]
    ID Number | Type | Key ID | On/Off | Mode | Deck | Don't Care
    The keypad will always be a digital control (type = 0). The ID number of 0 is reserved for keypad input so the first 6 bits will always be [000000] for keypad messages. The next four bits are the Key ID number. Since we have a 12-button keypad, we use ID numbers 0 through 11. However, the remaining numbers can be used for other things since the hardware will never receive them as inputs. I decided to use the Key ID number 15 to indicate deck change commands (sent when the deck switch is flipped). This allows us to set the active deck and PFL with the deck selector switch. The next bit just tells us if the button was pressed (on) or released (off). The next two bits represent the mode that was selected. It ranges from 0 to 2 (thus we need two bits to represent the mode). The next bit represents the selected deck, either Deck 0 or Deck 1. The last two bits we don't care about and they won't be interpreted.
    Rotary Encoder
    The Rotary Encoder is not as complicated, but note that it also has a reserved ID number of 1 for digital controls. The rotary encoder messages are formatted as follows:
    [00001] | [0] | [00] | [0] | [0000000]
    ID Number | Type | Value | Super Speed | Don't Care
    The ID Number of the Rotary Encoder will always be 1 and the type will always be 0. The value has three different meanings, 0 means clockwise rotation, 1 means counterclockwise rotation, and 2 means a double click, 3 is not used. The last 7 bits we don't care about and they won't be interpreted.
    Das ist alles dort ist zu ihm! The protocol really isn't that hard to understand. And it's a good way to practice bitwise math skills and stretch the limits on how small you can get data packets. I decided to use 5 bits for the ID number so that the protocol can support up to 32 digital inputs and 32 analog inputs (5^2 = 32).

Step 8: Firmware - Secondary Microcontroller

  1. DIY USB DJ Controller

    Place one of the MSP430G2553's in the Launchpad and plug it into your computer. Download the provided code and open it in Energia. Below I provide a general outline of how the code functions. I will not cover the operation of the keypad library because it is fairly well documented here
    The Secondary Microcontroller is responsible for communicating with the MCP3008 over SPI and interpreting keypad input. I have included both the Secondary Microcontroller code for this project and a demo I made for communicating with the MCP3008 in general (only tutorial I found was for Raspberry Pi). This should work on Launchpad and Arduino I think.
    Understanding the Code
    Whenever a key is pressed, released, or held, the function called keypadEvent is called. This function is responsible for sending messages to the main microcontroller when the state of the keypad changes.
    Anyway, when a key is pressed for example, SendKeypadEvent is called with the arguments of key (the key that was pressed), a true (1, meaning the key was pressed), a digitalRead of P1.7 (which is the 2-way switch that identifies the deck that is affected by the key press), and the current Mode (which is determined in the main loop of the program).
    SendKeypadEvent formats the message so that it can be understood later down the line. See the previous step for more information about how the protocol is formatted for each control. It sends two bytes that tells the program what key was pressed (or if it was released), the current deck, and the current mode.
    Now if we look at the main program loop we see a few chunks of code. The first bit of code reads the keypad and any new keypresses are sent from there.The second section reads all the analog controls. The third section sends out a deck change message. This is done in the main loop using a flag set by the interrupt service routine because sending serial data in ISR's is inefficient.
    The knobs are all SPI_Control classes. This localizes all the variables and methods and allows you to register any number of knobs you need. The main loop just checks if the class has determined there is a new (enough) value, and if there is, it sends out a message detailing what knob and what the new value is. My in-code comment summarizes communication with the MCP3008 over SPI fairly well:
    On reading data from the MCP3008 ADC IC:
    Please note, the SPI is in mode 0,0, which means SCLK idles in a 'low' state
    Treppe
      Pull CS/SS (Chip select/Slave select) pin LOW (0) Send start bit data, which is 00000001 or 0x01 (Read the datasheet) Send the input configuration/channel selection data
        Note: Input config data format: SGL/DIFF, D2, D1, D0, X, X, X, X. SGL/DIFF selects what mode, D2, D1, and D0 (3 bits) select channel to read (0-7) and XXXX do not matter. 1 = single-ended, 0 = differential
      The first byte received will be as follows: ?/?/?/?/?/0/B9/B8, where ? is unknown, 0 is a null bit, and B9 and B8 are the first bits of the 10-bit sample. The next byte received will be the rest of the 10-bit sample To get a meaningful reading, we have to combine the 2 bits from the first message with the second message. We can acomplish this by trimming the first 6 bits of the first byte (using bitwise & with the mask 0b00000011) shifting the bits 8 to the left, and the bitwise OR-ing the first byte with the second byte End communication by setting CS/SS back high

    That's a little confusing, but all you need to know is that the function readADC just gets a 10-bit value from the MCP3008 for any channel.
    If we look at the function SendDeckChange, you will notice that it is sent as a keypad press. Since we only have 12 keys, but we represent the key that was pressed with 4 bits, we can use 12-15 for whatever because they will never be received as input from the hardware. So we use the key ID 15 to represent deck changes.
    That's pretty much it. Every clock cycle the microcontroller scans to see if a keypad button has been pressed, queries the MCP3008 for all the knob values and checks if they have changed within a certain sensitivity, and also checks to see if the deck switch has been flipped. See the code for more explanation, it's fairly well commented.
    Uploading the Code
    Now you should have an understanding of how the Secondary Microcontroller firmware works, so let's go ahead and upload it! Get the code I posted into your Energia code window and click the checkmark in the corner to verify/compile it. It should all check out. When that is done, upload the code to the microcontroller by clicking on the arrow next to the checkmark. When that is complete, unplug the Launchpad, remove the microcontroller, and set it aside for now.

Step 9: Firmware - Primary Microcontroller

  1. DIY USB DJ Controller

    Now we can program the primary microcontroller. Place the other MSP430G2553 in the Launchpad and connect it to your computer. Energia should be all set up already.
    The Main microcontroller is responsible for reading various buttons, the rest of the analog controls (6 in total), interpreting input from the rotary encoder, and passing serial data from the secondary microcontroller through to the connected computer.
    Understanding the Code
    I will first discuss what the main microcontroller does with the Secondary Microcontroller's messages because it is the simplest. The Secondary Microcontroller's messages already come in on the RXD pin preformatted, so the main microcontroller simply resends the received message on its own TXD pin to the computer. The code for this is found in the main loop at the bottom. That is all there is to the keypad messages for now.
    Now if we look to the top of the program, you will notice that I define a class called AnalogControl. This class is almost identical to the SPI_Control in the secondary microcontroller firmware, but it reads the on-board ADC instead of asking the MCP3008 for a value. It has built-in averaging and smoothing code. Making this a class allows you to easily configure any number of analog controls. You can set what the control ID is, the pin that the ADC value is sampled from, and the sensitivity of the control.
    Next is the Rotary Encoder class. This allows you to easily configure any number of rotary encoders as well, but for me one is enough in this project. The Rotary Encoder class simply needs to know what pins to use. The first two are the actual rotary encoder and the third is the integrated button input.
    In the loop, we call isNew for each control and use its return value to determine if we should send a control change or not. The isNew function contains built-in smoothing for analog controls so that a new value isn't sent every loop (measured resistances can be slightly unstable for various reasons like temperature and vibrations), this prevents control jitter.
    We also check an array of boolean values that indicate whether a digital control has changed state. This flag is set in the interrupt service routines for a certain button. Again, this is done because sending serial data in an ISR is inefficient.
    For an explanation of how the rotary encoder code works, check out this tutorial.
    Thank you to the bildr tutorial above, that's what I based my rotary encoder code off of!
    Uploading the Code
    Now that you understand the main microcontroller code, we can upload it to the microcontroller! Copy my code into your Energia window and click the verify button. When the build process is complete and without errors, you can upload the code to the microcontroller.
    This microcontroller stays in the Launchpad in the completed project so you can just leave it where it is once you are done programming it.

Step 10: Hardware - Build the Main Board

  1. DIY USB DJ Controller

    DIY USB DJ Controller

    DIY USB DJ Controller

    DIY USB DJ Controller

    DIY USB DJ Controller

    DIY USB DJ Controller

    Alle 7 Artikel anzeigen

    Now we will finally build the main board! This is where most of the hardware magic happens. The main board hosts the secondary microcontroller (hereafter referred to as 'SMCU') and the MCP3008 ADC chip, as well as all the controls. It has connectors soldered on for the keypad board and the launchpad as well.
    Materialien:
    20-pin IC Socket (x1) 16-pin IC Socket (x1) MSP430G2553 (x1) MCP3008 (x1) 10 kOhm Resistor (x1, pull-up for the reset pin on the G2553) Lots of hookup wire Suitably sized protoboard
    Build the Board
    Before We Begin: For detailed information on how to make all the necessary connections, see the attached circuit schematic! For help reading this schematic, see this tutorial by Sparkfun. Try to follow it as we go along. Also, remember to keep the datasheets for the MSP430G2553 and the MCP3008 open while soldering to make sure the proper connections are made! For an explanation of how the SPI (Serial Peripheral Interface) protocol works, see this tutorial by Sparkfun.
    IC Sockets & Launchpad Connector
    The bulk of the board is wired connections to all other controls of the DJ controller, but the few components that actually populate the board are the ICs/sockets and a single resistor. The rest is all wire! I soldered the 20-pin IC socket in the center top of the board and then soldered the 16-pin IC socket below it, leaving a gap in the center for the rotary encoder board to clear. Don't insert the actual IC's just yet, soldering heat can damage them! I then soldered on 17 wires for the Launchpad shield and began to solder some connections off of that. Make sure you write down what wires will be what when attached to the Launchpad! Solder the other end of these wires to the Launchpad shield we made earlier. Make sure they will reach!
    Power Connections
    From those pins, we need to solder both power and ground to the SMCU and the MCP3008. To do this, choose what wires will be power and ground from the Launchpad and solder a wire from power to pin 1 of the SMCU and pin 16 of the MCP3008. Since the reference voltage (Vref) will be the same as our supply voltage, bridge pins 16 and 15 of the MCP3008. To wire up ground to both chips, solder a ground connection to pin 20 of the SMCU and another to pin 14 (AGND) of the MCP3008. Since our AGND and DGND are the same, solder a connection from pin 14 to pin 9 of the MCP3008. Das ist es! Both chips should receive power now.
    Reset Resistor
    At this point, we are also going to solder on the pull-up resistor to the reset pin of the SMCU. This is necessary for the microcontroller to function independently. To do this, take the 10kOhm Resistor and solder it between pin 1 (supply voltage) and pin 16 (RST) of the SMCU. I used a bit of extra shrinkwrap tubing to help prevent short circuits. See the pictures for help.
    SPI Interface
    Next, solder connections for the SPI interface from the MCP3008 to the secondary microcontroller. Pins 7, 8, 14, and 15 on the secondary microcontroller go to pins 13, 10, 12, and 11 on the MCP3008, respectively.
    Steuerung
    Here's where the rest of the fun happens: soldering all the controls onto the main board. To start, cut all the wires for the controls down so they reach without a lot of extra wire (leave a little slack), especially the potentiometers near the mounting position of the main board. Strip them appropriately and start positioning their wires in the board so they don't conflict. You can try to directly wire the controls where they need to be, but you can also use a bit of jumper wire.
    Note: I found that mounting the main board later on was super difficult because of the wire placement of the controls. Consider leaving the wires long and wiring them to the edges of the board instead of directly in line.
    Potentiometers
    The potentiometers need a ground connection on the uppermost pin and a power connection on the bottommost pin. The middle pin is the potentiometer's output. I wired the trebel, mid, and bass potentiometers to the main microcontroller. Solder the output of these six to pins 2, 5, 6, 7, 14, and 15. The other 5 potentiometers need to be wired to the MCP3008. The pins on the left side are all channel inputs so any 5 of those will do. On the slide potentiometers the pins are a bit different. On the extra-large slide pot, the pins are labeled 1, 2, and 3. Pin 1 should be connected to ground, pin 3 should be connected to positive voltage, and pin 2 is the output and should be wired to the MCP3008's left side. On the medium slide pot, the two pins on top are ground and the output from left to right, and the single pin on the bottom is positive power.
    Rotary Encoder
    The rotary encoder has 5 wires coming off of it. These are: 2 ground connections, 1 button connection, and 2 connections for the rotary encoder output. On the three-pin side, the middle pin needs to be connected to ground. The left pin goes to pin 8 of the main microcontroller and the right pin goes to pin 9. On the two-pin side, one pin goes to ground and the other pin goes to pin 10. It doesn't matter which pin is which. For more help on hooking this up, see the pictures or check out this page.
    Buttons
    Recall what connection you decided to be ground on the button boards. This needs to be soldered to ground, and then have their outputs soldered to the appropriate pins of the Launchpad wires that lead to the main microcontroller. The button inputs on the main microcontroller are pins 11, 12, 13, 18, and 19.
    Keypad Circuit
    Find the little 12X2 header you made for the keypad connector a while ago and solder wires to it so that they reach the main board. Remember which wires are which! Then make the appropriate connections. The power and ground pins need to be connected accordingly. The deck switch pin goes to pin 5 on the secondary microntroller. The two mode pins go to pins 18 and 19. The keypad pins 1-7 go to pins 12, 2, 11, 10, 13, 9, and 6, respectively. See the schematic for a better idea.
    Shield Connector
    Solder the shield connector to the mainboard using the layout you determined earlier. I wrote mine on the side of the board. Triple check the connections before you make them permanent! You could really mess up everything if a wire is routed wrong here!
    Finishing Up
    Now we should have all the hardware hooked up where it needs to go electrically. The only thing left to do is position the LEDs and connect them where they need to go. We will do this in the next step where we finish building the case.
    Insert the MSP430G2553 that is programmed with the secondary microcontroller's code into the 20-pin IC socket, and then insert the MCP3008 into the 16-pin IC socket. Make sure you insert the correct microcontroller, the primary microcontroller wouldn't be too happy in this circuit.
    Now, glue the main board on the center of the front panel. Use some more wooden spacers to make it fit properly. Make sure that there are no clearance issues or possible short circuits. Remember that wires may shift around inside a bit throughout the lifetime of this controller so you may want to secure the wires with electrical tape or wire ties.
    Plug the Launchpad into the shield and let it dangle for now.
    Look at the clearance you would have to work with in order to insert the ICs now. Aren't you glad we waited a bit?

Step 11: Case Construction

  1. DIY USB DJ Controller

    Now we will finish putting the case together. You will need a few materials to do this:
    Materialien:
    The pieces of plexiglass you cut earlier for the sides The wooden base you cut earlier The small rectangular pieces of wood that seemed pointless The front panel with all the hardware on it Super glue
    Mount the Sides
    To mount the sides, I just used super glue on the bottom panel. Note which side panel has a hole cut out for the USB connector. This will be the front side panel. Glue the pieces into position right on the edge of the base.
    Now, you see those small wooden pieces? Those are meant to hold the Launchpad in place so you can remove it and use it in other projects if you need to! Glue those in the top-left of the base so they line up with the plexiglass sides. Make sure you use the Launchpad board as a guide while doing this so you know it fits properly! The USB connector of the Launchpad should line up with the laser cut hole in the plexiglass.
    Next, we will install the LEDs. The blue LED goes under the left deck indicator, and the red LED goes under the right deck indicator, you may want to try making tubes so the light doesn't diffuse throughout the case. I would suggest plastic straws with some shrinkwrap over them. The RGB LED goes under the rocketship logo. You may want to sand the exterior of the LEDs to help diffuse the light even more. Try to position the RGB LED so that the center of it hits a wooden part of the logo, the illumination will look much more even if you do this. Glue them in place when you are satisfied with the positioning.
    Get out the soldering iron one last time and solder the deck LEDs to the deck switch (you should have wires hanging off for this already). The RGB LED is always on when the controller is plugged in so just solder that to power and ground. Make sure you get the polarity correct, LEDs do not work backwards (that's the point of a diode).
    Mount the Front Panel
    To mount the front panel, you can either use super glue (permanently seal everything inside...), tack it on with some plexiglass glue, or find some suitable brackets. Drilling/screwing into plexiglass is not really a good idea as it will just crack. Be careful not to damage the plexiglass sides or the front panel while doing this!
    Note: The finished product in these pictures is just the rough prototype. The laser cutter wasn't available to cut the sides so we just roughly made them by scoring them with a razor and breaking them over some drumsticks. The hardware had some bugs so I didn't want to completely seal the parts in. It still looks cool but it's not as polished as I would like it to be. Also, I didn't solder the launchpad shield on just yet, I plugged the wires in. Experiment with different ways to mount the Launchpad!
    Put the Launchpad in the little nook we made for it earlier in this step. The USB hole should line up and the wooden panels should hold the Launchpad in place effectively.
    Finishing Up
    Das ist es! You should be all done with the hardware/physical construction side of this project.

Step 12: Software

  1. DIY USB DJ Controller

    DIY USB DJ Controller

    Phew, we're finally done with the hardware. Pour yourself a hot/cold beverage (coffee or refreshing imbibery) and sit down at your desk. Now we start the software side of this project.
    The Software side of this project consists of a custom program written using Processing, an IDE/Language very similar to Arduino/Java, some sort of virtual MIDI driver, and your personal favorite DJing Software. We will cover the configuration of each of these programs in the next few steps, but for now you're going to need a couple things!
    Materialien:
    Download and extract Processing ( make sure it's the 32-bit version, I suggest downloading both) proMIDI 1.0 (library for Processing, make sure to get the older 1.0 version) controlP5 (GUI library for Processing) A virtual MIDI driver Windows: loopMIDI by Tobias Erichsen Mac and Linux: Built-in feature... Follow these instructions ( Mac , Linux ) DJing Software (I use Virtual DJ Pro )
    We will be using a couple libraries with Processing. proMIDI 1.0 allows us to send/receive MIDI commands in our program, very useful! controlP5 is a great Processing library. It allows us to rapidly create a nice looking and functional user interface for our program. A virtual MIDI driver carries the MIDI messages we create in our program directly over to the DJing program without the need of a physical cable/real MIDI connection. For Windows, we have to use loopMIDI. Mac and Linux have a native solution. I will cover setting this virtual connection up in the next steps.
    For the DJing Software, I have only tested this with Virtual DJ Pro because that's my software of choice. However, the method we use (custom MIDI command mapping) is supported by quite a few of the top DJing programs, such as: Traktor Pro , Ableton Live , Serato DJ , Image-Line Deckadance , and maybe even Algoriddim's DJay for Mac (not sure about this one, but try it). Those links are MIDI controller mapping tutorials for the respective programs. Any DJ Software that you can map custom MIDI commands for should work. I will only cover setting up this controller for use with Virtual DJ Pro in this Instructable.
    Note: I don't know about other DJing programs, but Virtual DJ allows you to export and import custom mappings. If the Instructables community actually builds this it would be possible to swap mappings for other programs in the comments. I didn't map everything on my controller yet, but I will upload what I have done.
    Since Processing is cross platform, you should theoretically be able to use this project with most operating systems. However, I have only tested it on Windows.

Step 13: Software - Virtual MIDI Driver


  1. Before we get started with anything else, we're going to need a way to virtually connect our interpreting program and the DJing software. To do this, we need a virtual MIDI driver. On Windows, you can download and install loopMIDI , on Mac or Linux, this feature is built in. Follow the directions here for Ma c , and here for Linux . Note that I haven't tested this setup on Mac or Linux, but it should be possible. You might have to play around. This should be all set up, and we can see whether or not it worked in the next step!
    To set up loopMIDI, simply open the program, type a name in the "New Port Name" box, and then click the "+" button. You should then be able to find a MIDI port named whatever you put into the box!
    EDIT: So after wrestling with LoopBe1's "convenient" feedback prevention feature, I have decided to switch to a different virtual MIDI driver for Windows. The feedback prevention pretty much just monitored if a lot of messages were being sent in a short period of time. Seeing as we're modifying multiple sliders at the same time on a DJ Controller fairly often, this resulted in LoopBe1 muting the MIDI channel and cutting off control. Very inconvenient if you ask me. It should at least be configurable. Anyway, the new software that I began using is called loopMIDI by Tobias Erichsen. Good software, simple, no frills software MIDI passthrough. Thank you Tobias!

Step 14: Software - Processing Program

  1. DIY USB DJ Controller

    This program connects to the serial port of the Launchpad so we can receive input. It gets the messages, decodes them, and formats a MIDI message and sends it out. It also includes a user interface that allows you to select the proper serial port and MIDI connection. You can play some pretty spooky piano with the keypad if you connect to the Microsoft MIDI Synth! Anyway, I'll give an overview of how the software works and then tell you how to configure it. We need a few things first.
    Materialien:
    Processing IDE proMIDI 1.0 library controlP5 library
    See the previous step for links
    Getting setup
    Start by installing the libraries. Find your Processing folder (usually in Documents) and the go to Processing\libraries. Extract the libraries to this folder and you should be all set (it's the same as installing libraries for Energia or Arduino).
    Understanding the Code
    There are some parts of the code unrelated to processing the input from the DJ Controller. These include managing the serial port and MIDI connections as well as creating the user interface. I will not cover these parts of the code. See the page for the certain library in question if you want an explanation of how everything works.
    The data from the controller enters our program in the function called 'serialEvent.' In this function, the two separate bytes of the message are combined into one 16-bit char (not integer... because Processing doesn't have unsigned data types, see the code comments for more information and ranting). It then calls the function 'ParseMessage'...
    ParseMessage is the starting point for processing the bits we receive from the controller. It uses bitwise math to decode the ID number and type of the control that sent the message. Based on these properties, it can then send the message to the proper function to be processed.
    If the control is an analog control, it calls 'ProcessAnalog'. This function decodes the 10-bit value of the control and turns it into a MIDI value between 0 and 127. It then sends a control change MIDI message by calling 'SendControlChange'. A control change is a type of MIDI control that has a variable input instead of a note, which has an on-off state.
    If the control is a digital control, it has 3 choices in how to process it: If the ID number is 0, that number is reserved for the keypad so it sends it to 'ProcessKeypad'. If the ID number is 1, that number is reserved for the rotary encoder so it sends it to 'ProcessRotary'. If the ID number is neither of these reserved values, it processes it as a general digital input (aka button) by sending the message to 'ProcessDigital'.
    ProcessKeypad decodes what key was pressed, its on/off state, the mode that was selected at the time, and the deck that was selected at the time. It then sends a MIDI note based on this information. The MIDI note number is calculated using a special algorithm that gives each combination a unique note value.
    ProcessRotary decodes what the value of the message is and whether the integrated button was pushed while the rotary encoder was turned. The values range from 0 to 2, with 0 meaning clockwise rotation, 1 meaning counterclockwise rotation, and 2 meaning a double click (used for loading tracks to selected deck). The superspeed bit is set to 1 if the integrated button was pushed down while rotating, and if it was pressed down, the program sends 10 MIDI messages. Since the rotary encoder is intended to be used for browsing a library, this allows you to scroll more quickly through songs.
    ProcessDigital simply decodes the last bit in the message and that tells whether to send an on or an off MIDI message for the specific note associated with that control.
    For more information concerning the protocol used in this project, see the first step in the Firmware section.
    Running the Code and Configuring the Software
    Now that you understand the code, lets get to running it!
    You will notice when you first open Processing it is almost identical to Energia. They are based off the same thing kind of ( Wiring , I believe). This makes it super intuitive to get started! Copy and paste my code into the editor window and click the Play button in the top left-hand corner ("Run").
    A little window should pop up that has two drop-down menus and three buttons. These controls allow you to select what MIDI output to connect to and what Serial port input to listen on. The refresh button allows you to refresh the lists if you unplug/plug in your launchpad or a MIDI connection. For our purposes, connect the MIDI Out line to loopMIDI (Windows) or the virtual MIDI port you created earlier (Mac/Linux). Plug in the controller and connect the Serial port to the serial port that the controller is on. It should be the one you used with Energia. MIDI input from your controller should now reach whatever is connected to the other end of your virtual MIDI port.

Step 15: Software - DJing Program

  1. DIY USB DJ Controller

    Note: The file attached to this step is my (incomplete) mapping for the DJ Controller I built. It will work with Virtual DJ Pro 8. Simply find your VirtualDJ folder (usually in Documents), and then paste this file into the VirtualDJ\Mappers folder. That should do the trick!
    This is the final step in getting set up! It varies by what software you use to DJ but I used Virtual DJ Pro 8. It has a handy scripting system called VDJScript that allows you map complex commands to MIDI messages and made this controller super powerful. Other DJing software might have a similar system, check with your user manual or the software company's website.
    I will not cover how to map commands in great detail because it can become very complicated, but I will include my (incomplete) mapping for Virtual DJ. Note that depending on how you hooked up controls the ID numbers may be different so the controls might change a bit. Therefore, it is best if you just learn how to map commands for your specific DJing software. That way you can customize the operation of this controller even more! Here is a good tutorial for Virtual DJ Pro . I linked to some more tutorials for other software in the intro step. Again, check the company's website!
    The general way you map controls in Virtual DJ Pro is:
    Click on the settings button and go to the Controllers tab. Find the virtual midi driver input and click on it (for mine it said "loopMIDI (custom mapping)"). Then, use a control on the controller and it should appear in the key learn box below. You can then select that key and map it to some action. For example, mapping 0-SLIDER70 to the action 'crossfader' would map a knob/slider to the crossfader. Be creative and use the action learn button (screen with a magnifying glass icon). That allows you to use your mouse to select actions from the interface. Read up and come up with shortcuts that work with your DJing style!

Step 16: Finishing Up - Notes for the Future

  1. DIY USB DJ Controller

    You should be all set up with your very own DIY DJ Controller now! Go out there and start DJing!
    Some notes about this project for people who construct it in the future:
    I noticed that sometimes the analog MIDI controls can be very unstable. This can be fixed either through hardware or software. There is a sensitivity parameter for analog controls, and you could perhaps use a higher resistance potentiometer for a higher impedance circuit (uses less power and probably more stable).
    If I were to redo this project, I would definitely plan out the cable routing better. Getting the main board soldered to all the controls was really a pain. I actually broke the rotary encoder while I was fixing something else because it was already glued down. In the future, I would ideally not glue anything down. I wanted to get this Instructable in on time for a couple contests so I had to make due with the quickest methods.
    I plan to fix a few more things with the hardware and update the software so it's more stable in the future, but the project works pretty well as it is. Also, LoopBe1 has a very annoying auto-mute function that mutes the MIDI channel when too many messages are sent in a short period of time. This can cause some cut-outs when operating several analog controls at once. A software update to the Processing program could probably remedy this. EDIT: Changed the suggested virtual MIDI driver. See the software step pertaining to setting up the Virtual MIDI driver for more information. Cutouts are finally gone :) !
    Remember this project is totally reconfigurable. Most of the inputs are classes so you can configure different numbers of them. The ability to easily change the inputs in code and how they affect the DJ program through VDJScript (or equivalent) really makes this project/dataflow powerful and simple. Though I'll admit that a bitwise protocol was almost masochistic ;)
    I hope that you enjoyed following me along with this Instructable! Thank you for reading! Check out the video in the intro!