grundsätzliche Fragen zum Raspberry Pi hinsichtlich MIDI-Daten-Verarbeitung

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

  • Eine gute Wahl wäre dann C oder C++. Die ist schnell und der Pi liefert alles mit was du brauchts. Wenn ich mich nicht irre istbeine IDE vorinstalliert. gcc/g++ sind auf jedenfall oben

    Es gibt KEINE dummen Fragen!


  • Eine gute Wahl wäre dann C oder C++. Die ist schnell und der Pi liefert alles mit was du brauchts. Wenn ich mich nicht irre istbeine IDE vorinstalliert. gcc/g++ sind auf jedenfall oben


    Hi, erstmal vielen Dank für die Info. Jetzt ist immer noch die Frage offen, welches Betriebssystem ich hierzu am besten verwenden soll. Auf jeden Fall sollte es "anfängertauglich" sein und zunächst mal "out-of-the-box" laufen. Ich möchte - bildlich gesprochen - wenn ich ein Fernsehgerät kaufe, dann nicht erst zum Lötkolben greifen müssen, um die Tagesschau ansehen zu können.


    Bei raspberrycenter.de werden u.a. die folgenden genannt:


    1.Unix-artige Systeme, u.a.
    •Android 4 "Ice Cream Sandwich"
    •Arch Linux ARM
    •Bodhi Linux
    •Debian ARM (Linux)
    •Fedora Remix (Linux)
    •Firefox OS (Linux-basiert)
    •FreeBSD neu
    •Gentoo (Linux)
    •Meego MER (Linux-basiert)
    •NetBSD neu
    •OpenELEC (Linux-basiert)
    •Puppy (Linux)
    •QtonPi (Linux)
    •Raspbian (Linux)
    •Raspbmc (Linux-basiert)
    •XBMC (Linux-basiert)
    2.sonstige Systeme, u.a.
    •RISC OS


    Für welches sollte ich mich unter Berücksichtigung meines Anwendungsfalls entscheiden, und vor allem warum?


    Es wird wahrscheinlich auf irgend ein Linux rauslaufen. Kann mir jemand hierzu eventuell ein gutes und gleichzeitig aktuelles Buch / Tutorial / Website nennen, wo ich die Grundzüge von Linux kennenlernen kann. Seit Mitte/Ende der 90er Jahre habe ich nämlich nur noch mit verschiedenen Windows-Systemen gearbeitet (3.11, 95, 98, 2000, XP, 7) und ich kenne Linux nur vom "anderen Leuten mal schnell über die Schulter schauen", habe es aber noch nie selbst verwendet, bin aber lernwillig.

  • Am ende wird es wohl raspbian (debian stable, hard/soft float variante) hinauslaufen. du kannst natürlich natürlich auch ARCH/Pidora und co nehmen aber den meisten Support wirst du für debianbasierte System erhalten. Von den Media-distris (raspbmx, openelec, xbian) rate ich in deinem Fall ab ;).


    Wiki Ubuntuusers ist eine der besten deutschen Zusammenfassungen für (debianbasiertes) Linux.


    Ich gebe noch zu Bedenken das Pi kein Echtzeitbestriebssystem hat, was Zeitkritische anwendungen erschwert.

    Quote


    Another thing that might impact real-time performance is that the Pi does not have a vectorized interrupt controller. Compared to other systems with such a controller then IRQ latencies will be higher, which could impact real-time performance, depending on the application. It is only really a problem if you use many different interrupts, and they are inside the critical path of your RT requirement.


    This means that all IRQs on the Pi goes to the same handler function (with the exception of FIQ). This handler function would then need to determine which IRQ was triggered by polling status registers. This all takes time, though if only few interrupts are in use, then this time might be minimal. A vectorized controller will be able to resolve this in hardware, reducing the software latency of the interrupt.

    Der Unterschied zwischen Genie und Wahnsinn definiert sich im Erfolg.

    Edited once, last by dbv ().

  • Hallo Leute,


    nehmt es mir nicht übel wenn ich den Beitrag hier wieder ausgrabe, aber ich verfolge ähnliche Ziele(?) wie der TE.


    Bitte nicht übel nehmen wenn ich nicht gleich etwas verstehe, das ist mein erster Beitrag in diesem Forum und ich RPi-Neuling.


    Ich habe ein Master-/Midikeyboard (Kawai VPC1) und das spielt via Midi oder USB virtuelle Piano Software.
    Da ich aber nun nicht immer den Großrechner zum Spielen anmachen möchte, hatte ich mir gedacht das wäre aus mit dem RPi möglich.


    Ich habe mir hierzu folgende Gedanken gemacht:


    1.
    Ein Anschluss des Keyboards an den RPi könnte via USB erfolgen und die Soundausgabe dann über den RPi internen Audioausgang.
    Dazu müsste allerdings iwie die Software laufen und der RPi Sound soll wie ich gelesen habe sehr stör-/ rauschanfällig sein.
    Somit hatte ich diese Möglichkeit bereits ausgeschlossen.


    2.
    Gleiches Set-up und gleiches Ergebnis wie 1., nur dass das Keyboard via Midi an mein Audiointerface angeschlossen wird und dieses wiederum an den RPi.


    3.
    Anschluss des Keboards per Midi an den RPi mit einer Midi-Erweiterungsplatine (? ich meine das iwo im Web gesehen zu haben) und Soundausgabe via USB an mein Audiointerface.


    4. Gleiches Set-up wie 3. nur das der Sound dann digital an mein Audiointerface weiter gegeben wird. (https://www.hifiberry.com/digiplus/)


    5. Anschluss des Keyboards an das Audiointerface via Midi. Das Audiointerface wird wiederum via USB an den RPi angeschlossen und der Sound wird wie bei 4. per Erweiterungsplatine wieder an das Audiointerface weitergegeben.


    Ich habe leider keine Ahnung wie und ob ich das realisieren kann, aber ich bin für jede Hilfe dankbar.


    Liebe Grüße
    v4nity

  • Hallo!

    Ich hoffe, der Thread ist noch nicht tot!


    Ich bin neu hier, aber begeisterter RPi-Fan.


    Ich möchte ein RPi Masterkeyboard bauen, wobei die Klangerzeugung geklärt (Zynzhian) ist.

    Mir gehts also nur um Midi rein, analysieren, und dann Midi raus, wobei die veränderten Daten aus einer Excel-Tabelle stammen sollen.


    Wenn Ihr Ideen/Erfahrung habt, wäre das prima!


    Schönes WE.

    Micki

  • Ich hoffe, der Thread ist noch nicht tot!

    der ist seit fast 5 Jahren "tot", aber Du hast einen eigenen Thread (Thema) angelegt.

    Das ist in diesem Forum erwünscht, damit sind alle "Antworten" auf dieses (Dein) Thema bezogen.

    Schönen Gruß, kle