Col-Tracker, part VI

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

Un vrai éditeur de notes

J’ai enfin implémenté la possibilité de saisir des notes dans les patterns !

Je pensais que ce serait une des parties les plus compliquées mais en fait ça s’est révélé bien plus simple que prévu :o)

La principale difficulté venait d’un truc que je n’avais pas prévu : Les évènements claviers de Javascript ne retournent pas de « Code touche » correspondant à la position physique de la touche sur le clavier.

Comme je voulais permettre de jouer sur deux octaves en utilisant le clavier selon les mêmes touches que la plupart des logiciels de musiques de l’Amiga, cela donnait pour le premier Octave A, Z, E, R, T, Y pour Do, Ré, Mi, Fa, Sol, La… sur un clavier Français mais pour un clavier Anglais c’était Q, W, E, R, T, Y pour ces mêmes notes.

Les raccourcis claviers de Col-Tracker en AZERTY et QWERTY

J’ai donc du ajouter une fonction de configuration permettant à l’utilisateur de choisir son clavier, et une couche d’abstraction qui me renvoie directement le code correspondant à la note (au lieu de recevoir un code « A » ou « Q » pour la touche correspondant au premier Do, je reçois « K_C » (« Keyboard, note C » ; « C » correspond au Do en notation anglo-saxonne, qui est celle utilisée par les Trackers). L’avantage est que je n’ai pas besoin de me soucier du clavier de l’utilisateur une fois la configuration effectuée.

L’inconvénient par contre est qu’il faudra sans doute que je supporte plein de claviers différents, mais pour l’instant je me limite à l’AZERTY et au QWERTY puisque ce sont les deux seuls dont je dispose.

Je suis content d’avoir pensé dès le début à intégrer une ligne de statut pour afficher les raccourcis claviers car … il y en a beaucoup. Voici le contenu de cette ligne quand l’éditeur de patterns à le focus clavier :

Use Piano key shortcuts for notes, Keypad 0-9 for changing octave, Keypad / and * for changing instrument, Keypad +/- for changing volume, Ctrl + previous keys to edit current note and Shift+keypad +/- for detuning the current note

Je ne me serais jamais souvenu de tout ça :o)

J’ai légèrement modifié la gestion des volumes sonores des notes pour une meilleure lisibilité : Au lieu d’avoir un pourcentage entre 0% et 200%, j’affiche maintenant un pourcentage qui varie entre -99 et + 99.

Dans la pratique, c’est quasi pareil, mais c’est beaucoup plus intuitif (je pense) pour les utilisateurs.

Export en local

C’est très pratique de sauver toutes les données dans le LocalStorage HTML5 du navigateur, mais je me suis dit qu’il serait quand même pratique (et plus sûr) de pouvoir sauver sur le disque local de l’utilisateur. J’ai donc ajouté une fonction d’import/export qui permet cela.

  • Pour l’export il suffit d’appuyer sur le bouton « Export Mod« , « Export Pattern » ou « Export Instr.« 
  • Pour l’import, il suffit de glisser-déposer le fichier sauvé précédemment dans le Col-Tracker

Il y avait une petite difficulté dans le fait que l’accès en écriture au disque local via Javascript ne fonctionne que sur Chrome pour l’instant. J’ai donc contourné la difficulté en envoyant les données à écrire à un script PHP qui les renvoie telles quelles mais avec les entêtes HTTP demandant au navigateur de les sauver sur le disque (comme quand vous cliquez sur un fichier ZIP ou BIN dans une page web).

J’ai décidé également de ne pas compresser ces fichiers d’export car il pourrait être pratique de les éditer en local sur le PC avant de les renvoyer dans Col-Tracker.

La septième partie de cette série se trouve ici.

Un commentaire sur “Col-Tracker, part VI

Laisser un commentaire