analog
Registrierter Benutzer
Hallo, liebe MIDI-Experten,
ich beschäftige mich seit geraumer Zeit mit der MIDI-Programmierung von Arduino-Controllern.
MIDI-Daten zu senden ist kein Problem mehr, aber das Empfangen macht mir in einigen Punkten noch ein bisschen Kopfzerbrechen.
Ich habe anfangs mit den Serial.xxx-Funktionen der Arduino-Bibliothek gearbeitet, bin dann aber auf den direkten Zugriff auf die USART-Register des mega328 umgestiegen, weil ich dachte, dass ich die Probleme damit besser in den Griff kriege. Die eingehenden Bytes führe ich zunächst einer selbstgeschriebenen Funktion zu, die die MIDI-Messages interpretiert, also das Statusbyte auswertet und die jeweilige Anzahl von zu erwartenden Datenbytes erkennt und zuweist. Diese Funktion arbeitet eigentlich schnell, so dass sie längst abgearbeitet sein müsste, bis das nächste empfangene Byte vorliegt.
Das eigentliche "Schlüsselexperiment" ist simpel: Es sollen lediglich Daten empfangen und weitergeleitet werden.
Jetzt kommt das Problem:
All das funktioniert hervorragend und ohne Einschränkungen bei folgenden MIDI-Sendern: MOOG Voyager, Korg Karma, Korg padKONTROL. Da ist auch noch genügend Zeit, irgendwelche "Kunststücke" einzubauen: Keyboard-Split, irgendwelche Manipulationen der Velocity etc. Auch die CC-Messages kommen perfekt rüber, selbst wenn man ausgiebig an den Knöpfen dreht.
Bei Roland-Gaia und Cakewalk gibt es Probleme beim Drücken zweier oder mehrerer Tasten gleichzeitig und bei den Controllern. Die Daten kommen einfach nicht vollständig rüber. All das sieht ein bisschen nach "Datenstau" aus, aber ich weiß nicht, wo der entstehen könnte. Außerdem machen die zuerst genannten Geräte ja keinerlei Probleme.
Frage also: Haben Roland-Geräte etwas gegen mich persönlich, oder liegt da ein allgemein bekannter Unterschied zwischen den Geräten vor?
Für Tipps und Anregungen bedanke ich mich schon jetzt.
Grüße von Andreas
ich beschäftige mich seit geraumer Zeit mit der MIDI-Programmierung von Arduino-Controllern.
MIDI-Daten zu senden ist kein Problem mehr, aber das Empfangen macht mir in einigen Punkten noch ein bisschen Kopfzerbrechen.
Ich habe anfangs mit den Serial.xxx-Funktionen der Arduino-Bibliothek gearbeitet, bin dann aber auf den direkten Zugriff auf die USART-Register des mega328 umgestiegen, weil ich dachte, dass ich die Probleme damit besser in den Griff kriege. Die eingehenden Bytes führe ich zunächst einer selbstgeschriebenen Funktion zu, die die MIDI-Messages interpretiert, also das Statusbyte auswertet und die jeweilige Anzahl von zu erwartenden Datenbytes erkennt und zuweist. Diese Funktion arbeitet eigentlich schnell, so dass sie längst abgearbeitet sein müsste, bis das nächste empfangene Byte vorliegt.
Das eigentliche "Schlüsselexperiment" ist simpel: Es sollen lediglich Daten empfangen und weitergeleitet werden.
Jetzt kommt das Problem:
All das funktioniert hervorragend und ohne Einschränkungen bei folgenden MIDI-Sendern: MOOG Voyager, Korg Karma, Korg padKONTROL. Da ist auch noch genügend Zeit, irgendwelche "Kunststücke" einzubauen: Keyboard-Split, irgendwelche Manipulationen der Velocity etc. Auch die CC-Messages kommen perfekt rüber, selbst wenn man ausgiebig an den Knöpfen dreht.
Bei Roland-Gaia und Cakewalk gibt es Probleme beim Drücken zweier oder mehrerer Tasten gleichzeitig und bei den Controllern. Die Daten kommen einfach nicht vollständig rüber. All das sieht ein bisschen nach "Datenstau" aus, aber ich weiß nicht, wo der entstehen könnte. Außerdem machen die zuerst genannten Geräte ja keinerlei Probleme.
Frage also: Haben Roland-Geräte etwas gegen mich persönlich, oder liegt da ein allgemein bekannter Unterschied zwischen den Geräten vor?
Für Tipps und Anregungen bedanke ich mich schon jetzt.
Grüße von Andreas
- Eigenschaft