Inhaltsverzeichnis:

Arduino MIDI Rhythm Section Sequencer - Gunook
Arduino MIDI Rhythm Section Sequencer - Gunook

Video: Arduino MIDI Rhythm Section Sequencer - Gunook

Video: Arduino MIDI Rhythm Section Sequencer - Gunook
Video: Arduino 64 Steps Sequencer with minimum hardware, adapted from the Drum Sequencer 2024, Juli
Anonim
Arduino MIDI Rhythm Section Sequencer
Arduino MIDI Rhythm Section Sequencer
Arduino MIDI Rhythm Section Sequencer
Arduino MIDI Rhythm Section Sequencer
Arduino MIDI Rhythm Section Sequencer
Arduino MIDI Rhythm Section Sequencer

Eine gute Software-Drum-Machine zu haben ist heute einfach und billig, aber die Verwendung einer Maus macht mir den Spaß zunichte. Aus diesem Grund wurde mir klar, was ursprünglich als reiner 64-Schritte-Hardware-MIDI-Drum-Sequenzer gedacht war, der bis zu 12 verschiedene Drum-Elemente (Parts) triggern kann, aber dann zu einem Rhythmus-Sektions-Sequenzer entwickelt wurde…

… Na, bitte!

Schritt 1: Wie es funktioniert

Diese Hardware kann selbst keine Sounds erzeugen, sondern nur externe Hardware über MIDI sequenzieren. Das bedeutet, dass Sie einen Soundgenerator für Ihre Drum-Sounds benötigen (einen Sampler oder einen Drum-Synthesizer oder einen PC mit Ihrer bevorzugten Drum-Software oder was auch immer Sie bevorzugen), der durch MIDI-Note-On-Befehle getriggert werden kann.

Es besteht hauptsächlich aus einer 4 x 4-Tasten-Matrix (mit LEDs), eine für jeden Schritt eines Takts. Die gesamte 64-Schritte-Sequenz besteht aus 16 Schritten multipliziert mit 4 Takten. Jeder Schritt ist 1/16 einer Note.

Es gibt zwei Betriebsmodi: Live-Modus und Edit-Modus.

Im Edit-Modus können Sie Ihre Sequenz tatsächlich Schritt für Schritt bearbeiten, indem Sie festlegen, welche Trommel in jedem Schritt gespielt wird.

Ihr externes Hardware-Instrument ("Drum") wird durch Senden einer MIDI-"Note-On"-Nachricht für verschiedene "MIDI-Notennummern" auf Kanalnummer "10" getriggert. Standardmäßig sind diese Notennummern

Drum #1 (d.h. Kick) -> MIDI-Notennummer "60"

Drum #2 (d.h. Snare) -> MIDI-Notennummer "62"

Drum #3 (d.h. Clap) -> MIDI-Notennummer "64"

Drum #4 (d.h. Hihat) -> MIDI-Notennummer "65"

Schlagzeug #5 -> MIDI-Notennummer "67"

Schlagzeug #6 -> MIDI-Notennummer "69"

Schlagzeug #7 -> MIDI-Notennummer "71"

Schlagzeug #8 -> MIDI-Notennummer "72"

Drum #9 -> MIDI-Notennummer "74"

Schlagzeug #10 -> MIDI-Notennummer "76"

Schlagzeug #11 -> MIDI-Notennummer "77"

Schlagzeug #12 -> MIDI-Notennummer "79"

Sie können diese Werte (und den MIDI-Kanal) in der Skizze ändern, wenn Sie möchten.

Im Live-Modus können Sie durch Drücken der Step-Tasten live Schlagzeug spielen, das jedem Step zugeordnet ist, indem Sie MIDI-Meldungen seriell senden. Sie können Ihre Tastendrücke und/oder eingehenden MIDI-Meldungen live aufzeichnen.

Sowohl im Live- als auch im Edit-Modus können Sie eine Trommel stummschalten (oder die Stummschaltung aufheben), die aktuell aktive Trommel "rollen" und Ihre Sequenz "schwingen".

Rhythmusgruppe?

