DSS3M
Table des matières
Qu'est-ce que DSS3M ?
Le format S3M... dans Unreal
Caractéristiques de DSS3M
Problèmes recensés
Code source
Pages apparentées
Qu'est-ce que DSS3M ?
DSS3M signifie "DirectSound S3M". C'est un
joueur de soundtracks sous Windows
codé en C++, qui utilise DirectSound pour accéder au périphérique audio de
votre PC (comme le fait Winamp). Un soundtrack est une musique basée sur des
"samples" : une note (par exemple le DO du 4ème octave) de chaque instrument
est enregistrée et stockée dans le fichier, qui contient également des pistes
pleines de notes et d'effets. Les pistes constituent la partition, les effets
sont utilisés pour varier la hauteur et la vitesse des notes. Cette sorte de
musique est composée à l'aide de programmes appelés "trackers".
Les soundtracks nécessitent un timing très précis et de haute fréquence pour
être joués, et DirectSound n'aime pas tellement que le volume, la fréquence ou
le panning soient modifiés trop souvent. C'est pourquoi DSS3M mixe lui-même la
musique en software, et écrit le résultat dans le buffer primaire de
DirectSound (à moins que le périphérique n'ait de très mauvais drivers et ne
force DSS3M à utiliser le buffer secondaire, ce qui a pour effet d'introduire
plus de délai entre le moment ou un son est mixé et celui où il est entendu).
Le format S3M... dans Unreal
Qui utilise de la musique soundtrack ? Elle a été le standard de la scène
démos, mais a aussi été employée dans des jeux shareware, et pour le célèbre
Unreal d'Epic Games. Oui, les musiques d'Unreal sont principalement des S3Ms
(23) + quelques ITs (9), avec quelques informations supplémentaires ajoutées en
début et fin de chaque fichier. Lorsque je l'ai essayé, l'éditeur ne permettait
pas d'exporter les fichiers à leur format d'origine, mais si vous avez les
fichiers .umx sur votre disque dur et connaissez les formats S3M et IT alors il
est vraiment facile d'obtenir les soundtracks. Je ne vais pas mettre les
fichiers sur ce site car ils font l'objet d'un copyright, mais si vous avez
acheté le jeu la procédure est la suivante :
- ouvrez le fichier .umx dans un éditeur en binaire (vous pouvez utiliser
Visual Studio), et cherchez une des 2 signatures : SCRM pour un S3M, et IMPM
pour un IT
- IMPM : dans un IT, IMPM est au début du fichier : supprimez les octets qui
sont avant, et sauvez le fichier sous un autre nom (nom.it)
- SCRM : dans un S3M, SCRM n'est PAS au début du fichier : vous devez garder 44
octets avant la signature
C'est tout ! Vous pouvez maintenant écouter les musiques d'Unreal avec votre
logiciel favori.
Caractéristiques de DSS3M

