Ich hätte eine Frage zu dem Thema: Beitrag "Midi Empfangen mittels Atmega 8 und Bascom" möchte aber den thread nicht kapern: Wie läuft das bei MIDI? Kommen die Daten permanent? D.h. kann man davon ausgehen, immer einen Takt vom MIDI-Gerät zu bekommen, auch wenn das gerade nichts funkt, weil keine Taste gedrückt wird? Oder ist das vollkommen asynchron und pulsed nur, wenn was kommt? Ich möchte nämlich meinen MIDI-Ausgang auf den Eingang synchronisieren und habe Befürchtungen, dass mir der Ausgang wegläuft, wenn Ich intern einmal synche und dann mit der internen Rate weiterlaufe und irgendwann dann mal ein neues Eingangsdatum in einer Phase kommt, das nicht zum Ausgang passt. Wie synche Ich dann? Ich kann ja schlecht den Datenstrom aus Ausgang unterbrechen. Höchstens in einer Sendepause, aber davon wird es wenige geben. Ich kann allerdings den Teiler verändert, dass sich die Rate etwas ändert. Dann wäre die Frage, wie genau der Takt sein muss: Ich habe S/PDIF mit 6,144 MHz auf dem board, komme aber mit einem Teiler 196 nur auf 31.347, was 3 Promille zuviel sind. Das sollte wohl gehen, oder? Wie weit kann ich davon wegehen?
Audiomann schrieb: > Ich hätte eine Frage zu dem Thema: > Beitrag "Midi Empfangen mittels Atmega 8 und Bascom" > möchte aber den thread nicht kapern: > > Wie läuft das bei MIDI? Kommen die Daten permanent? D.h. kann man davon > ausgehen, immer einen Takt vom MIDI-Gerät zu bekommen, auch wenn das > gerade nichts funkt, weil keine Taste gedrückt wird? Das kommt drauf an, was du mit "Takt" meinst. Protokollmäßig gibt es keinen Takt, aber es gibt (optional) mit MIDI-Clock eine Art Metronom, auf den sich die angeschlossenen Geräte musikalisch synchronisieren können. > Oder ist das vollkommen asynchron und pulsed nur, wenn was kommt? MIDI senden und empfangen kann man mit einem UART, ist also ein einfaches serielles asynchrones Protokoll. Einen Takt im Sinne der Schnittstelle gibt es nicht. > Ich möchte nämlich meinen MIDI-Ausgang auf den Eingang synchronisieren > und habe Befürchtungen, dass mir der Ausgang wegläuft, wenn Ich intern > einmal synche und dann mit der internen Rate weiterlaufe und irgendwann > dann mal ein neues Eingangsdatum in einer Phase kommt, das nicht zum > Ausgang passt. Eine MIDI-Botschaft wird einfach gesendet, wenn das auslösende Ereignis kommt, und dann ist Sendepause bis zur nächsten MIDI-Botschaft. Synchronisieren kannst du da nix. > Wie synche Ich dann? Ich kann ja schlecht den Datenstrom aus Ausgang > unterbrechen. Höchstens in einer Sendepause, aber davon wird es wenige > geben. Wenn deine MIDI-Schnittstelle so überfüllt ist, dass es keine Sendepausen gibt, hast du sowieso ein Problem. > Dann wäre die Frage, wie genau der Takt sein muss: > > Ich habe S/PDIF mit 6,144 MHz auf dem board, komme aber mit einem Teiler > 196 nur auf 31.347, was 3 Promille zuviel sind. Das sollte wohl gehen, > oder? > > Wie weit kann ich davon wegehen? Die Anforderungen dürften da gleich sein wie bei RS232. 3‰ sollten kein Problem darstellen.
So ist es! MIDI ist asynchron, d.h. es kommt alle paar Nasen lang mal was an. "MIDI Clock" wurde schon erwähnt. Ist aber nur einigermaßen genau und dies auch nur auf Rhythmusebene. Um genau zu messen, wie schnell ein Stück ungefähr ist, muss man aber auch schon filtern. Synchronisieren kann man damit den Takt in keinem Fall. Du musst auch den Ausgang nicht auf den Eingang anpassen, sondern sendest Nachrichten weg, wenn Du willst. Was die Genauigkeit angeht, kommt es aufs Gerät an: Normalerweise kann man mit der Taktfrequenz locker mehrere Prozente schief liegen. Die Nachricht wird trotzdem verstanden. Die Geräte sind ja dafür gebaut, die Nachrichten stoßweise zu bekommen. Und genau das ist das bekannte Problem beim MIDI: Die Nachrichten kommen irgendwann raus, irgendwann an und die Klangerzeuger dudeln praktisch dann, wann sie wollen, bwz wenn sie das MIDI kapiert haben. Mit Softwaresynthesizern hat man diesbezüglich die größten Überraschungsmomente. Das ist eigentlich wie im Orchester, wenn der Dirigent grob den Takt angibt. Nur ist es da so, dass die Musiker selber Taktgefühl haben und sich gegenseitig hören und die Anweisung nur optisch verarbeiten. Daher sind gute Orchestermusiker auf unter 10ms genau! Klangerzeuger laufen zwar auch mit eigenem Takt weiter, reagieren aber zu hart auf die MIDI Clock und laufen dadurch statisch auseinander. Je nach Gerät hast Du da bis zu 200ms Diskrepanz wie Ich lernen musste. Ich mache mein MIDI über S/PDIF, da ist der Takt immer an und die Endgeräte hängen Dank PLL im Bereich von Zehnteln des Taktes von bis 25 MHz an der Stange. Das ist 1 Mio mal genauer, als MIDI CLock :-) Bei normalem MIDI kannst Du nur über Time Code arbeiten, dann halt mit Latenz und somit offline. Mehr dazu hier Beitrag "MIDI Clock in MIDI Timecode wandeln"
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.