MIDI - jetzt auch mit Theorie

05.05.2023 09:21 (zuletzt bearbeitet: 05.05.2023 09:23)
#1
el

Anders als bei klassischen Tonaufnahmen ist MIDI ein Format bei dem sozusagen nur SteuerungsAnweisungen aufgezeichnet oder abgespielt werden können, vergleichbar der Klavierrolle bei einem SelbstspielPiano, oder der Stiftwalze einer Spieluhr

grob gesagt, bezogen auf ein Klavier (oder Orgel etc) "befiehlt" MIDI wann welche Taste wie stark gedrückt werden soll
und wann sie wieder losgelassen werden soll...

Es gibt verschiedene MIDI-Befehle zB

Note on und Note off - hierzu gehören ein
.Kanalwert 1-16 (eigentlich 0-15, bei einer Orgel quasi welches Manual oder Pedal)
.Tonhöhenwert 0-127 (quasi welche Taste wird gedrückt bzw wieder losgelassen)
.Velocitywert 0-127 (wie stark/laut wird eine Taste gedrückt - zB beim Klavier)
wie beim Klavier kann also jeder Ton seine eigene Lautstärke haben auch wenn mehrere Töne gleichzeitig auf dem gleichen Kanal erklingen

ControlChange - hierzu gehören ein
.Kanalwert 1-16 (quasi welches Manual oder Pedal)
.ControllerAdresse 0-127 (welcher Controller gemeint ist, zB CC07 für die Gesamtlautstärke)
.ControllerWert 0-127 (welchen "Wert" zB der Schweller bekommt 0= geschlossen, 127= ganz offen oder dazwischen)
auch Nachhall oder die Position im StereoFeld sind Controller, und viele andere mehr

ProgramChange - hierzu gehören ein
.Kanalwert 1-16 (quasi welches Manual oder Pedal) und nur ein
.ProgramWert 0-127 (zB bei Synthesizern welchen Klang sollen die Töne habe, Violine, Klavier, Cembalo etc)

ich verkürze jetzt
Pitchbend - ermöglicht es einem die Tonhöhe aller Töne eines Kanals in recht feinen Schritten zu verändern
(meistens im Bereich +/- 2HT) und dies auch während der Ton klingt (die Taste noch gedrückt ist)

Aftertouch - ermöglicht es einem den Ton auch nach dem "Anschlagen" noch zu modulieren
wie zB bei Blasinstrumenten mit dem Atem "gearbeitet" werden kann...

SystemExclusiv (SysEx) - welche keine festen Werte oder Formen haben, jeder Hersteller kann das selbst festlegen - ein SysEx-Befehl muss nur immer mit F0* beginnen und mit F7* enden.
(* das ist ein Byte in hexadezimal Darstellung F0 = 1111 0000 (binär), F7 = 1111 0111(binär))

Hier können alle Möglichen Steuerungen erreicht werden - zB aktiviere SetzerBank 3 Speicherplatz 5 oder CrescendoWalze auf Position 12

