Le Blog

Manipulations de buffers dans Max via JavaScript

Max est adapté à toute manipulation sonore en temps réel, mais il y a de nombreuses opérations qu'on souhaiterait souvent effectuer en temps différé, parce que c'est plus simple ou plus rapide et qu'on n'a pas envie d'ouvrir un éditeur de son toutes les cinq minutes alors que des opérations de base sur les sons devraient pouvoir se faire directement dans Max.

L'objet JS, inclus dans la version standard de Max depuis longtemps et fonctionnant donc tant sous Windows que MacOS, est parfait pour cette fonction. Il s'agit d'un "moteur" JavaScript intégré directement dans Max. Outre la manipulation en temps réel de données (mais pas de flux audio), l'objet JS est capable de manipuler des buffers. Cela ouvre la porte à de nombreux traitements utilitaires tels que l'application de fondus ou d'enveloppes, le groupement de fichiers mono en fichiers stéréo, la transformation de buffers mono en buffers stéréo, etc. JS autorise également l'application de multiples traitements tels que distorsion, filtrage, mixage, etc.

J'ai créé un patch qui inclut de nombreux exemples afin de voir ce que JS avait dans le ventre. Il pourrait être encore amélioré, notamment quant au fait que certaines opérations remplacent le contenu d'origine du buffer et d'autres placent le son transformé dans un autre buffer, sans réelle cohérence quant au pourquoi j'ai fait un choix pour certaines fonctions et le choix opposé dans d'autres. L'idéal serait d'avoir une option permettant d'effectuer chaque traitement au choix de manière destructive ou vers un autre buffer, ou encore d'avoir une fonction "undo". A méditer pour une future mise à jour.

Je pense par ailleurs n'avoir qu'exploré une petite partie du potentiel de JS sous Max. C'est un travail exploratoire en vue d'approcher des opérations plus complexes sur les sons (suivi de hauteur, analyse spectrale, etc).

Ces exemples pourraient utilement être transformés en un objet codé en langage C car ils sont relativement lents, surtout quand il s'agit de fonctions qui concernent les wavesets ou des buffers longs. Si vous voyez apparaître la "balle-de-plage-de-la-mort", soyez patient, Max n'a probablement pas planté, mais il faut attendre que cela passe.

Le téléchargement se passe ici.

 

 

Mots-clés: Max/MSP/Jitter, logiciel, JavaScript

Imprimer E-mail