Forum: Projekte & Code MIDI Merger Hilfe weiss nicht weiter


von Oliver (Gast)


Lesenswert?

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

von Mano W. (Firma: ---) (manow)


Lesenswert?

http://www.ucapps.de/ siehe MIDImerge, allerdings mit PIC's

von Oliver (Gast)


Lesenswert?

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

von Mano W. (Firma: ---) (manow)


Lesenswert?

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

von Oliver (Gast)


Lesenswert?

Schade schon wieder nur PIC'S

giebt es sowas nicht mit ATmegas?

HILFE

Gruß
Oliver

von Peter D. (peda)


Lesenswert?

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

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

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
Noch kein Account? Hier anmelden.