Inhaltsverzeichnis:

HX1-DM - die Upcycled Arduino DUE Powered DIY Drum Machine (hergestellt mit einer toten Maschine MK2) - Gunook
HX1-DM - die Upcycled Arduino DUE Powered DIY Drum Machine (hergestellt mit einer toten Maschine MK2) - Gunook

Video: HX1-DM - die Upcycled Arduino DUE Powered DIY Drum Machine (hergestellt mit einer toten Maschine MK2) - Gunook

Video: HX1-DM - die Upcycled Arduino DUE Powered DIY Drum Machine (hergestellt mit einer toten Maschine MK2) - Gunook
Video: Just another Arduino DUE powered DIY Drum Machine (made with a dead Maschine MK2) 2024, November
Anonim
Image
Image
Die Reparatur
Die Reparatur

Die spez

  • Hybrider Midi-Controller / Drum-Machine: Arduino DUE powered!
  • 16 Velocity Sensing Pads mit sehr geringer Latenz 1>ms
  • 8 Regler, die jedem Midi #CC-Befehl zuweisbar sind
  • 16ch Eingebauter Sequenzer (kein Computer erforderlich!!)
  • MIDI In/Out/Thru-Funktionalität (kann als USB-Midi-Interface verwendet werden!)
  • Teilweise MIDI-Clock- und MTC-Unterstützung (funktioniert mit MMC- und DAW-Steuerung)

Dies ist definitiv eines der kompliziertesten Projekte, an denen ich gearbeitet habe, es handelte sich um 17 Ausgangsschieberegister, 6 Eingangsschieberegister, 2x 16-Kanal-Multiplexer, die auf einer Platine arbeiten. Ich habe keine Ahnung, was was und wo ist, und ich habe noch nie durcheinander gebracht mit Schieberegistern / Multiplexern vor……

Es begann als Impulskauf bei eBay, ich wollte unbedingt eine Native Instruments Maschine, weil ich die Drum-Pads auf ihnen im Vergleich zu denen im MPC-Studio, die ich besaß, immer mochte Ich würde versuchen, es zu reparieren, wobei das Worst-Case-Szenario lautet: "Wenn ich es nicht reparieren kann, habe ich ein Arduino DUE und ein paar UNOs, die herumliegen, ich könnte immer etwas hacken"

Die Drumpads gefallen mir sowieso sehr gut!!!!

Lieferungen

1 x defekte Native Instruments Maschine MK2

1 x Arduino fällig.

17 x SN74HC595 - 8-Bit-Ausgangsschieberegister

6 x SN74HC165 - 8-Bit-Eingangsschieberegister

2 x 74HC4067 - 16-Kanal-Multiplexer.

2 x 3,2 256x64 OLED-Displays.

etwas Flachdraht (altes Floppy-Kabel reicht aus)

Schritt 1: Die Reparatur

Der eBay-Verkäufer war so freundlich, eine Vorstellung davon zu geben, was in der Beschreibung zu erwarten ist, und hatte den USB-Anschluss entfernt. Die Platine hatte eine Überspannung erlitten und ließ sich nicht einschalten. Cue das Multimeter…. Das Board schien einen Kurzschluss zu haben.. 'Ich habe schon unzählige Motherboards mit Shorts repariert Also wie schwer kann es sein!?!' Komponente auf der Platine einschließlich der Haupt-CPU. Diesem Board ging es wirklich schlecht!

Ich fuhr fort, mit meinem Multimeter herumzustochern, ein wenig über die Komponenten zu recherchieren und herauszufinden, was jeder einzelne macht, und NI hat großartige Arbeit geleistet, um die Dinge mit den verschiedenen Testpunkten rund um das Motherboard ziemlich offensichtlich zu machen.

Schritt 2: Der Hack

Der Hack
Der Hack
Der Hack
Der Hack
Der Hack
Der Hack

Da ich wusste, dass ich alles außer der Haupt-CPU ersetzen muss (die nicht benötigt wird), wandte ich mich an eBay. Zum Glück war alles, was benötigt wurde, billig, so dass es Spaß machte, eine Menge davon zu bestellen. ?

17 x SN74HC595 - 8-Bit-Ausgangsschieberegister

Die 17 Ausgangsschieberegister werden verwendet, um die mehrfarbigen LEDs des Drum-Pads und alle Button-LEDs (136 um genau zu sein!) zu steuern. Diese sind wirklich einfach zu bedienen und haben mit der Arduino IDE schnell eine Bibliothek gefunden, um mir die Erstellung zu sparen.. sie sind aneinander gekettet.

6 x SN74HC165 - 8-Bit-Eingangsschieberegister

Diese Eingangsschieberegister eignen sich hervorragend für mehrere Eingänge auf einem Kanal. Es gibt insgesamt 48 Tasten.

2 x 74HC4067 - 16-Kanal-Multiplexer

Wir haben noch 16 Pads und 8 Regler, die ebenfalls analog sind. Ich fand es einfacher, diese zu verwenden, da die auf der Platine 8-Kanal waren und ich Probleme hatte, herauszufinden, wo die Datenpins angeschlossen werden sollten. Cue Spaghetti Junction….

