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