Die meisten Drum-Sequenzer sind reine MIDI-Drum-Parts-Trigger mit einer festen MIDI-Notennummer für jeden Drum-Sound. In diesem Fall haben wir einen "Rhythm Section Sequencer" mehr als einen reinen "Drum Sequencer", da man sogar Synthesizer sequenzieren kann.

Lesen Sie die SCHNELLSTARTANLEITUNG für weitere Details und eine vollständige Liste der Funktionen.

Schritt 2: Hardware

Hardware
Hardware
Hardware
Hardware
Hardware
Hardware

Dieses Projekt wird um ein Arduino DUE Board herum realisiert. Ich habe versucht, die Hardware so einfach wie möglich zu halten, d.h. durch den Verzicht auf LED-Treiber. Arduino DUE ist aufgrund seiner Ausgangsstromgrenzen (von 5 mA bis 15 mA, je nach Pin) wahrscheinlich nicht das am besten geeignete Board, um eine Reihe von LEDs ohne LED-Treiber zu handhaben, aber es ist das schnellste Arduino und Timing ist alles, wenn es um den Umgang geht mit Sequenzern. Denken Sie also daran, dass DIESE Hardwarekonfiguration Ihr Arduino DUE wahrscheinlich an seine Grenzen bringt und es langfristig beschädigen könnte.

Davon abgesehen besteht die Hardware hauptsächlich aus einem Sequenzer mit 16 Tasten, 16 LEDs (eine für jeden Schritt) mit 5 zusätzlichen Tasten für Funktionen und 3 Potentiometern. Ich habe auch eine rote LED hinzugefügt, nachdem ich eine Live-Aufnahmefunktion hinzugefügt habe.

Hier die Stückliste:

- 1x Arduino DUE

- 16x kurzzeitige, nicht einrastende Drucktasten mit integrierten LEDs (Sie können externe LEDs verwenden, wenn Sie möchten, aber denken Sie daran, LEDs mit geringer Leistung zu verwenden!)

- 1x rote LED (geringe Leistung!)

- 5x kurzzeitige, nicht einrastende Drucktasten

- 3x 10K Singleturn, linear, Potentiometer

- 3x 6,5 mm Mono-Klinkenbuchse für Einbaumontage

- 1x Kunststoffkoffer (ich habe einen 190x140x70 mm Koffer verwendet)

- 2x 5-polige DIN-Buchse für Schalttafeleinbau (MIDI)

- 1x doppelseitiges 70x90 mm Lochbrett

- 2x 40 Pin Stiftleiste einreihig (2,54 mm), besser vergoldet

- 1x H11L1 Optokoppler

- 1x 1N4148 Diode

- 23x 1000 Ohm Widerstände

- 3x 220 Ohm Widerstände

- 2x BC547 pnp-Transistoren

… Lötdraht, einige Kabel, Lötstation, ein Bohrwerkzeug… und Freizeit:)

Bitte beachten Sie, dass die Knöpfe auf den Bildern wegen des unverschämten Prellens durch eine andere Art von (noch billigeren …) Druckknöpfen ersetzt wurden…

Zeitaufwand für das Projekt: 8 - 10 Stunden

WARNUNG: Tragen Sie beim Bohren IMMER Schutzbrille und Handschuhe! Heiße Materialschuppen können auf Ihre Augen geschleudert werden oder mit Ihrer Haut in Kontakt kommen und bei Ihnen oder Ihren Mitmenschen Verbrennungen oder noch schwerwiegendere Schäden verursachen

Schritt 3: Verkabelungen

Verkabelung
Verkabelung
Verkabelung
Verkabelung
Verkabelung
Verkabelung

Schritttasten sind direkt mit Arduino-Pins von 22 (Schritt 1) bis 37 (Schritt 16) verbunden. Die Tastenmasse ist verkettet und mit der Arduino DUE-Masse verbunden. Es sind keine Pullup- oder Pulldown-Widerstände erforderlich, da Arduino-integrierte Pullup-Widerstände softwarefähig sind (siehe Skizze).

Das gleiche gilt für die zusätzlichen 5 Tasten (Arduino-Pins 2, 3, 4, 5 und 6), die für andere Funktionen als Schritte verwendet werden. Parallel zum "Start"-Knopf habe ich auch eine 6,5 mm Klinkenbuchse gelegt, um meine Sequenzen aus der Ferne abspielen und stoppen zu können.