2 x 3,2" 256x64 OLED-Displays

Es muss einige Bildschirme haben !!! Ich konnte keine Informationen zu den Original-LCD-Bildschirmen finden, die in der NI-Maschine enthalten waren, und ich konnte nicht mehr Zeit damit verschwenden, es zu versuchen, also beschloss ich, einige aus China zu bestellen … Ich habe die UG8x8-Bibliothek verwendet, um diese zum Laufen zu bringen. Die neuen Bildschirme waren etwas kleiner als das Original, also habe ich nur die "schlechten Teile" ausgeblendet.

1 x Arduino fällig

Ich hatte das einige Zeit herumliegen und auf ein Projekt gewartet, das für all diese Macht würdig genug war! Es gab ein Problem, auf das ich gestoßen bin. Es scheint, dass einige Revisionen dieser Boards ein Reset-Problem haben, das bedeutete, dass ich manchmal die Reset-Taste drücken musste, um das Ding nach dem Hochladen einer Skizze zum Laufen zu bringen. Dies wurde leicht mit einem 10K-Widerstand behoben (dazu gibt es einen Beitrag im Arduino-Forum).

Schritt 3: Der Code

Ich war wirklich beeindruckt, wie viel Unterstützung es in der Arduino-Community gibt. Das Auffinden von Codebeispielen und Bibliotheken für die verschiedenen Komponenten war wirklich einfach und unkompliziert.

Das USB-Midi zum Laufen zu bringen war einfach und dauerte ein paar Minuten. Die LEDs brauchten einige Zeit und ich musste eine Skizze erstellen, die jeden Pin in 1-Sekunden-Intervallen inkrementell auf HIGH setzt und mir eine Notiz machte. Ich habe ein Array erstellt, das die PIN-Nummern enthielt, um das Codieren zu erleichtern.

Ich habe 2 Bibliotheken erstellt, um mit den Multiplexern zu kommunizieren, eine behandelt die analogen Pads und die andere die Regler. Das war wieder ganz einfach. Ich habe sie angehängt, sie können gerne bearbeiten usw.

Ich wollte einen Sequenzer und die Möglichkeit haben, ohne Computer aufzunehmen. Ich fand einige Informationen zum Konvertieren von BPM in ms und fand eine großartige Arduino DUE-Timer-Bibliothek.

Mit der Timer-Bibliothek konnte ich Leseeingänge und Dinge in Intervallen einstellen:

Pads @ 1ms - Ich habe festgestellt, dass dies die beste Balance zwischen Response- / De-Bounce-Artefakten bietet.

Tasten @ 40ms - Ich habe eine Warteschlangenbibliothek verwendet, damit kein Drücken verpasst wurde.

Die Verarbeitung erfolgt in der Hauptschleife, Sie können nicht zu viel tun, wenn Sie sich in einem Interrupt befinden, da dies das Arduino sperrt.

Midi-Stuff @BPM (in ms) - für das Sequencing wird beim gewünschten BPM eine Funktion aufgerufen, die aktualisiert, welche Noten ETC gespielt werden sollen und den Beatcounter erhöht.

Schritt 4: Fazit

Abschluss
Abschluss

Ich bin mir nicht sicher, was ich hier gemacht habe, aber ich bin ziemlich stolz, die Pads reagieren ausgezeichnet, ich musste mit dem Timing herumfummeln, um die richtige Balance mit Reaktions- und Entprellungsproblemen zu finden. Die Sequenzierung funktioniert großartig und sobald ich die DAW-Unterstützung herausgefunden habe, kann ich dieses Ding vollständig in meinen Workflow integrieren und Dinge in einen Controller einfügen, den ich schon immer wollte! um sich mit C auseinanderzusetzen, Reverse-Engineering zu verstehen und wie Multiplexer, Schieberegister und MIDI-Sequenzierung funktionieren. Ich bin dabei, den Hauptcode weiter zu verbessern und könnte ihn eines Tages als Open-Source-Rhythmusdesigner veröffentlichen.

TIPPS:

Ich habe herausgefunden, wie man den USB-Namen des DUE ändert, indem ich eine der Header-Dateien im Arduino / SAM-Ordner bearbeitet habe.

MIDI-OX ist ein großartiges Tool zum Testen der Midi-Funktionalität

LINKS:

www.usb.org/sites/default/files/midi10.pdf - USB MIDI Spechttps://midi.teragonaudio.com/tech/miditech.htm https://guitargearfinder.com/guides/convert-ms -mi… Einige Informationen zum Konvertieren von BPM in ms

travis-ci.com/SMFSW/Queue - Für Tasteneingaben, damit wir kein Drücken verpassen!

github.com/olikraus/u8g2/wiki/u8x8referenc… - UG8-Bibliothek für LED/LCD-Bildschirme

github.com/ivanseidel/DueTimer/releases - Arduino DUE Timing Lib

www.pjrc.com/teensy/td_libs_Encoder.html - Encoder Lib für den großen Knopf

shiftregister.simsso.de/ - ShiftIn Register lib - Erstellt von Henrik Heine, 24. Juli 2016

forum.arduino.cc/index.php?topic=57636.0 - MIDI-Timecode-Zeug

Empfohlen: