Un fichier MOD, XM, S3M ou IT peut être copié bit pour bit sur deux machines différentes. Les patterns sont identiques, les samples sont identiques et les commandes d’effets n’ont pas changé. Pourtant, deux lecteurs peuvent produire un résultat légèrement différent.

Ce phénomène n’est pas une anomalie propre aux modules mal conservés. Il vient d’une caractéristique fondamentale de la musique tracker : le fichier décrit le morceau, mais c’est le moteur de replay qui l’exécute.

Pour obtenir une lecture fidèle, il ne suffit donc pas de savoir ouvrir le format. Il faut reproduire les comportements du tracker auquel ce format et parfois ce fichier particulier sont associés.

Le fichier n’est qu’une moitié du système

Dans un fichier audio traditionnel, le lecteur reçoit essentiellement un signal déjà produit. Avec un module, il reçoit une structure à interpréter : ordre des patterns, rows, notes, instruments, samples, enveloppes, effets, Speed et BPM.

Le moteur doit transformer toutes ces données en flux audio PCM. Entre le fichier et les haut-parleurs se trouve donc une quantité importante de logique.

Deux implémentations différentes de cette logique peuvent diverger sur de petits détails, et ces petits détails peuvent devenir audibles.

Les quirks : quand une particularité devient une règle

Les logiciels historiques possèdent leurs propres comportements, parfois intentionnels, parfois hérités de leur implémentation. Avec le temps, les compositeurs peuvent commencer à exploiter ces particularités.

Un comportement qui ressemblait initialement à une limitation ou à une bizarrerie devient alors une partie du langage musical du tracker.

Un lecteur moderne qui « corrige » naïvement cette bizarrerie risque paradoxalement de jouer le morceau moins fidèlement que le logiciel original.

La mémoire des effets

Nous avons vu que certaines commandes d’effets possèdent un paramètre. Mais selon le format et le tracker, une valeur nulle peut parfois demander de réutiliser une valeur mémorisée précédemment.

Le moteur doit donc maintenir un état pour chaque canal : paramètres de portamento, vibrato, volume slide, sample offset et autres informations nécessaires à la continuité des effets.

Si deux lecteurs n’appliquent pas exactement les mêmes règles de mémoire, une succession de commandes apparemment identique peut évoluer différemment.

Le tick 0 peut changer le résultat

La distinction entre le premier tick d’une row et les ticks suivants est également essentielle. Certaines commandes sont initialisées au tick 0 puis agissent ensuite. D’autres formats possèdent des comportements particuliers concernant l’application d’un effet sur ce premier tick.

Une différence d’une seule étape dans l’exécution d’un volume slide, d’un portamento ou d’un retrigger peut modifier l’attaque d’un son ou le mouvement d’une phrase entière.

Les tables de fréquence ne sont pas toujours identiques

La hauteur d’un sample doit être calculée par le moteur. Selon le tracker et les options du module, cette opération peut suivre différents modèles.

FastTracker II et le format XM peuvent notamment travailler avec une table de fréquences linéaire ou avec une logique héritée des périodes Amiga. Ces choix influencent les calculs de hauteur et certains effets associés au pitch.

Une approximation mathématique différente ou un arrondi placé à un autre moment peut créer de petites divergences.

L’interpolation change la texture sonore

Le moteur doit également rééchantillonner les samples lorsqu’ils sont joués à une fréquence différente de leur fréquence d’origine. Plusieurs stratégies sont possibles : absence d’interpolation, interpolation linéaire ou méthodes de resampling plus sophistiquées.

Ces méthodes n’ont pas exactement le même rendu. Les aigus, les transpositions importantes et les samples courts peuvent révéler particulièrement ces différences.

Un moteur moderne peut produire un son techniquement plus lisse tout en s’éloignant du caractère d’une lecture historique.

Amiga et PC n’impliquent pas le même héritage sonore

Pour les anciens MOD, reproduire le comportement d’un tracker Amiga ne consiste pas uniquement à comprendre les patterns. Le modèle de resampling et les caractéristiques associées au matériel historique peuvent également compter.

Les lecteurs modernes proposent parfois des modes spécifiques destinés à retrouver ces comportements. OpenMPT, par exemple, distingue des réglages et des modes de compatibilité permettant de mieux respecter certaines particularités de ProTracker et de l’Amiga.

MOD ne veut pas toujours dire exactement ProTracker

