Hi @ all,
ich würde gerne einen Raspberry Pi einsetzen, um MIDI-Daten von externer MIDI-Hardware (Midicontroller-Masterkeyboard ohne eigene Klangerzeugung, z.B. Fatar Studiologic SL880) entgegenzunehmen, im Raspberry Pi zu verarbeiten, und dann die geänderten Daten wieder an andere MIDI-Hardware (externes Soundmodul "Expander", z.B. Roland JV-1010) ausgeben, die dann die Klänge über die Stereoanlage erklingen lässt.
(Nebenbemerkung: Es geht hier NICHT um die Frage "Wie spiele ich eine MIDI-Datei auf dem Raspberry Pi ab". Das ist etwas völlig Anderes und hier nicht relevant.)
Die MIDI-Hardware soll dann entweder über einen MIDI-Adapter (z.B. CME U2MIDI) oder über die serielle Schnittstelle (mittels Spannungspegelanpassung, z.B. auf Basis eines MAX232) angeschlossen werden. Die native Baud-Rate von 38400 bps der seriellen Schnittstelle des Raspberry Pi, so habe ich hier gelesen, lässt sich wohl durch eine Änderung der UART-Clock-Einstellung auf die für MIDI erforderliche Rate von 31250 bps verbiegen, so dass keine externe Baudraten-Anpassung auf Mikrocontrollerbasis mehr erforderlich ist.
Was ich mir bei dem Ganzen so vorstelle, ist prinzipiell so etwas wie die KARMA-Software, die man für verschiedene Keyboards bzw. Synthesizer-Workstations auf karma-lab.com käuflich erwerben kann. KARMA ist ein Akronym, steht für "Kay Algorithmic Realtime Music Architecture" und wird beworben mit "KARMA is an arpeggiator on steroids".
Für den musikalischen Laien: Ein Arpeggiator registriert, welche Tasten am Keyboard gedrückt sind und gibt dann automatisch auf dieser Grundlage unterschiedliche Tonfolgen wieder, und KARMA kann noch deutlich mehr als die Typen UP/DOWN/ALT1/ALT2/Random.
Jetzt habe ich ein paar Fragen:
Die Wahl des hierzu am besten geeigneten Betriebssystems richtet sich nach der Wahl der am besten geeigneten Programmiersprache. Die Anwendung erfordert ein präzises Timing, deshalb würde ich Interpretersprachen wie Python oder Sprachen wie Java, die erst einen ressourcenhungrigen Unterbau benötigen, eher ausschließen. Assembler wäre auf der anderen Seite wieder zu umständlich. Welche Sprache könntet ihr mir hierzu empfehlen?
Meine gegenwärtigen Programmierkenntnisse sind nicht so überragend. In den 80er Jahren habe ich hauptsächlich auf 'nem Commodore C128 in Basic 7.0 programmiert, in den 90er Jahren in AmigaBASIC auf einem Amiga 2000 und in den 00er Jahren etwas in Purebasic auf diversen PCs unter WindowsXP. Außerdem habe ich in die Welt der Mikrocontroller (PIC-Assembler) (PIC, hauptsächlich Typen 12F675, 16F84(A), 16F628(A)) reingeschnuppert. Ich bin also in jedem Fall darauf angewiesen, eine neue Programmiersprache zu lernen und deshalb nach allen Seiten offen.
Mir wäre es am liebsten, wenn man direkt am Raspberry Pi programmieren könnte, so dass man das Programm nicht nach jeder winzigen Änderung erst auf den Raspberry überspielen müsste, um es dort zu testen. Wenn es aber überragende kostenlose CrossCompiler geben sollte, bin ich auch da offen.
Und wenn dann die Frage nach der Entwicklungsumgebung geklärt ist, bleibt noch, welches Betriebssystem sich hier am besten eignet, wobei ich noch anmerken sollte, dass ich Linux-Laie bin und deshalb nicht mit Vorkenntnissen glänzen kann.
Jetzt bin ich mal auf euer Feedback gespannt.
Gruß, Equilibrum
PS: Falls dieser Post nicht im korrekten Verzeichnis steht, dann bitte verschieben.