Parmi les fonctionnalités les plus utiles de l'ancien plug-in, on trouvait la modification du tempo, et la transposition. L'altération du tempo était le plus souvent utilisée pour ralentir la musique et s'entraîner à vitesse réduite, avant de l'augmenter peu à peu. La transposition était utilisée, elle, soit par les chanteurs, pour ramener la partie chant à une tessiture plus confortable, soit par des instrumentistes, pour jouer dans une clé plus facile, ou plus adaptée. En MIDI ou en MYR, transposer ou changer le tempo est très facile. Les notes étant stockées en tant que telles, il suffit d'augmenter leur durée, ou d'ajouter ou retrancher un certain nombre de demi-tons à leur hauteur. En format audionumérique, c'est une autre paire de manches. Cela demande des calculs mathématiques très lourds, incluant des décomposition en série de Fourier, des calculs sur le spectre des fréquences, et une resynthèse du son. Le Javascript n'est pas un foudre de guerre, aussi nous craignions que ces calculs ne soient bien trop long pour être envisageables. En fait, il n'en est rien. Nous avons préparé une petite démo pour vous montrer: Démo de transposition/tempo Bien entendu, la vitesse du langage, et la lourdeur des calculs ne nous permet pas de faire dans la dentelle. Pas question de hi-fi, ici. Pour réduire les calculs, on ne traite que du mono, et on entend nettement les défauts inhérents au système: un affaiblissement de la dynamique, des attaques moins franches, un chevrotement des fréquences basses lorsque le tempo est fortement réduit, et un effet général d'écho du type "salle de bain". Mais l'idée n'est pas ici de faire quelque chose de parfait, seulement de produire un son écoutable et pas trop désagréable. Il est à noter que la vitesse de calcul varie très fortement d'un navigateur à l'autre, du simple au double, selon l'optimisation du moteur Javascript dans le traitement des 'tableaux typés', qui permettent d'effectuer des calculs intensifs sur des zones mémoire brutes. Firefox remporte ce match haut la main, très loin devant Chrome ou Safari. |