L’extension d’un fichier ne raconte pas nécessairement toute son histoire. Plusieurs trackers ont produit des variantes ou extensions autour de formats existants.

Un moteur moderne peut donc utiliser des signatures, des métadonnées et parfois des heuristiques pour déterminer quel comportement historique appliquer. OpenMPT documente par exemple des mécanismes de détection destinés à activer certains comportements ProTracker seulement lorsqu’ils semblent appropriés.

La compatibilité devient alors un travail d’identification autant que de décodage.

XM : reproduire FastTracker II, pas seulement lire l’en-tête

Un lecteur XM peut parfaitement décoder les instruments, les patterns et les samples tout en restant imparfait sur certains effets.

Des bibliothèques spécialisées documentent ouvertement leurs différences connues : contrôle du glissando, comportement de certains arpèges après des pitch slides, portamento, volume global ou détails liés aux périodes Amiga.

Cette transparence est importante : elle montre qu’un moteur de replay fidèle est le résultat d’années de tests et de corrections, pas seulement d’un parser de fichier.

S3M et IT possèdent eux aussi leur propre logique

Le problème ne concerne pas uniquement MOD et XM. Scream Tracker 3 et Impulse Tracker ont eux aussi leurs règles de commandes, leur mémoire d’effets et leurs comportements historiques.

Impulse Tracker ajoute encore des mécanismes complexes liés aux instruments et aux voix. Un moteur universel doit donc éviter d’appliquer indistinctement une seule logique à tous les formats.

Le même code interne peut être partagé, mais les règles de compatibilité doivent rester conscientes de l’origine du module.

Les moteurs modernes continuent d’être corrigés

Un indice particulièrement révélateur se trouve dans les journaux de versions des lecteurs actuels. Des projets comme OpenMPT et libopenmpt continuent d’annoncer des corrections de lecture pour MOD, XM, S3M et IT.

Ces corrections peuvent concerner les slides, les boucles de patterns, les positions de samples, les effets ou la détection du tracker d’origine.

Plusieurs décennies après la création de ces formats, la fidélité de replay reste donc un sujet technique actif.

Compatibilité et amélioration sonore sont deux objectifs différents

Il faut distinguer deux ambitions. Un lecteur peut chercher à produire le son le plus agréable possible avec des techniques modernes de resampling. Un autre peut chercher à reproduire aussi précisément que possible le comportement du tracker original.

Ces objectifs ne sont pas toujours identiques.

Pour l’écoute quotidienne, un rendu moderne peut être excellent. Pour l’archivage, la recherche historique ou la reproduction fidèle d’une musique de jeu ou de demoscene, le mode de compatibilité devient beaucoup plus important.

Comment tester sérieusement un moteur tracker ?

Tester un lecteur avec quelques chansons agréables ne suffit pas. Il faut également utiliser des modules spécialement construits pour isoler les comportements : effets particuliers, valeurs limites, boucles, changements de tempo, interactions entre commandes et cas historiques connus.

On peut alors comparer la sortie avec un moteur de référence ou avec le tracker original.

Cette méthode transforme la compatibilité en problème mesurable : chaque cas de test vérifie une petite règle du moteur.

Ce que cela implique pour un lecteur Web

Pour intégrer des modules dans un site moderne, deux stratégies sont possibles. La première consiste à écrire son propre moteur. C’est extrêmement instructif, mais demande beaucoup de travail pour atteindre une compatibilité élevée.

La seconde consiste à s’appuyer sur un moteur mature et éprouvé, puis à construire autour de lui l’interface Web, les contrôles, la visualisation et l’intégration avec les jeux.

Dans les deux cas, il est utile de conserver une séparation nette entre parser, séquenceur/replay, mixer audio et interface utilisateur. Une erreur d’affichage ne doit pas modifier la logique musicale, et une amélioration de l’interface ne doit pas changer le comportement du replay.

Le moteur fait partie du patrimoine

Cette conclusion dépasse la simple programmation. Préserver un fichier tracker est indispensable, mais comprendre son moteur d’origine permet de préserver également la manière dont il devait être entendu.

Le module contient la partition structurée. Le moteur contient une partie des règles d’interprétation.

C’est cette association entre données et logiciel qui fait des trackers un patrimoine à la fois musical et informatique.

Dans le prochain et dernier article : nous quitterons les moteurs historiques pour construire le pont vers aujourd’hui : comment faire vivre MOD, XM, S3M et IT dans un navigateur, les associer à des jeux DOS et conserver leur logique originale dans une interface Web moderne.