Col-Tracker, part III

La première partie de cette série est disponible ici.

Quelles fonctionnalités pour Col-Tracker ?

Avant de penser à l’interface utilisateur j’ai passé un bon moment à lire toute la documentation dont je disposais sur les routines du BIOS de la Colecovision utilisées pour la musique.

Puisqu’il n’était pas possible de changer la forme d’onde (seules les ondes « carrées » sont disponibles ; pas de triangle, sinusoïdales ou dents de scie), j’ai décidé d’être aussi flexible que possible pour le contrôle du volume, afin de simuler des enveloppes.

De plus, non seulement chaque instrument aura un (ou plusieurs) volume(s) propre(s), mais il sera possible de modifier ce volume pour chaque note, pattern, ou même au niveau du morceau de musique entier.

Cela permettra par exemple de jouer une pattern avec un volume plus faible que le reste du morceau sans avoir à modifier tous les instruments un par un.

Ca parait simple d’expliquer le principe général, mais la spécification détaillée a été plus compliquée… Au début je voulais juste remplacer les volumes des instruments à chaque niveau, mais ça n’avait pas beaucoup de sens de forcer (par exemple) toutes les notes d’une pattern à avoir le même volume.

Après avoir essayé plusieurs solutions, je suis parti sur un système à base de pourcents :

  • Les instruments sont toujours définis avec une valeur native entre 0 (silence) et 15 (volume maximum)
  • Les autres niveaux (note, pattern et morceau) seront défini avec une valeur entre 0 et 200 correspondant à un pourcentage du volume du niveau précédent (entre 0% (silence) et 200% (deux fois plus fort au maximum, car on ne peut toujours pas aller au delà de 15). Ces autres niveaux ont un volume par défaut de 100% ce qui correspond à « aucune modification »

Je ne suis pas sûr du tout qu’augmenter le volume donne toujours des bons résultats, mais on verra bien quand ce sera implémenté (et il n’est pas impossible que ce soit pratique pour des effets sonores comme un laser ou une explosion).

J’ai aussi décidé d’ajouter un paramètre « detune » (désaccorder) à chaque note afin de permettre d’obtenir presque toutes les fréquences possibles (je ne suis pas assez bon musicien pour savoir dans quels cas c’est utile, mais j’ai vu cette option dans d’autres Trackers, et ça n’a pas l’air trop compliqué à implémenter).

Il y aura aussi une colonne « Effet » permettant de saisir 6 caractères afin de permettre des améliorations futures.

Une chose à prendre en compte avec la Colecovision est qu’il y a deux versions : NTSC et PAL. Ces deux versions sont cadencées à des vitesses légèrement différentes, et ça implique qu’il faut utiliser deux formules différentes pour convertir les fréquences sonores en paramètres pour le chip sonore.

Col-Tracker permettra de générer des musiques pour les deux versions, mais j’ai ajouté un troisième réglage « Mixte ». Avec cette option, au lieu de choisir entre PAL et NTSC quel système jouera les notes justes et quel système sera légèrement désaccordé, on utilisera une formule à mi-chemin entre les deux. Cela signifie que les deux systèmes PAL et NTSC seront légèrement désaccordés, mais pas autant que si le compositeur avait choisi l’autre système comme cible. Encore une fois, je ne suis pas sûr du tout que cette option soit vraiment utile, mais on verra ça une fois que Col-Tracker sera suffisamment avancé pour jouer de la musique :o).

Un problème potentiel est que je ne suis pas sûr du tout de pouvoir rejouer une musique coupée en patterns. J’ai quelques idées pour y arriver, mais si ça ne fonctionnait pas je pourrais toujours dérouler les patterns dans une seule longue liste de notes. J’espère quand même que ça fonctionnera car ça réduira la taille mémoire des morceaux, ce qui est bien pratique car les cartouches Colecovision ont une taille maximale de 32Ko (à moins de faire du « bank swapping« , mais autant éviter si on peut s’en passer).

La quatrième partie de cette série est disponible ici.

Un commentaire sur “Col-Tracker, part III

Laisser un commentaire