Hilfe zu HUMidi

Copyright

Privates Copyright Dr.E.Huckert 02-2006. V1.0  

Was HUMidi leistet

HUMidi wurde für Musiker geschrieben, die gelegentlich Manipulationen an MIDI Dateien vornehmen müssen. Das Bedürfnis nach solchen Manipulationen tritt sicher häufiger im Klassik- als im Pop-Bereich auf. Zu solchen Manipulationen zählen u.a.

Was HuMidi nicht leistet

HUMidi ist kein Ersatz für einen vollwertigen Sequenzer oder MIDI Editor. HUMidi ist auch kein Ersatz für einen Media Player wie z.B. den Microsoft Multimedia Player

HUMidi wurde nicht als Sequenzer, sondern als Interpretationssystem für MIDI Dateien konzipiert. Derzeit sind in HUMidi nicht implementiert:

Es ist nicht ausgeschlossen, dass einige dieser Mankos in einer der nächsten Versionen behoben werden.

Benutzeroberfläche

Die Benutzeroberfläche stand definitiv nicht im Mittelpunkt der Entwicklung - dementsprechend einfach ist sie gehalten. Ziel war es, Vorgaben eher in musikalischen Einheiten wie "Takt" und "Schlag" eingeben zu können als in technischen Einheiten wie "Event".

Die folgenden Regeln gelten für die Benutzeroberfläche:

Details zu den Eingabeformaten finden sich unten im Glossar.

Glossar:

Beispielsdateien

Im Umfang von HUMIdi finden sich einige einfache Beispielsdateien, die sich gut zum Experimentieren eignen: Zu den Beispielsdateien werden keine Interpretationsdateien geliefert.

Syntax Dynamikliste

Eine Dynamikliste besteht im allgemeinen aus einer Folge von einzelnen Dynamikanweisungen (z.B. piano). Mehrere Dynamikanweisungen werden durch Kommata getrennt. Jede Dynamikanweisung beginnt mit einem Dynamikkennzeichen gefolgt von einem Taktbereich. Typisches Beispiel: p17-32,f36:3-40:2. Ein Taktbereich besteht aus dem Anfangstakt und dem Endetakt. In beiden Taktangaben können Schlagangaben stehen, z.B. "4:3" für "Takt 4, dritter Schlag".

Liste der Dynamikkennzeichen:

Editoren

HUMidi bietet zwei prinzpiell sehr unterschiedliche Methoden an, das Abspielen von MIDI Dateien zu beinflussen: Editoren sollten nur von erfahrenen MIDI Anwendern eingesetzt werden, da sie z.T. tiefere MIDI Kenntnisse voraussetzen.

Editor für Notenereignisse

Dieser komplexe Dialog erlaut es, Notenereignisse (NOTE ON und NOTE OFF) zu verändern (modifizieren, löschen einfügen). Der Dialog erlaubt die Navigation in den Notenereignissen über Positionieren auf Takt / Schlaggrenzen. Die Navigation wird erleichtert durch Fixieren auf einen MIDI Kanal - Kanäle sind sehr oft an ein bestimmtes Instrument gebunden.

HUMidi bietet als Besonderheit eine Funktion zum Überbinden von Noten an. Der vor mir bevorzugte Notationseditor Capella hat beim Exportieren von MIDI Dateien leider die Macke, überbundene Noten nicht zu einem MIDI Ereignis zusammenzufassen. Das Überbinden von Noten fasst zwei unmittelbar aufeinanderfolgende Noten auf dem gleichen Kanal und mit der gleichen Tonhöhe zusammen. Diese Funktion sollte nicht mit "Legato und Staccato" verwechselt werden!

Instrumente zuordnen

Über diesen Editor können Kanälen Instrumente zugeordnet werden. Bitte beachten Sie, dass die Instrmentzuordnungen nicht universell gelten. HUMidi bietet deshalb nur einen Auszug der Instrumente an - Genaueres muss der Dokumentation des jeweiligen Synthesizers bzw. dem MIDI Modell (z.B GM oder GS) entnommen werden. Die Einfügeposition kann über Takt und Schlag festgelegt werden. Bereits bestehende Instrumentzuordnungen bleiben weiterhin erhalten!

Einfügen Textereignisse

Textereignisse dienen dazu, Passagen mit Kommentaren zu versehen. Für Karaoke-Anwendungen transportieren sie natürlich den zu singenden Text. Die Einfügeposition kann über Takt und Schlag festgelegt werden.

Controllerereignisse einfügen

Controllereignisse sind im allgemeinen Effekte wie Hall, Balance, Chorus, Haltepedal, Vibrato etc. Die Einstellung kann pro Kanal oder für alle Kanäle erfolgen. Sie gilt bis zum Auftreten eines neuen Controller-Ergeignisses. Details zu den Controller-Ereignissen müssen der Dokumentation zum jeweiligen Synthesizer bzw. zum MIDI Modell (z.B GM oder GS) entnommen werden.

Lautstärke verändern

Die Lautstärke kann zwischen den Werten 0 (Stille) und 127 (sehr laut) eingestellt werden. Die Einstellung kann pro Kanal oder für alle Kanäle erfolgen. Die Einfügeposition kann über Takt und Schlag festgelegt werden. Die Lautstärkeänderung gilt bis zum Auftreten einer erneuten Lautstärkeänderung für den jeweiligen Kanal.

Einfügen von Tempowechseln

