Midi, 10/14 Bit Wertebereich

  • Ersteller MatthiasT
  • Erstellt am
M
MatthiasT
Registrierter Benutzer
Zuletzt hier
26.06.12
Registriert
06.07.05
Beiträge
3.183
Kekse
34.736
Ich bin habe gerade erstmal einen Synthie (MFB Synth II) komplett über den Rechner mit Midi gefüttert und würde dabei ganz gerne auch alle Parameter in der DAW kontrollieren können.

An sich ja auch kein Problem.
Aber: Um den eingeschränkten 7 Bit Werbetreich zu umgehen werden fast alle Parameter mit zwei Control Change-Werten angesteuert, so dass zum Beispiel Level VCO1 auf 13 und 45 empfängt. Diese sind alle mit 10 Bit Auflösung angegeben.

Cutoff ist da noch eine Ausnahme mit einem Wertebereich von 14 Bit. Prinzipiell eine tolle Sache, so ein schöner Filtersweep wird bei 128 diskreten Einstellwerten doch ein wenig arg unrund. ;)


Ich muss aber zu meiner Schande zugeben dass ich durch das Konzept nicht so ganz durchsteige.
Ich habe zwei Control Change Werte, nehmen wir als Beispiel mal "Level VCO1". Auf 13 kann ich 7 Bit setzen, auf 45 nochmal 7.
Sind auf 13 die höherwertigen Bits? Werden dann entsprechend die ersten vier Bits des Kanal 13 ignoriert (ich habe ja nur 10 Bit Auflösung, übergebe aber 14)?

Das wäre die mir am sinnvollsten erscheinende Lösung, aber irgendwie macht die kleine Kiste nicht dass was ich will. Ich würde gerne wissen ob das schon mein Problem ist oder ob meine Baustelle woanders liegt.

Ich könnte mir auch vorstellen dass die ersten vier Bits aus dem zweiten Control Change weggeworfen werden, dann hätte man wenn diese nicht übergeben werden allein mit dem ersten Kanal die Möglichkeit vollwertig zu empfangen, nur dann halt mit 7 Bit Genauigkeit. Aber welche sind die überflüssigen Bits innerhalbs des Control Change? Die Höherwertigen oder die Niederwertigen? Ich steh da irgendwie auf dem Schlauch. :confused:

Ich hab mich nie so richtig gerne mit diesem Relikt aus den frühen 80ern beschäftigt, aber es sieht wohl so aus als würde ich nicht drumherum kommen (was würde ich hier für Open Sound Control geben ;)).
Kann mir vielleicht jemand helfen wie man mit diesen aufgebohrten Wertebereichen umgeht?

Danke schon mal.
 
Eigenschaft
 
Zuletzt bearbeitet:
Hi,

Also ich habe den Synthesizer nicht. Weil in der Midi-Implementation bei einigen der 10-Bit-Parameter hinten "64+00=OFF" steht, und weil 64=2^6, würde ich mal davon ausgehen, dass von jedem der beiden Controllerwerte (in deinem Beispiel die Werte von CC#13 und CC#45) 5 Bits genommen und aneinandergehängt werden, um einen 10-Bit-Wert zu erhalten.

Das ist natürlich nur eine Vermutung, aber wenn sie stimmt, dann würdest du z. B. die Dezimalzahl 850 = 1101010010 (binär) als "11010 + 10010" (binär) oder eben als "26 + 18" (dezimal) senden. Für die 7 Bit muss dann nach vorne mit Nullen aufgefüllt werden: 26 = 11010 = 0011010, 18 = 10010 = 0010010.

Alles ohne Gewähr ;)

Grüsse,
synthos
 
Alles ohne Gewähr ;)
Aber das hilft mir schon deutlich weiter.

Darauf wäre ich nie gekommen. Müsste ich persönlich so etwas implementieren würde ich glaube ich CC#13 voll auswerten und als die ersten 7 Bits nehmen und den Rest wenn nichts kommt einfach als Nullen mitnehmen. Dann hätte man für den Notfall wenn jemand nur auf den ersten CC sendet immer noch die volle Funktion, nur mit kleinerer Dynamik.

Aber eine 5er Teilung würde einige der Probleme erklären die ich damit hatte. ;) Vielen Dank auf jeden Fall.

OT: Wann kommt eigentlich die Revolution? Ich finds irgendwie traurig dass man sich auch 2010 noch mit so einem Quatsch rumärgern muss. ;)
 
Aber: Um den eingeschränkten 7 Bit Werbetreich zu umgehen werden fast alle Parameter mit zwei Control Change-Werten angesteuert, so dass zum Beispiel Level VCO1 auf 13 und 45 empfängt. Diese sind alle mit 10 Bit Auflösung angegeben. [...] Ich habe zwei Control Change Werte, nehmen wir als Beispiel mal "Level VCO1". Auf 13 kann ich 7 Bit setzen, auf 45 nochmal 7. Sind auf 13 die höherwertigen Bits? Werden dann entsprechend die ersten vier Bits des Kanal 13 ignoriert (ich habe ja nur 10 Bit Auflösung, übergebe aber 14)?

