HUMidi wurde nicht als Sequenzer, sondern als Interpretationssystem für MIDI Dateien konzipiert. Derzeit sind in HUMidi nicht implementiert:
Die folgenden Regeln gelten für die Benutzeroberfläche:
Details zu den Eingabeformaten finden sich unten im Glossar.
Liste der Dynamikkennzeichen:
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!
Die Interpretationsparameter werden automatisch gerettet wenn HUMidi verlassen
wird oder wenn eine neue MIDI Datei geladen wird
1=Flügel
Bitte senden Sie Verbesserungsvorschläge, Kommentare oder Fehlermeldungen
per E-Mail an edgar.huckert@huckert.com
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.
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"):
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.