Bei meiner Gloria 350 ist es standardmäßig so eingestellt, dass das Schwellwerk Kanal 1, Hauptwerk Kanal 2, Positiv Kanal 3 und Pedal Kanal 4 zugeordnet ist
ein "Note on Kanal 2 Tonhöhe 60 Velocity 80" Befehl würde also dazu führen, dass im Hauptwerk der Ton c' entsprechend der eingeschalteten Register erklingen würde
umgekehrt, wenn ich die entsprechende Taste (c') auf dem Manual drücke und "MIDI HW" ist eingeschaltet
wird die Orgel den Befehl "Note on Kanal 2 Tonhöhe 60" mit einem entsprechenden Velocitywert über die MIDI-out Buchse senden (der eingebaute Sequenzer würde dieses auch so aufzeichen)

ein "ControlChange 07 Kanal 1 ControllerWert 2" Befehl würde dazu führen, dass die Klänge des Schwellwerkes "mit fast geschlossenem Schwelltritt" erklingen
umgekehrt, wenn ich den Schwelltritt betätige sendet die Orgel einen "ControlChange 07 Kanal 1" Befehl mit einem der Stellung des Pedals entsprechenden ControllerWert

über diese Steuerbefehle können also verschiedene Instrumente miteinander kommunizieren und somit kann ich die gleichen Befehle an ein E-Piano, eine DigitalOrgel oder eben an einen Sampler (Hauptwerk, GrandOrgue etc) schicken - natürlich mit jeweils einem klanglich ganz anderen Ergebnis

dafür allerdings lassen sich Fehler (zB falsche Taste gedrückt, oder nicht rechtzeitig losgelassen) in einer MIDI-Datei sehr leicht ändern, wie ein Fehler in einer Textverarbeitung im Gegensatz zu einem eingelesenen Text mit einem Versprecher...

mit besonders herzlichen Grüßen
oliver


 Antworten

 Beitrag melden
12.05.2024 13:38 (zuletzt bearbeitet: 12.05.2024 15:43)
#2
el

Da ich nach über einem Jahr nichts mehr "verbessern" (bearbeiten) darf hier noch ein paar kleine Anmerkungen zu meinen Erklärungen...

Midi funktioniert immer nur in eine Richtung, daher gibt es verschiedene Anschlüsse für Midi In / Out und Thru
da aber die Geräte meistens "Buchsen" und die Kabel in der Regel nur "Stecker" haben, müsst Ihr also immer darauf achten "passend" jeweils einen In-Anschluss mit einem Out-Anschluss zu verbinden (oder einen Thru mit einem In)

selbstverständlich könnt Ihr zB auch sowohl den Midi-In der Orgel mit dem Midi-Out des Computers
(oder der Soundkarte, oder eines USB-Midi-Kabel-Interfaces)
als auch gleichzeitig (umgekehrt) den Midi-In des Computers mit dem Midi-Out der Orgel verbinden...
(Computer "spielt" die Orgel und die Orgel "steuert" zB Hauptwerk oder GrandOrgue auf dem Computer...)

Allerdings besteht dann die Möglichkeit einer Schleife - ähnlich wie bei einer Rückkopplung zwischen Mikrofon und Lautsprecher werden die gleichen Daten ständig gesendet und empfangen und können so das ganze System "lahmlegen".
Einige Programme haben für diesen Fall einen entsprechenden Stopp oder "Panik" Knopf,
bei anderen Instrumenten hilft es dann nur eines der beiden Kabel herauszuziehen um die Schleife zu unterbrechen.

der Thru-Anschluss war früher vor allem bei Installationen mit mehreren Geräten / Instrumenten sinnvoll,
da er die eingehenden Daten fast verzögerungsfrei an das nächste Gerät schickt
Ihr müsst bedenken, Midi ist ursprünglich ein altes "langsames" Versenden von lauter Nullen und Einsen
wobei ein Midi-Befehl etwa 1ms lang ist oder anders ausgedrückt:
es sind "nur" etwa 1000 Befehle pro Sekunde möglich

letzteres klingt zwar nach mehr als mann brauchen könnte
tatsächlich kann frau aber recht schnell an diese Grenze kommen
und dann klingen zB Akkorde nicht mehr "gemeinsam" sondern die Töne kommen deutlich hörbar erst nacheinander...

Da die Erfinder von Midi sich wohl dieser Einschränkungen bewusst waren hatten sie eine wirklich gute Idee:
der Running Status
hierbei werden die zu sendenden Daten deutlich reduziert weil eine ganze Folge von gleichen Befehlen sozusagen zusammengefasst wird
wenn zB für sehr viele Töne auf einem Kanal mehrere NoteOn-Befehle gesendet werden müssen, dann werden anstelle von drei Bytes* pro Ton
(NoteOn, Tonhöhe und Anschlagstärke sind jeweils ein Byte)
"nur" noch zwei Bytes (Tonhöhe und Anschlagstärke) für jeden weiteren Ton benötigt
- das Programm weiß quasi, dass alle folgenden Bytes immer die beiden Werte für NoteOn sein sollen.

und, um es noch einfacher zu machen, wenn die Anschlagstärke für einen Ton gleich Null ist, dann gilt das als NoteOff-Befehl
also nochmal eine weitere "Einsparung" von Bytes die übertragen werden müssen...

ABER

so gut durchdacht gehen heutzutage leider nicht alle Hersteller oder Programmierer von MIDI-fähigen Instrumenten vor...

Als Beispiel nochmal meine Digital-Orgel (Gloria concerto 350 viscount)
diese besitzt 6 (Normal)-Koppeln welche aber leider über Midi-Out nicht "erzählen" ob sie gerade ein oder ausgeschaltet wurden
(im Gegensatz zu jedem RegisterTaster / Tremulant, welcher bei Ein/Ausschalten immer einen Midi-Befehl sendet)

allerdings kann mann im Menü einstellen, dass bei eingeschalteter Koppel die Tondaten (NoteOn / Note OFF) auf beiden Kanälen gesendet werden
also sowohl auf dem Kanal für die Klaviatur auf welcher gespielt wird (zB Kanal 3 für das 1. Manual)
als auch auf dem Kanal für das Werk welches angekoppelt wird (zB Kanal 1 für das Schwellwerk / 3. Manual)
was selbstverständlich doppelte Datenmenge bedeutet und
(nicht erst bei allen 6 eingeschalteten Koppeln)
zu deutlichem Gedränge auf dem Midi-Highway führen kann...

schlimmer noch:

da die Midi-Kanäle aber standardmäßig "von oben nach unten" den Klaviaturen zugeordnet werden
3. Manual (Schwellwerk) = Midi-Kanal 1
2. Manual (Hauptwerk**) = Midi-Kanal 2
1. Manual (Positivwerk ) = Midi-Kanal 3 und
1.-32. Pedal (Pedalwerk) = Midi-Kanal 4

bedeutet das automatisch, dass ich zB eine Midi-Datei von einer Viscount-Orgel mit "nur" zwei Manualen
bei mir garnicht "richtig" abspielen kann...
natürlich sind das alles "Probleme" welche sich relativ leicht lösen lassen...

aber im Prinzip eben auch eigentlich unnötige Probleme ;-)
(immerhin innerhalb von ähnlichen Instrumenten ein und derselben Firma !!!)



