Un SMF ne contient pas seulement des données d’exécution MIDI régulières – notes canalisées, longueurs, données de pitch bend, etc – il devrait également avoir des données (communément appelées « en-tête ») qui contiennent des données de configuration supplémentaires (tempo, sélections d’instruments par canal, paramètres du contrôleur, etc.) ainsi que des informations sur la chanson (avis de copyright, compositeur, etc.).
La qualité, ou la fidélité à son état créé à l’origine, d’un SMF peut dépendre beaucoup des informations de l’en-tête. L’en-tête peut exercer un contrôle sur le mixage, les effets, et même les paramètres d’édition du son afin de minimiser les différences inhérentes entre un jeu de sons et un autre. Il n’y a pas d’ensemble standard de données que vous devez mettre dans un en-tête (en effet, ces données peuvent également être placées dans une barre de ‘configuration’ de rechange dans le corps du fichier lui-même), mais en général, plus vous fournissez d’informations au dispositif sonore récepteur, plus les résultats seront définis – et donc, vraisemblablement, plus conformes à vos goûts.
Selon l’application que vous utilisez pour créer le fichier en premier lieu, les informations d’en-tête peuvent être automatiquement sauvegardées à partir des paramètres définis dans l’application, ou peuvent devoir être placées manuellement dans une barre de « configuration » avant que les données musicales ne commencent.
Les informations à prendre en compte (par canal MIDI) comprennent :
- Sélection de la banque (0=GM) / Changement de programme #
- Réinitialisation de tous les contrôleurs (tous les dispositifs ne reconnaissent pas forcément cette commande, vous pouvez donc préférer mettre à zéro ou réinitialiser les contrôleurs individuels)
- Volume initial (CC7) (niveau standard = 100)
- Expression (CC11) (niveau initial fixé à 127)
- Pédale de maintien (0 = off)
- Pan (Centre = 64)
- Modulation (0)
- Pitch bend range
- Reverb (0 = off)
- Niveau du chorus (0 = off)
Tous les fichiers doivent également commencer par un message de réinitialisation GM/GS/XG (le cas échéant) et toute autre donnée exclusive au système qui pourrait être nécessaire pour configurer le synthétiseur cible. Si des RPN ou des messages de contrôleur plus détaillés sont employés dans le fichier, ceux-ci doivent également être réinitialisés ou normalisés dans l’en-tête.
Si vous saisissez vous-même les données d’en-tête, il est conseillé de ne pas regrouper toutes ces informations mais plutôt de les espacer par intervalles de 5 à 10 ticks. Certainement si un fichier est conçu pour être mis en boucle, le fait d’avoir trop de données lues simultanément fera que la plupart des appareils de lecture s’étoufferont, ‘ et déséquilibreront votre timing.