Il existe beaucoup de formats de soundtrack, et j'ai décidé de supporter le
S3M
il y a quelques années parce que j'utilisais moi-même un petit peu
ScreamTracker (ScreamTracker est un tracker créé par le programmeur du groupe
de démos Future Crew, qui a défini le format S3M). Mais DSS3M peut aussi jouer
les fichiers
MOD
(car le S3M est un MOD amélioré), et quelques
IT
(version étendue de S3M). Je n'ai pas codé toutes les possibilités du format
IT, mais seulement celles qui sont nécessaires pour jouer les musiques d'Unreal
:) (samples 16 bits, ping-pong loop, ...)
Ce qui est intéressant avec DSS3M c'est que vous pouvez autoriser ou interdire
certains canaux, et utiliser un curseur pour avancer ou reculer dans la
musique. C'est intéressant car parfois il y a
plusieurs morceaux
(qui utilisent les mêmes samples)
dans un seul fichier, et les logiciels comme
Winamp ne vous permettent de jouer que le premier. C'est le cas dans Unreal,
beaucoup de fichiers contiennent 2 ou même 3 morceaux ! Le premier commence à
l'"order" 1 (voir le nombre au-dessus du curseur), le deuxième à l'order 2, et
le 3ème (s'il existe) à l'order 3.
DSS3M est une application MDI (multiples documents), donc vous pouvez ouvrir
plusieurs fichiers en même temps, le soundtrack actif est celui qui est joué.
Si d'autres applications coûteuses en temps CPU (comme un compilateur) tournent
sur votre ordinateur, ou que vous avez de gros accès au disque dur, il y aura
des coupures dans la musique, car le buffer de DirectSound ne sera plus rempli
assez vite; c'est inévitable (celà se produit moins fréquemment avec Winamp car
il utilise un buffer plus gros et mixe plus longtemps à l'avance).
Je n'ai pas passé beaucoup de temps sur l'interface, elle n'est là que pour
tester différents fichiers sans devoir recompiler. Comment pouvez-vous trouver
de la musique soundtrack ? Il y en a beaucoup sur Internet et ce ne sera pas
difficile, vous pouvez commencer votre recherche en allant sur un site dédié à
la scène démos, comme ceux qui sont listés
ici. Pour essayer DSS3M, vous pouvez simplement télécharger les deux
fichiers disponibles sur la page
Télécharger;
jouez les également avec Winamp (si votre version le permet), et vous
remarquerez qu'il a de gros problèmes avec certains effets.
Problèmes recensés
- je n'ai pas codé certains effets rarement utilisés (ex: pattern loop)
- je n'ai pas codé toutes les possibilités du format IT (ex: enveloppes de
volume)
- les bulles et textes de la barre d'état sont en français, alors que le reste
de l'application est en anglais; cela ne devrait toutefois pas vous empêcher de
l'utiliser, les commandes sont simples et classiques
Code source
J'ai décidé de rendre publiques les sources de DSS3M, pour les gens qui veulent
coder un joueur de soundtrack et ont besoin de quelque chose de pas trop
compliqué comme point de départ. Je n'ai pas le temps d'écrire de la
documentation, aussi ai-je inclus celle (très succinte, de Future Crew) que j'ai
utilisée, et j'espère qu'il y a assez de commentaires dans le code
pour que vous le compreniez. DSS3M est une application MDI et ce sera plus
facile si vous avez des connaissances sur l'architecture document/vue.
Les fichiers sources sont comme d'habitude fournis sans aucune garantie. Ils
ont été testés avec Visual C++ 6.0 service pack 5 sous w98 & w2k. Lorsque vous
ouvrez le workspace, Visual peut vous demander un chemin pour la librairie
'playerlib' : elle est située dans le sous-répertoire LibProjects\PlayerLib.
Pour compiler DSS3M, le SDK de DirectX doit être installé sur votre ordinateur,
et son chemin doit être connu du compilateur. Les fichiers .exe sont placés
dans le répertoire \runtime (la version debug a un 'd' ajouté à la fin de son
nom)
C'est tout ! N'hésitez pas à modifier le code et améliorer le programme, voici
quelques suggestions :
- supprimez les 'clics' que l'on entend parfois lorsqu'une note commence ou se
termine (cela vient du fait que la sortie du canal correspondant passe
subitement de zéro à une grande valeur ou l'inverse, il faudrait ajouter une
rampe par exemple en faisant varier très vite le volume de zéro à sa valeur
finale)
- ajoutez des enveloppes de volume; c'est la principale chose qui manque pour
jouer les fichiers .IT et .XM
- gérez plusieurs samples par instrument; c'est la 2ème chose principale, et
pas la plus difficile (vous verrez dans le code que j'ai déjà séparé les
notions de sample et d'instrument, chacune possède sa propre classe)
- et bien sûr, remplacez mon interface très basique !
Pages apparentées
images de DSS3M
haut de la page