* ein Byte ist eine Folge von 8 Werten (Bitte ein Bit) die jeweils 0 oder 1 sein können
also 0000 0000, 0000 0001, 0000 0010, 0000 0011 ... usw
usw..1111 1100, .1111 1101, .1111 1110, .1111 1111
(das ergibt 256 verschiedene Werte: 0-255 was sicherlich schon jeder hier weiß...)

** nichte zu verwechselenne mit einer gleichnamigen (O)-Saft-Wahre


 Antworten

 Beitrag melden
12.05.2024 17:34
#3
avatar

Zitat von elias.orgel im Beitrag #1
.Kanalwert 1-16 (eigentlich 0-15, bei einer Orgel quasi welches Manual oder Pedal)

Technisch gesehen stimmt 0-15. Wenn ein Gerät auf Kanal 1 sendet, dann ist es tatsächlich Kanal 0... Das ist ähnlich wie bei der Programmierung, da fangen Arrays auch bei 0 statt 1 an 😅 Kompliziert wird es bei Microcontroller. Beim arduino gibt es bei entweder MidiUsb oder usbmidi tatsächlich das Problem, das Kanal 16 nicht nutzbar ist, weil es nur 0-15 gibt.

Zitat von elias.orgel im Beitrag #2
Midi funktioniert immer nur in eine Richtung, daher gibt es verschiedene Anschlüsse für Midi In / Out und Thru

Das ist nicht ganz richtig. Midi funktioniert in beide Richtungen. Nur bei einem analogen Midi ist nur eine Richtung möglich. Bei Midi über USB gibt es diese Einschränkung nicht. Rein technisch ist diese Entscheidung bei analogen Midi auch zu hinterfragen. Es wäre ja durchaus über eine Verbindung möglich. Aber es ist wohl der Tatsache geschuldet, dass vorwiegend das master/Slave Prinzip zum Einsatz kommt und eine gegenseitige Kommunikation eher weniger üblich war damals.


 Antworten

 Beitrag melden
12.05.2024 18:46 (zuletzt bearbeitet: 12.05.2024 18:52)
#4
el

Zitat von Christian_Hofmann im Beitrag #3
... Wenn ein Gerät auf Kanal 1 sendet, dann ist es tatsächlich Kanal 0...


Hallo Christian - DAS ist eher ein sprachliches Problem !!! es gibt 16 (binäre) Werte (0-15) wie ich das "Kind" / den Kanal dann benenne, ist fast jedem selbst überlassen - es gibt ja zB auch kein Jahr Null in unserer (?) Zeitrechnung...

Zitat von Christian_Hofmann im Beitrag #3
Midi funktioniert in beide Richtungen. Nur bei einem analogen Midi ist nur eine Richtung möglich. Bei Midi über USB gibt es diese Einschränkung nicht....


Das ist nicht ganz richtig... (aber darauf habe ich jetzt wirklich keine Lust) und

"...bei einem analogen Midi..." so so so analoges Midi hmmm...

(Wat isn analoges Midi? Da stell ich mich ma janz dumm* ... Musical Instrument Digital Interface ...
. und gucke nochmal die Feuerzangenbowle ;-)

mann lernt doch auch in hohem Alter nie aus...



*das kann ich ausgesprochen gut


 Antworten

 Beitrag melden
12.05.2024 18:56
#5
avatar

Zitat von elias.orgel im Beitrag #4
"...bei einem analogen Midi..." so so so analoges Midi hmmm...

Ja, etwas unglücklich ausgedrückt. Ich meinte damit eben die Din Stecker :)

Ich habe jetzt noch einmal in meinen Referenzen geschaut, Midi geht in beide Richtungen und der Grund warum darauf verzichtet wurde sind die Rückkopplungsschleifen. Tatsächlich gibt es seit Anfang an auch bidirektionale MIDI-Schnittstellen. Wobei mir jetzt kein Gerät bekannt ist, wo dies zum Einsatz kommt. Vermutlich wird es nur in Hardware für den professionellen Einsatz eingesetzt worden sein.


 Antworten

 Beitrag melden
