Raspberry Pi 3 als Midi-gesteuerten Sample-Player verwenden

Raspberry Pi 3 als Midi-gesteuerten Sample Player verwenden

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:

Midi-Sampler: Blockdiagramm

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
  • 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.

Add new comment

Restricted HTML

  • Allowed HTML tags: <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • Lines and paragraphs break automatically.
  • Web page addresses and email addresses turn into links automatically.