Een SMF bevat niet alleen gewone MIDI-uitvoeringsgegevens – noten in kanalen, lengtes, pitch bend-gegevens, enz. – hij moet ook gegevens bevatten (meestal een ‘header’ genoemd) die extra instellingsgegevens bevatten (tempo, instrumentkeuzes per kanaal, controllerinstellingen, enz.
Hoe goed, of waarheidsgetrouw, een SMF zal klinken, kan sterk afhangen van de informatie in de header. De header kan controle uitoefenen op de mix, effecten en zelfs geluidsbewerkingsparameters om de inherente verschillen tussen de ene geluidsset en de andere te minimaliseren. Er is geen standaard set van gegevens die je in een header moet zetten (dergelijke gegevens kunnen ook in een reserve ‘set-up’ balk in de body van het bestand zelf worden gezet), maar over het algemeen geldt dat hoe meer informatie je het ontvangende geluidsapparaat geeft, hoe gedefinieerder – en dus, vermoedelijk, hoe meer naar jouw smaak – de resultaten zullen zijn.
Afhankelijk van de toepassing die u gebruikt om het bestand te maken, kan het zijn dat de header-informatie automatisch wordt opgeslagen binnen de parameters die in de toepassing zijn ingesteld, of dat deze handmatig in een ‘set-up’-balk moet worden geplaatst voordat de muziekgegevens beginnen.
Informatie die in aanmerking moet worden genomen (per MIDI-kanaal) omvat:
- Bank Select (0=GM) / Program Change #
- Reset All Controllers (niet alle apparaten herkennen deze opdracht, dus u kunt er de voorkeur aan geven afzonderlijke regelaars op nul te zetten of te afzonderlijke regelaars te resetten)
- Initieel volume (CC7) (standaardniveau = 100)
- Expressie (CC11) (standaardniveau = 127)
- Hold pedal (0 = uit)
- Pan (Center = 64)
- Modulatie (0)
- Pitch bend bereik
- Reverb (0 = uit)
- Chorus niveau (0 = uit)
Alle bestanden moeten ook beginnen met een GM/GS/XG Reset-bericht (indien van toepassing) en eventuele andere System Exclusive-gegevens die nodig kunnen zijn om de doelsynthesizer in te stellen. Als RPN’s of meer gedetailleerde controller boodschappen worden gebruikt in de file moeten deze ook worden gereset of genormaliseerd in de header.
Als u zelf header data invoert is het raadzaam om al deze informatie niet samen te klonteren maar te spreiden in intervallen van 5-10 ticks. Zeker als een bestand is ontworpen om in een loop te worden afgespeeld, zal het gelijktijdig afspelen van te veel gegevens bij de meeste afspeelapparatuur tot ‘choke’ leiden, en uw timing in de war sturen.