Was ist mit class compliant, warum sind die so schlecht ?
Zunächst einmal, class compliant heisst nicht gut oder schlecht. Es heisst einfach nur, das es einer bestimmten Spezifikation
(Usbmidi1 oder usbmidi2, die links hab ich verschusselt) entspricht.
Probleme mit class compliant Geräten , ausser die Hardware ist Schrott, gibt es eigentlich nur unter Windows, iOS und osx haben dort keine Schwierigkeiten. Häufig werden bei hochpreisigen Geräten für Windows Treiber angeboten, während sie unter coremidi classcompliant betrieben werden.
Es ist der generische midi Treiber für windows, der hier die Probleme bereitet.
Drei Probleme sind dokumentiert, ein viertes wurde mit Windows 7 nach nur 15 Jahren behoben.
Erstes Problem : der gegnerische Treiber ist nicht multiclientfähig, mehrere Applikationen können nicht gleichzeitig auf dasselbe Gerät zugreifen. Spezielle Treiber des Herstellers machen dies möglich, wenn es die Hardware und das Entwicklungsbudget hergibt. Spezielle Tricks auch...
Zweites Problem: der windowstreiber kann keine zwei gleichen Geräte kaskadieren, d.h. man muss , wenn man mehrere usb midi interfaces verwenden will, unterschiedliche Geräte nehmen. Das war lange das Problem mit den esi Geräten , bis es hier Treiber gab .
Drittes Problem : die buffergrösse für sysex Messages ist beim Windows Treiber angeblich nur 1024 Bytes gross, was nahezu jeden sysex Transfer scheitern lässt.
Gelöst wurde inzwischen das Problem Nummer 4 , dass alle midi Interfaces "USB Audio device" mit laufender Nummer heissen, und sich von zeit zur zeit die Nummer des konkreten Interfaces änderte. Dies führte dazu, dass bei einem gespeicherten Projekt nach dem Laden die Zuordnung der angeschlossenen Geräte auch nicht mehr stimmte.
Berichtet wird auch, dass das timestamping einzelner midi Messages potenziell fehlerbehaftet ist, wenn man die die midi Daten erzeugende Applikation genau nach den Microsoft Vorgaben schreibt. Ob das allerdings heute noch gilt, kann ich nicht sagen.....