12.05.2024 19:24
avatar  Amorosa
#6
Am

"Mit Midi 2.0, bidirektional, handshake, sollen auch Artikulationsdaten übertragen werden können", sagt mein Computer-Kenner.

Es gäbe auch schon Tastaturen mit mehr Abgriffen als Ein-Aus.

Freu.


 Antworten

 Beitrag melden
12.05.2024 19:35
#7
avatar

Ich frage mich ja schon länger, ob es mit Midi möglich wäre Instrumente mit z.B 19 Tönen pro Oktave abzubilden. Im Prinzip wird ja jeder Ton einer Nummer zugewiesen. Ohne den Standard zu verlassen wäre mit Midi wohl so etwas unmöglich:

Bild entfernt (keine Rechte)
Quelle: Von Joachim Mohr - Eigenes Werk, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=147873099


 Antworten

 Beitrag melden
12.05.2024 19:47
#8
So

Warum nicht. Es gibt 128 Notenwerte. Bei 19-20 Tasten pro Oktave bekommst du trotzdem einige Oktaven hin. Der Rest ist Zuordnung im Sample Set.


 Antworten

 Beitrag melden
12.05.2024 19:58 (zuletzt bearbeitet: 12.05.2024 19:59)
#9
avatar

Ja, Platz wäre da. Der Bereich bei Midi geht mit dem Keycode 21 los, was der Ton A'' bzw. A0 wäre bis zum Keycode 108 C''''' bzw. C8. Darunter und darüber kann man aber trotzdem senden.

Wobei das jetzt für den alten Standard gilt. Beim General MIDI 2 (GM2) ist das C8 auf dem Keycode 127, dafür geht es dann entsprechend später los. Das kann aber auch Probleme geben. Diese ganz tiefen Keycodes werden gerne mal genutzt um zusätzlich Dinge zu übertragen. Ich kenne eine digitale Orgel, dort wird mit den Keycodes 0-20 die Register übermittelt. NoteON bedeutet Register gezogen und NoteOFF eben nicht gezogen. Da sich nicht jeder an den Standard hält, kann dies dann Probleme mit anderen Geräte machen. Ich habe hier auch ein Keyboard, dass schmiert einfach ab, wenn ein Keycode 1 oder so gesendet wird.

BTW
Gibt es eigentlich eine Übermittlung der Information welches Gerät welchen Standard spricht? Wäre ja doof wenn sich deshalb zwei Geräte missverstehen :)


 Antworten

 Beitrag melden
12.05.2024 20:45 (zuletzt bearbeitet: 12.05.2024 20:51)
#10
el

Zitat von Christian_Hofmann im Beitrag #7
Ich frage mich ja schon länger, ob es mit Midi möglich wäre Instrumente mit z.B 19 Tönen pro Oktave abzubilden. Im Prinzip wird ja jeder Ton einer Nummer zugewiesen. Ohne den Standard zu verlassen wäre mit Midi wohl so etwas unmöglich:


Quelle: Von Joachim Mohr - Eigenes Werk, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=147873099


äh - nein...

Das StimmungsSystem von Joachim Mohr kann mann problemlos in HW - GO etc Abblilden....

vielleicht solltest Du etwas genauer erklären was Du möchtest - das Keyboard von Aaron Andrew Hunt hat 103 Tasten (und damit auch Töne) PRO Oktave... das wird per MIDI gesteuert ...


Du kannst zB im Kontakt Player einfach einstellen wieviele Töne (EDO) Du pro Oktave haben möchtest und dann werden diese entsprechend auf die vorhandenen Tasten Deines Keyboards "verteilt"...

Dass es Orgeln gibt wo die Register per ProgrammChange oder einfach als gedrückte Taste gesteuert werden - hat damit nun überhaupt nichts zu tun...
bei meiner Gloria sind es Sysex-Befehle - aber sowas sind eigentlich die MIDI-Grundlagen - und dafür war mein Faden hier gedacht...

16 verschiedene Klänge auf 16 verschiedenen Kanälen mit 16 verschieden "gestimmten" Cs...
DAS könnte etwas schwierig werden - alles andere ist mit dem alten "analogen" MIDI problemlos möglich


 Antworten

 Beitrag melden
12.05.2024 22:05
#11
avatar

Zitat von elias.orgel im Beitrag #2
Da ich nach über einem Jahr nichts mehr "verbessern" (bearbeiten) darf

Tatsächlich endet das Bearbeitungszeitfenster bereits nach 24 Stunden oder nachdem eine Antwort auf den Beitrag verfasst wurde.


 Antworten

 Beitrag melden
Bereits Mitglied?
Jetzt anmelden!
Mitglied werden?
Jetzt registrieren!