Motivation
Ich bin in einer Band.
Dort haben wir auch ein altes Roland Drumpad mit Midi-Ausgang rumstehen, dass wir gern zur Wiedergabe von Samples genutzt hätten.
Das funktioniert behelfsmäßig auch mit einem USB-Midi-Adapter und einem PC.
Nun will man ja nicht zu jedem Auftritt einen PC mitschleppen. Viel besser wäre es, das Ganze in einem handlichen Kleingerät zu haben.
Idee
Dann hatte ich die Idee:
Warum nicht den PC durch einen Raspberry ersetzen und das Ganze in ein nettes kleines Gehäuse packen?
Es müsste irgendwie programmierbar sein, also sollte noch ein Display dran und wenigstens ein Knopf.
Ich hatte noch einen Raspberry Pi 3 auf Lager und ein 4×16 Dot-Matrix-LCDisplay. Damit sollte das doch gehen...
Im Normalen Betriebsmodus stellt das Drumpad ja die Eingabeeinheit dar. Um das Ganze programmierbar zu machen, braucht man nur einen Knopf, mit dem man in den Programmiermodus wechseln kann.
Hardware
Das Setup ist also denkbar einfach:
Bei dem Display handelt es sich um ein Standard HD44780-Display mit 4-Bit-Bus, das mit 12 Leitungen an den Raspberry Pi angeschlossen wird:
Anschluss am Display | Funktion | Raspberry-Pin | Raspberry-GPIO |
---|---|---|---|
1 | Masse | 6 | - |
2 | Betriebsspannung (+5V) | 4 | - |
3 | Kontrastspannung (0-5V) | (Poti) | - |
4 | Register Select | 8 | 14 |
5 | Read/Write (Masse = nur-lesen) | 6 | - |
6 | Enable | 10 | 15 |
11 | Data 4 | 12 | 18 |
12 | Data 5 | 16 | 23 |
13 | Data 6 | 18 | 24 |
14 | Data 7 | 22 | 25 |
15 | Beleuchtung + | 4 | - |
16 | Beleuchtung - | 6 | - |
Pin 3 des Displays geht an den mittleren (stellbaren) Pin eines 10kΩ-Potentiometers und dient der Einstellung des Display-Kontrastes. An Pin 24 (GPIO 8) des Raspberry wurde der Taster angeschlossen, dessen anderer Pol an die Masse (Pin 6) geführt ist.
Das Drumpad wurde einfach per Midi-USB-Kabel an einen USB-Port des Raspberry angeschlossen. Derzeit wird der „normale“ 3.5mm Klinkenanschluss für die Audioausgabe verwendet.
Software
Auf dem Raspberry läuft ein normales Raspbian ohne Desktopumgebung. Der Raspi ist so konfiguriert, dass er in die Kommandozeile startet (Command Line Interface, CLI).
Mittels Eintrag in der Datei .bashrc
wird dann ein von mir geschriebenes Python-Programm ausgeführt, welches folgende Funktionen umfasst:
- Wiedergabemodus
- Anschlagen eines Pads des Drumpads (allgemein: Note eines angeschlossenen Midi-Instruments) spielt mittels
aplay
eine zugewiesene Wave-Datei ab - Drücken des Programmiertasters, während der Wiedergabe einer Wave-Datei, stoppt die Wiedergabe (mittels
killall aplay
) - Drücken des Programmiertasters, während kein Wave abgespielt wird, wechselt in den Programmiermodus
- Anschlagen eines Pads des Drumpads (allgemein: Note eines angeschlossenen Midi-Instruments) spielt mittels
- Programmiermodus
- Spielen einer Note blättert durch das aktuell angezeigte Menü
- Spielen einer anderen Note wählt den aktuellen Menüpunkt
- Funktionen
- Laden eines Profils
- Neu-Anlegen eines Profils
- Zuweisen einer Note
- Aufheben der Zuweisung einer Note
- Verwaltung
- Importieren von Wave-Dateien von USB-Sticks
- Auswerfen von USB-Sticks
Die in python geschriebene Software ist quelloffen und liegt bei Github.
Neuen Kommentar hinzufügen