Hallo an Alle, Ich suche einen Source Code oder Beispiel, wie ich zwei oder mehr MIDI-In auf einen MIDI-Out Mergen kann. Es müsste theoretisch mit einem ATmega8 oder 16 mit Ringpuffer gehen. Ich find aber keinerlei Hilfen oder Beispiele im I-Net. Eine Funktion um Zwei MINI-In's zu lesen ist relativ einfach, habe ich auch schon auf einem ATmega128 mit STK500 programmiert. Komme jedoch bei der Merger Funktion absolut nicht weiter. Da beide MINI-In jeder Zeit senden können und die Daten nicht verloren gehen dürfen. Weis ich nicht wie ich beide Datenströme so koppeln kann, dass sie auf einem MIDI-Out richtig ausgegeben werden. Bitte um Hilfe (kurz vor der Verzweifelung) MFG Oliver
Hallo Mano Wee, Na ja, tolle Hard und Software. Ich möchte ungern die Hardware auf PIC's aufbauen, da ich alles für Atmega geplant habe und auch die nötige Hardware bereits besitze. Des Weiteren steige ich durch den asm code überhaupt nicht durch. trotzdem danke. vielleicht hat ja doch jemand was für die ATmegas's in C. MFG Oliver
Hallo, bei denen gibt's auch ein Forum, vllt kann dir da ja einer helfen. http://forum.midibox.org/ http://www.midibox.org/forum/index.php/board,18.0.html (deutsch) Gruß MW
Oliver wrote: > Eine Funktion um Zwei MINI-In's zu lesen ist relativ einfach, habe ich > auch schon auf einem ATmega128 mit STK500 programmiert. Du kannst auch den ATmega162 nehmen, der hat auch 2 UARTs. > Da beide MINI-In jeder Zeit senden können und die Daten nicht verloren > gehen dürfen. Weis ich nicht wie ich beide Datenströme so koppeln kann, > dass sie auf einem MIDI-Out richtig ausgegeben werden. Dazu mußt Du Dich informieren, wie das MIDI-Protokoll aufgebaut ist. Und dann einfach prüfen, wenn ein Paket zuende ist, ob auf dem anderen Kanal schon Daten reingekommen sind und dann umschalten. Du mußt also nur die Pakete wechselseitig senden, solange in beiden Puffern was ist. Peter
MIDI-Befehle haben eine recht klare Struktur. Dein Programm muß zuallererst sämtliche Daten auf beiden Kanälen einsammeln. Dann muß es in Echtzeit prüfen, ob ein kompletter MIDI-Befehl im Puffer angekommen ist. Dann muß es schauen, ob gerade eine Ausgabe stattfindet. Wenn ja, muß der Befehl weiter gespeichert bleiben und gewartet werden, bis die Ausgabe frei ist. Dann muß der Befehl komplett ausgegeben werden. Beide Kanäle müssen wechselseitig die Ausgabepriorität bekommen, wenn auf beiden Kanälen Befehle eigetrudelt sind. Es ergibt sich dann eine Latenz von einer Befehlslänge. Nicht geeignet ist diese Topologie, wenn viele Daten an einem Stück, zum Beispiel SysEx-Blöcke übertragen werden müssen, da diese nicht unterbrochen werden können. Dein Programm muß diese Befehle, wenn nötig, ausmaskieren.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.