Tempowechsel sind nicht kanalbezogen. Die Angabe des Tempos erfolgt im üblichen Metronomwert (BPM = Beats per Minute). Die Tempoänderung gilt bis zum Auftreten einer erneuten Tempoänderung. Bereits bestehende Tempowechsel bleiben weiterhin erhalten - können also nur durch Einfügen eines neuen Tempowechsels hinter der jeweiligen Position überschrieben werden.

Notenabstände: Legato und Staccato:

Die bereits vorhandenen Noten können innerhalb eines Bereichs gekürzt oder verlängert werden. Dazu müssen Sie einen Prozentwert im Bereich 10 (extremes Staccato) bis 300 (extremes Legato mit Überlagern) Prozent angeben. Die Funktion verändert den Zeitstempel des NOTE OFF Ereignisses aller Noten auf dem gewählten Kanal im gewählten Taktbereich. Die Notenwerte können pro Kanal oder global für alle besetzten Kanäle verändert werden. Bitte beachten Sie: die Funktion arbeitet immer auf den aktuell vorgefundenen Werten für die Notendauer. Wenn die Notendauer z.B. bereits auf 10 Prozent gekürzt wurde, bringt auch eine Verlängerung um 300% nicht die alte Notendauer! Die Legato/Staccato Funktion hat nichts zu tun mit der MIDI "HOLD" Funktion, die dem Einsatz des rechten Klavierpedals entspricht. Hinweis: im Dialog zum Editieren von Notenereignissen können zwei einzelne Noten "echt" überbunden werden - dies ist zwar kein Legato, wird aber bisweilen damit verwechselt.

Kopieren von Kanälen

Das Kopieren von Kanälen ist wichtig für Effekte, die z.B. bei klassischen Orgeln als "Registerkopplung" bekannt sind. Wenn z.B. im vorhandenen Synthesizer die Geige zu dünn ist, kann sie durch Hinzufügen eines Cellos verstärkt werden. Die Zeitstempel der Ereignisse werden nicht verändert. Der neue Kanal muss eine neue Kanalnummer erhalten. Es empfiehlt sich meist auch, dem neuen Kanal eine neue Instrumentzuordnung zu gegen.

Konverter

HUMidi bietet die folgenden Konverter:

Controller Kommandos

Meine Synthesizer (beide von Roland) verstehen u.a. die folgenden wichtigen Controllerkommandos (alle Angaben hier für den Kanal Nr. 1): Bitte beachten Sie, dass nicht alle Synthesizer diese Kommandos verstehen. Nummer und Bedeutung des zweiten Bytes können sehr unterschiedlich sein. Auf das erte Byte (176 als Grundwert) muss der Kanal addiert werden. Für Ungeübte empfiehlt es sich, die Controllerevents über den Dialog im Menü "MIDI" einzufügen.

Interpretationsdateien

HUMidi legt nach dem Abspielen jeder MIDI Datei eine Interpretationsdatei an (Extension .int). Die Datei wird immer in dem Verzeichnis abgelegt, das unter dem Parameter mididir in der allgemeinen Konfiguration genannt wird. Die Interpretationsdatei nimmt die folgenden Parameter auf: Beim Laden einer neuen Datei wird versucht, eine Interpretationsdatei dazu zu finden. Wenn keine gefunden wird, erscheint keine Fehlermeldung! Interpretationsdateien sind optional.

Die Interpretationsparameter werden automatisch gerettet wenn HUMidi verlassen wird oder wenn eine neue MIDI Datei geladen wird

Instrumentzuordnungen (Program Change)

Instrumentzuordnungen können in einem eigenen Dialog unter dem Menü MIDI/Instrumentzuordnungen eingefügt bzw. geändert werden. Bitte beachten Sie, dass Instrumentzuordnungen variieren können je nach Synthesizer und Modus des jeweiligen Sythesizers. Die nachstehende Liste zeigt einen Ausschnitt für den weit verbreiteten Modus GM ("General MIDI"):

1=Flügel
5=Fender Rhodes
9=Celesta
10=Glockenspiel
12=Vibraphon 17=Hammond Orgel
20=Kirchenorgel
22=Akkordeon
25=Klass. Gitarre
34=E Bass
41=Violine
42=Bratsche
43=Violoncello
44=Kontrabass
51=Strings
53=Chor
57=Trompete
67=Tenor Sax
69=Oboe
70=Englisch Horn
71=Fagott
72=Klarinette
74=Flöte

Technik

HUMidi ist in C++ geschrieben und wurde mit dem C++ Compiler von Digital Mars (ehemals Symantec C++, davor Zortech C++) kompiliert. Das Programm besteht aus ca. 15 Klassen, die in ca. 13000 Zeilen Quellcode abgelegt sind. Für die Programmierung der Benutzeroberfläche habe ich wxWidgets verwendet. Für die Implementierung des MIDI Servers, des MIDI Protokolls und der Kommunikationskomponenten habe ich ausschließlich eigene Klassen verwendet. Das Verhältnis von MIDI lastigem Code zu reiner Benutzeroberfläche liegt bei ca 4:1.

Kontakt

Die C++ Bibliotheken, auf denen HUMidi beruht, werden von mir in Quellform zum Verkauf angeboten.

Bitte senden Sie Verbesserungsvorschläge, Kommentare oder Fehlermeldungen per E-Mail an edgar.huckert@huckert.com