Ich habe den Synth auch nicht, aber man darf hoffen, daß er sich grundsätzlich an die Absicht des MIDI-Standards und des Konzepts der 14-Bit-Controller hält. Grundsätzlich ist es so, daß im MSB 128 Werte möglich sind, die durch das LSB verfeinert werden können - das ist der Grundgedanke dabei. Also ist der entstehende Controllerwert 128 * MSB + LSB . Anders ausgedrückt: aus den beiden 7-Bit-Binärzahlen MSB=abcdefg und LSB=hijklmn wird das 14-Bit-Resultat abcdefghijklmn. Wenn ein empfangendes Gerät davon nur abcdefg auswerten kann (also das MSB), ignoriert es halt das empfangene LSB.

Übertragen auf 10-bit-Controller halte ich es daher für wahrscheinlich, daß die 7 Bit des MSB plus die drei obersten Bit des LSB ausgewertet werden, also abcdefghij. Dann würde klmn ignoriert.

Die Aufteilung auf zwei 5er-Gruppen von Bits wäre auch möglich, allerdings würden dann im MSB 2 Bit Auflösung verschenkt und das Auswerten des LSB wäre für das empfangende Gerät damit obligatorisch. Das würde der Absicht des MIDI-Standards widersprechen, aber möglicherweise interessierte Kompatibilität den Hersteller nicht, so Fälle gibt's leider gelegentlich.

Aber welche sind die überflüssigen Bits innerhalbs des Control Change? Die Höherwertigen oder die Niederwertigen?

Die Niederwertigen des LSB, IMHO. Mit MIDIOX kannst du das testen und dem Problem auf den Grund gehen. Falls du das tust, poste doch mal das Logfile hier, würde mich interessieren.

Ich hab mich nie so richtig gerne mit diesem Relikt aus den frühen 80ern beschäftigt,

:) :) :) Aber mit analogen Synthesizern schon? Ich finde ja: wer einen Analogsynthesizer bedienen kann, der erledigt doch das MIDI-Protokoll mit links...

OT: Wann kommt eigentlich die Revolution? Ich finds irgendwie traurig dass man sich auch 2010 noch mit so einem Quatsch rumärgern muss. ;)

Du ärgerst dich ja auch mit VCO, PWM, VCA und Konsorten herum, und das noch freiwillig. Würde ich nicht tun, von analoger Soundprogrammierung habe ich kaum Ahnung, mir reichen CC, RPN, NRPN... :)

Harald
 
Erstmal danke für die Erklärungen. Ich werde morgen mal MIDIOX drauf werfen.

:) :) :) Aber mit analogen Synthesizern schon? Ich finde ja: wer einen Analogsynthesizer bedienen kann, der erledigt doch das MIDI-Protokoll mit links...
Ich muss zugeben, mir ist die Sache ein klein wenig peinlich (;)). Ich studiere Nachrichtentechnik und so ein Piffelprotokoll wie Midi sollte da eigentlich kein Problem dastellen, das ist ja gegenüber Ethernet oder ähnlichen ein ziemlicher Scherz - ich habe mich nur nie damit beschäftigt und das fällt mir in dieser konkreten Anwendung ein wenig auf die Füße.
Das wäre mal so ein Vorhaben für "nach dem Prüfungsstreß". Einmal die Spezifikationen durcharbeiten... ich bin trotzdem froh dass mir hier so tatkräftig bei einem Problem geholfen wird das eigentlich meiner Faulheit geschuldet ist. ;)



Du ärgerst dich ja auch mit VCO, PWM, VCA und Konsorten herum, und das noch freiwillig. Würde ich nicht tun, von analoger Soundprogrammierung habe ich kaum Ahnung, mir reichen CC, RPN, NRPN... :)
Nun ja, war eher darauf bezogen dass Midi einfach sehr eingeschränkt ist, was ja diese Kunstgriffe wie das hier erst nötig macht. Über die Geschwindigkeit und veralteten Aufbau brauchen wir ja gar nicht erst reden... 31250 bit/s und Stromsteuerung my ass. ;)

Wenn es nach mir ginge würde die Zukunft Open Sound Control gehören, wobei das natürlich wieder ein wenig aufwendiger wird das in simpler Hardware zu integrieren. Man bräuchte zumindest Ethernet, aber gerade in Verbindung mit Rechner und komplexeren Kontrolldaten würde das eigentlich alle Probleme aus der Welt schaffen, und eingängiger ist das Protokoll auf jeden Fall.
 

Ähnliche Themen


Unser weiteres Online-Angebot:
Bassic.de · Deejayforum.de · Sequencer.de · Clavio.de · Guitarworld.de · Recording.de

Musiker-Board Logo
Zurück
Oben