Eine SMF enthält nicht nur reguläre MIDI-Performance-Daten – kanalisierte Noten, Längen, Pitch-Bend-Daten usw. – sie sollte auch Daten (allgemein als ‚Header‘ bezeichnet) enthalten, die zusätzliche Setup-Daten (Tempo, Instrumentenauswahl pro Kanal, Controller-Einstellungen usw.) sowie Songinformationen (Copyright-Hinweise, Komponist usw.) enthalten.
Wie gut oder originalgetreu ein SMF klingt, kann stark von den Header-Informationen abhängen. Der Header kann die Kontrolle über die Mischung, die Effekte und sogar die Klangbearbeitungsparameter ausüben, um inhärente Unterschiede zwischen einem Soundset und einem anderen zu minimieren. Es gibt keinen Standarddatensatz, den Sie in einen Header einfügen müssen (solche Daten können auch in einer zusätzlichen „Setup“-Leiste im Hauptteil der Datei selbst platziert werden), aber im Allgemeinen gilt: Je mehr Informationen Sie dem empfangenden Soundgerät zur Verfügung stellen, desto definierter – und damit vermutlich desto mehr nach Ihrem Geschmack – werden die Ergebnisse sein.
Abhängig von der Anwendung, die Sie zur Erstellung der Datei verwenden, können die Header-Informationen automatisch innerhalb der in der Anwendung eingestellten Parameter gespeichert werden, oder sie müssen manuell in einer „Einrichtungsleiste“ platziert werden, bevor die Musikdaten beginnen.
Informationen, die (pro MIDI-Kanal) berücksichtigt werden sollten, umfassen:
- Bank Select (0=GM) / Program Change #
- Reset All Controllers (nicht alle Geräte erkennen diesen Befehl, so dass Sie es vorziehen können, einen Nullabgleich oder einzelne Controller zurücksetzen)
- Initial Volume (CC7) (Standardpegel = 100)
- Expression (CC11) (Initialpegel auf 127 gesetzt)
- Hold Pedal (0 = aus)
- Pan (Mitte = 64)
- Modulation (0)
- Pitch Bend Bereich
- Reverb (0 = aus)
- Chorus Level (0 = off)
Alle Dateien sollten auch mit einer GM/GS/XG-Reset-Meldung (falls zutreffend) und anderen systemexklusiven Daten beginnen, die für die Einstellung des Zielsynthesizers erforderlich sein könnten. Wenn RPNs oder detailliertere Controller-Meldungen in der Datei verwendet werden, sollten diese ebenfalls im Header zurückgesetzt oder normalisiert werden.
Wenn Sie die Header-Daten selbst eingeben, ist es ratsam, nicht alle diese Informationen zusammenzuklumpen, sondern sie in Abständen von 5-10 Ticks zu verteilen. Wenn eine Datei in einer Schleife abgespielt werden soll, führt eine zu große Menge an Daten dazu, dass die meisten Abspielgeräte „abgewürgt“ werden und das Timing nicht mehr stimmt.