LEDs sind mit Masse (Daisy Chain) und Arduino DUE-Pins von 38 (Schritt #1) bis 53 (Schritt #16) in Reihe mit jeweils einem 1K Ohm Widerstand verbunden, um die Stromaufnahme zu begrenzen und den Mikrocontroller zu schonen.

Potentiometer werden wie im beigefügten Bild gezeigt angeschlossen. Beachten Sie, dass die Referenzspannung 3,3 V beträgt, nicht 5 V. Verwendete Eingänge sind A0, A1 und A2.

Ich habe auch zwei Trigger-Ausgänge für Arpeggio-Signale implementiert, wie sie zum Arpegiieren von alten 80er-Synths wie dem Korg Polysix und Roland Juno 6/60 erforderlich sind. Sie sind mit den Pins A3 und A4 verbunden, aber Sie können digitale Pins verwenden, wenn Sie digitale Signale bevorzugen. Falls Sie einen Synthesizer sequenzieren wollen, der mit V-Trig (Spannungstrigger)-Signalen kompatibel ist, reicht ein 1k Ohm Serienwiderstand aus, um die Stromaufnahme zu reduzieren; Im Falle eines S-Trig (Switch Trigger) Synthesizers benötigen Sie eine einfache pnp-Schaltung (siehe beigefügtes Schema).

MIDI IN und OUT Schaltungen sind in den beigefügten Bildern schematisiert. Beachten Sie, dass im Gegensatz zu den meisten Arduinos Rx1 und Tx1 standardmäßig auf DUE-Boards anstelle von Rx0 und Tx0 verwendet werden. Dies ist großartig, da Sie Ihre Skizze hochladen können, ohne Rx jedes Mal trennen zu müssen. Beachten Sie auch, dass ich einen H11L1-Optokoppler verwendet habe, da ich nicht in der Lage war, einen gemeinsamen 6N138 innerhalb der Arduino DUE 3.3V-Grenze so zu betreiben, wie es sollte.

Schritt 4: Software

Die Skizze wurde in der Arduino IDE geschrieben und muss auf Ihr Arduino DUE Board hochgeladen werden. Ich werde nicht näher darauf eingehen, wie Sie die Skizze auf Ihr arduino DUE hochladen. Wenn dies Ihre erste Erfahrung mit Arduino DUE ist, lesen Sie dies. Wenn dies Ihre erste Erfahrung mit arduino IDE ist, lesen Sie dies bitte auch.

Sie können die aktualisierte Firmware HIER herunterladen (github link).

Der Sketch basiert auf der exzellenten FortySevenEffects MIDI Library. Sie müssen die Bibliothek in Ihrer Arduino-IDE installieren.

Jeder Trommel zugewiesene MIDI-Ausgangsnoten werden durch die Variable drumNote[STEPS_NUM] im Sketch definiert. Sie können sie nach Belieben ändern.

Die MIDI-Ausgangskanalnummer für Schlagzeug ist standardmäßig auf "10" eingestellt.

Ich bin im wirklichen Leben kein Programmierer und es gibt sicherlich bessere Möglichkeiten, das zu codieren, was wir hier brauchen. Wenn Sie ein Coder mit Vorschlägen sind, sind Sie herzlich willkommen! Bitte senden Sie mir alle Variationen, die die Effizienz / Effektivität des Codes erhöhen können, und ich werde sie in den Hauptentwurf aufnehmen (natürlich unter Berufung auf den Mitwirkenden!).

Schritt 5: Kurzanleitung

TROMMELN: SCHRITT-FÜR-SCHRITT-ABFOLGE

Sobald Sie Ihren Sequenzer einschalten (oder zurücksetzen), wird eine leere Sequenz geladen. Der Sequenzer startet im Edit-Modus, wobei der erste Takt gehalten/gesperrt und die erste Drum (d. h. Kick) ausgewählt ist. Das bedeutet, dass Sie durch Drücken einer beliebigen Step-Taste diesen Steps sofort "Kick" zuweisen. Die Lautstärke, mit der die Trommel getriggert wird, wird durch die Position des "Volume"-Potentiometers eingestellt, wenn die Trommel dem Step zugewiesen wird. Durch erneutes Drücken einer zuvor zugewiesenen Step-Taste heben Sie die Zuweisung des aktuellen Schlagzeugs für diesen Step auf.

Wenn Sie die "Start"-Taste drücken, sehen Sie, wie Ihre LEDs von links nach rechts und von oben nach unten laufen und jedes Mal "Kick" spielen, wenn ein Kick-Schritt gekreuzt wird.

Wenn Sie die "Shift"-Taste gedrückt halten, sehen Sie die LED für den 1. Schritt in der 1. Reihe eingeschaltet (dh die erste Trommel ist ausgewählt) und die LED für den ersten Schritt in der vierten Reihe (dh Sie sind auf den ersten Takt gesperrt). Sie können nun die Trommel, die Sie sequenzieren möchten, ändern, indem Sie eine andere Step-Taste drücken, während Sie "Shift" gedrückt halten. Nachdem Sie die neue Trommel ausgewählt haben, lassen Sie "Shift" los. Alle LEDs erlöschen (weil Sie die neue Drum keinem Step zugewiesen haben) und Sie können beginnen, die neue Drum Steps zuzuweisen. Wiederholen Sie dies für alle benötigten Trommeln (bis zu 12).

Nachdem Sie nun ein schönes Muster erstellt haben, halten Sie "Shift" gedrückt und schalten Sie den hervorgehobenen Schritt in der unteren Reihe aus (es sollte der 1. Schritt der 4. Reihe sein, wenn Sie das gleiche Layout wie ich verwendet haben): Sie haben nur " entsperrt" die Sequenz, die nun über alle 4 Takte läuft. Die unteren Raw-LEDs beginnen sich zu „bewegen“und zeigen an, welcher Takt gerade gespielt wird (Taktverlauf). Sie werden feststellen, dass nur im ersten Takt eine Sequenz abgespielt wird, während alle anderen 3 Takte keine Klänge erzeugen. Dies liegt daran, dass Sie nur dem ersten Takt Schlagzeug zugewiesen haben, während die anderen leer bleiben. Sie können sie von Hand füllen (wählen Sie einen neuen Takt durch Drücken einer der letzten 4 Step-Tasten bei gedrückter "Shift"-Taste, wählen Sie eines der Drums, füllen Sie die Steps usw. usw.) oder kopieren Sie die erstellte Taktsequenz und fügen Sie sie ein zu allen Takten, indem Sie in den Edit-Modus gehen (wieder auf den ersten Takt sperren) und "Record" drücken (was jetzt die "Paste"-Funktion übernimmt) während Sie "Shift" gedrückt halten. Leichter gemacht als gesagt.

DRUMS: LIVE-SPIELMODUS

Beim Start befindet sich der Sequenzer im Edit-Modus. Um den Bearbeitungsmodus zu verlassen, müssen Sie "Shift" gedrückt halten und die aktuell gehaltene/gesperrte Balkentaste drücken (die Step-Taste in der 4. Reihe ist eingeschaltet). Dadurch wird die LED der zuvor gesperrten Leiste ausgeschaltet und die Sequenz entsperrt. Sie befinden sich jetzt im Live-Play-Modus.

Im Live-Play-Modus wird durch Drücken einer beliebigen Step-Taste die dieser Taste zugeordnete Drum getriggert.

Wenn Sie Ihre Sequenz live aufnehmen möchten, starten Sie die Sequenz durch Drücken von "Play" und drücken Sie dann die Taste "Record" (nur im Live-Play-Modus). Eine rote LED leuchtet auf. Ihr Spiel auf der Matrix des Drum-Sequencer-Bedienfelds oder jede eingehende MIDI-Note-On-Nachricht (d. h. von einem externen MIDI-Keyboard) wird aufgezeichnet.

Andere Funktionen

Durch Drücken der "Roll"-Taste wird die aktuell aktive Trommel bei jedem Schritt (in einer Rolle) gespielt. Dies funktioniert sowohl im "Schritt-für-Schritt"- als auch im "Live-Play"-Modus.

Durch Drücken einer beliebigen Step-Taste, während die "Mute"-Taste gedrückt gehalten wird, wird die diesem Step zugeordnete Drum stummgeschaltet (oder die Stummschaltung aufgehoben). Dies funktioniert sowohl im "Schritt-für-Schritt"- als auch im "Live-Play"-Modus.

Sie können eine bestimmte Drum-Sequenz löschen, indem Sie die entsprechende Step-Taste drücken, während Sie die "REC"-Taste gedrückt halten.

Sie können die gesamte Sequenz (Soft-Reset) löschen, indem Sie die "Start"-Taste länger als 3 Sekunden gedrückt halten.

Sie können Ihre Sequenz "swingen", indem Sie das "Swing"-Potentiometer drehen.

Sie können MIDI-Echo deaktivieren/aktivieren, indem Sie die "Mute"-Taste drücken, während Sie die "Shift"-Taste gedrückt halten. Wenn MIDI-Echo aktiviert ist (Standard), werden alle an der MIDI INPUT-Buchse anliegenden Informationen an die MIDI OUTPUT-Buchse gesendet (nur MIDI Note On, Note Off, Pitch Bend, Aftertouch und Control Change werden ausgegeben).

Sowohl der MIDI-Clock-Eingang als auch der MIDI-Ausgang sind standardmäßig implementiert und aktiviert. Falls kein Clock-Eingang empfangen wird, wird das Tempo mit dem dedizierten Potentiometer eingestellt. Falls ein MIDI-Clock-Eingang empfangen wird, wird das Tempo daraus berechnet und das Tempo-Potentiometer reagiert nicht. MIDI-Clock wird immer an den MIDI-Ausgang gesendet.

Schritt 6: Rhythmus-Sektion

Die ursprüngliche Idee war ein "reiner" 64 Steps MIDI Drum Sequencer, um bis zu 12 unabhängige Drum-Parts zu sequenzieren. Nach einigen Tests stellte ich fest, dass es schön gewesen wäre, auch eine Basslinie zu steuern, und habe die Funktion einer variablen Tonhöhe pro Schritt nur der neuesten Trommel zugewiesen. Danach habe ich den Code noch einmal modifiziert, sodass ich die Tonhöhe in jeder Trommel ändern und bis zu 12 Synthesizer steuern konnte. Eine Überarbeitung später habe ich Polyphonie hinzugefügt (Polyphonie pro Synth ist standardmäßig auf 3 beschränkt).

Um zusammenzufassen:

- Im LIVE-Modus, wenn die LIVE-Aufnahme aktiviert und die Sequenz gestartet ist, können Sie eingehende MIDI-Note-On-Meldungen polyphon aufnehmen. Tonhöhen- und Lautstärkeinformationen werden gespeichert. Pitchbend- und Aftertoutch-Infos gehen verloren. MIDI-Control-Change-Meldungen werden gespeichert. Denken Sie daran, dass Sie nur einen CC-Steckplatz pro Kanal und Schritt haben.

- Wenn die Sequenz gestoppt ist, können Sie bis zu 3 Tonhöhenwerte (Akkord) zu einem bestimmten Schritt eines bestimmten Takts aufzeichnen, indem Sie die Zielschritttaste gedrückt halten und (gleichzeitig oder nacheinander) die gewünschten Tasten auf dem Tastatur, die an den MIDI IN-Port angeschlossen ist.

Beachte das:

- Die auf einem Step getriggerte Note wird beim nächsten Step "getötet". Um die Notenlänge zu erhöhen, wirken Sie auf den "Release"-VCA-Parameter Ihres Synthesizers.

- Im Gegensatz zum Schlagzeug können Noten nicht in einer Rolle durch Drücken der "Roll"-Taste gespielt werden.

- Beim Aufnehmen von LIVE werden die eingehenden MIDI-Kanaldaten im entsprechenden "Drum"-Schritt gespeichert (MIDI-Kanal #1 -> "Drum" #1 usw.).

Sie können eine bestimmte Synthesizer-Sequenz löschen, indem Sie die entsprechende "Drum"-Step-Taste drücken, während Sie die "REC"-Taste gedrückt halten. Durch erneutes Drücken wird auch die Schlagzeugsequenz gelöscht. Wenn eine CC-Sequenz aufgenommen wurde, wird diese zuerst gelöscht, dann folgen Sie der Reihenfolge CC -> Synth -> Drum

Schritt 7: Arpeggio-Trigger

Pre-MIDI-Synths der frühen 80er Jahre sind oft mit einem manchmal als "Arpeggio-Trigger-Eingang" bezeichneten Eingang ausgestattet. Durch Senden eines 2,5 bis 5,0 V-Triggersignals (V-Trig oder "Spannungstrigger") oder durch Erden des Arpeggio-Trigger-Eingangs (S-Trig oder "Switch Trigger") können Sie dem Synthesizer sagen, dass er einen Schritt in einer Arpeggio-Sequenz vorrücken soll. Dies könnte mit einem Sequenzer ohne einen dedizierten Trigger-Ausgang schwierig sein (manchmal "Rimshot" -Sounds von einem dedizierten Ausgang, wo/werden als Hilfsmittel für V-Trigger-Synths verwendet), aber mit einer Mikrocontroller-Platine können Sie solche Signale und Steuerungen leicht verwalten Ihr Synthesizer-Arpeggio, wie es von der Fabrik vorgesehen war.

Dieser Rhythmussektions-Sequenzer bietet die Möglichkeit, den Arpeggiator von zwei verschiedenen Synthesizern unabhängig voneinander zu triggern.

Die Bedienung ist ganz einfach: Wählen Sie Drum 11 oder 12 (drücken Sie Step 11 oder 12 während Sie "Shift" drücken) und aktivieren Sie die Steps, die der Arpeggiator um einen Step bewegen soll. Auf diese Weise können Sie durch Aktivieren aller Steps sehr enge 1/16-Noten-Längen-Arpeggios "programmieren", oder 1/8 durch Aktivieren jedes anderen Steps. Darüber hinaus können Sie komplexere Arpeggios programmieren, indem Sie Schritte aktivieren, die einem unregelmässigen Pfad folgen.

Abhängig vom Triggersignaltyp, der von dem zu steuernden Synthesizer unterstützt wird, benötigen Sie eine einfache Hardware-Modifikation: Im Falle von V-Trig (z. Im Falle eines S-Triggers (z. B. Korg-Synths) verwenden Sie den Schaltplan, der dem "Verdrahtungsschritt" beigefügt ist, für einen sicheren Schaltertrigger.

Schritt 8: Wenn die Dinge nicht funktionieren …

Selbst ein relativ einfaches Projekt wie dieses wird beim ersten Einschalten höchstwahrscheinlich nicht zu 100% funktionieren. Hier ist zum Beispiel die Übereinstimmung zwischen Tasten und LEDs entscheidend, und eine unüberlegte Verkabelung macht den Sequenzer unbrauchbar.

Um all die verschiedenen Komponenten zu testen, aus denen der Stepsequenzer besteht, habe ich eine einfache Testskizze geschrieben (siehe Anhang).

Die neueste Test-Firmware können Sie HIER herunterladen (GitHub-Link).

Die Testskizze funktioniert wie folgt:

- Drücken Sie eine Step-Taste: Die entsprechende LED sollte aufleuchten und ein MIDI-Note-On auf Kanal 10 wird an den MIDI-Ausgang gesendet.

- Drücken Sie eine Funktionstaste: Eine der ersten 5 LEDs leuchtet auf.

- Potentiometer drehen: LEDs leuchten entsprechend (erster Pot -> erste LED-Reihe, zweiter Poti -> zweite LED-Reihe, dritter Poti -> dritte LED-Reihe).

- Wenn eine MIDI-Note empfangen wird, blinkt die erste LED.

Beachten Sie, dass MIDI-Echo standardmäßig aktiviert ist. Dies bedeutet, dass dies zu Problemen führen kann, wenn Sie eine MIDI-Loop zwischen einem Synthesizer und MRSS haben (ich habe meistens eine vorhersehbare doppelte Note ausgelöst, aber auch sehr tiefe Noten ausgelöst und eine im Allgemeinen nicht reagierende eingebaute Tastatur bei Synths mit MIDI out als MIDI Throu fungieren … es hängt vom Synthesizer ab). Wenn dies der Fall ist, deaktivieren Sie das MIDI-Echo, indem Sie die "Mute"-Taste drücken, während Sie die "Shift"-Taste gedrückt halten.

Empfohlen: