Guten Morgen.. gibt es eigentlich einen MIDI-Merger mit einem AVR ? Finde den auf ucapps.de zwar schon ganz interessant, nur fehlt mit der Progger für die PIC´s. Das Ding kostet ja soviel wie ein gebrauchter Merger !! Kennt jemand einen Link für Merger mit AVR. Gruß aus Berlin Ingo
also mit den 4p-typen (mega164p oder kleiner) ist das kein thema, da diese über 2 uarts verfügen. auch andere typen mit 2 uarts sollten kein thema sein. eine sw uart dürfte schon deutlich schwieriger werden.
TheMason schrieb:
> also mit den 4p-typen (mega164p oder kleiner) ist das kein thema,...
.....für mich schon, Komme mal gerade so mit einem UART klar.
Wie ist da die Vorgehensweise? Könnte jetzt natürlich die beiden UARTs
ständig abfragen und sie auf die OUT Buchse leiten, aber ich darf ja die
zusammengehörigen Datenpakete nicht zerstückeln wenn jetzt gleichzeitig
Daten an den INs eintreffen.
2 uarts für midi baudrate initalisieren, 2 rx-interrupts um beide datenströme zu empfangen (empfangsfifo), 1 tx interrupt um den auszugebenden datenstrom interruptgesteuert auszugeben und eine kleine logik die die einkommenden pakete (sortiert) in den ausgabepuffer schreibt. fertig :-)
TheMason schrieb: > eine kleine > logik die die einkommenden pakete (sortiert) in den ausgabepuffer > schreibt. fertig :-) Da ist für mich das Problem..wie sortiere ich die Daten. Angenommen auf Eingang 1 kommt ein $C0, 00 (Prg. Change ) und auf Eingang 2 kommt ein $90,55, 127 (Key on). Wie verhindere ich, dass dann z.B. ein $C0,90,00,55,127 ausgegeben wird, womit dann der Emfänger ja nun gar nichts angfangen kann.
ganz einfach : du schreibst dir eine routine die in abhängigkeit von der länge des befehls die enstprechende anzahl an bytes in deinen ausgabebuffer kopiert. beispiel : buffer 1 : 90 34 45 b0 12 34 c0 45 80 23 12 buffer 2 : b0 45 46 90 40 30 b0 45 34 c0 00 buffer 1 hat 90 -> 3 bytes ausgabe buffer : 90 34 45 buffer 2 hat b0 -> 3 bytes ausgabe buffer : 90 34 45 b0 45 46 buffer 1 hat b0 -> 3 bytes ausgabe buffer : 90 34 45 b0 45 46 b0 12 34 buffer 2 hat 90 -> 3 bytes ausgabe buffer : 90 34 45 b0 45 46 b0 12 34 90 40 30 usw. du müsstest dann nur noch vorm kopieren eines pakets prüfen ob das paket auch schon komplett da ist. etwas komplizierter ist es mit dem running status (wenn das die korrekte bezeichnung ist), aber das sollte auch kein thema sein. schwieriger wirds erst wenn du sys-ex daten verwalten bzw umschalten mußt. da diese daten sehr groß sein können und du während auf einem port sys-ex daten laufen der andere puffer dann entsprechen überlaufen kann ist es sinnig bei sys-ex den jeweils anderen port auszuschalten (bzw eben keine daten mehr in den ausgabpuffer zu schreiben).
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.