Max for Live: extrême étirement du temps avec Spectral Stretch
Dans ce billet, je donne des précisions sur la création du device Max for Live Spectral Stretch.
Plusieurs solutions existent pour allonger la durée d'un son sans changer sa hauteur. Certaines méthodes temporelles sont basées sur le Phonogène de Pierre Schaefer. Une autre approche consiste à transformer le son dans le domaine spectral, en utilisant un vocodeur de phase. Dans ce cas, les échantillons sonores sont convertis en données spectrales par une Transformée de Fourier Rapide (FFT). À partir de là, même si l'on se concentre sur l'étirement du temps extrême, les détails d'implémentation du vocodeur de phase ont d'importantes conséquences sur la qualité sonore et la flexibilité de l'outil pour un usage en temps réel.
Avant de présenter le device Max for Live Spectral Stretch, regardons de plus près une sélection de quatre algorithmes possibles:
- Paulstretch
- Vocodeur de Phase temps réel avec Max
- Interpolation entre des spectres enregistrés
- Re-synthèse stochastique à partir d'un spectrogramme enregistré
Paulstretch
Le Extreme Sound Stretch de Paul, également connu sous le nom de Paulstretch, est un algorithme conçu par Paul Nasca pour un extrême étirement du temps. Vous en avez peut-être déjà entendu un application : à cette date, la vidéo Justin Bieber 800% Slower a reçu plus de 3 millions de vues. L'algorithme est inclus dans Audacity depuis la version 2.2.
Paul utilise une technique traditionnelle de Vocodeur de Phase, avec des fenêtres d'analyse potentiellement très grandes. Voici une illustration où il en explique le fonctionnement :
Avec Paulstretch, vous pouvez spécifier une très grande fenêtre d'analyse. Dans l'interface d'Audacity, l'utilisatrice donne une résolution temporelle (time resolution) en secondes ; ce nombre, traduit en nombre d'échantillons, est arrondi à une puissance de 2 utilisée comme taille de FFT.
Vocodeur de Phase temps réel avec Max
Richard Dudas et Cort Lippe ont publié en 2006 un excellent tutoriel pour un vocodeur de phase dans Max, qui permet un étirement extrême du temps contrôlé en temps réel. Dans leur implémentation, les son est simultanément analysé et re-synthétisé. Vous ne pouvez pas avoir de tailles de FFT aussi grandes qu'avec Paulstretch : l'objet [fft~] dans Max permet une taille de FFT d'un maximum de 4096 échantillons à cette date. Dans la partie deux du tutoriel sur le vocodeur de phase, les auteurs introduisent un peu de hasard dans les phases, que vous pouvez ajuster pour produire des variations spectrales similaires à l'effet Paulstretch. Un autre niveau de flou peut être introduit avec un niveau de hasard sur la position de la tête de lecture. Ceci est souvent utilisé quand une analyse/re-synthèse granulaire est utilisée pour des effets de freeze et de time stretching.
Interpolation entre des spectres enregistrés
Dans les deux exemples précédents, l'interpolation d'une fenêtre d'analyse à la suivante est réalisée avec un niveau de hasard. Vous pouvez aussi interpoler linéairement entre des données avant la re-synthèse sonore. Dans ce cas, vous faites l'analyse en temps réel, stockez les données spectrales des fenêtres d'analyse successives, et réalisez l'interpolation en temps réel quand vous jouez le son. Ceci permet une modification en temps réel de la vitesse de lecture, mais le son résultant peut être perçu comme plus statique, moins intéressant, qu'avec un niveau de hasard. Plus de détails sont disponibles dans l'article A Tutorial on Spectral Sound Processing with Max/MSP and Jitter.
Re-synthèse stochastique à partir d'un spectrogramme enregistré
Comme dans le paragraphe précédent, nous conservons ici le stockage des données spectrales. Au moment de la re-synthèse, nous effectuons une sélection stochastique pondérée des données entre une fenêtre d'analyse et la suivante. Vous pourriez appeler cela une interpolation stochastique. Vous pouvez ajuster les paramètres en temps réel, tout en conservant une couleur sonore plus vivante qu'avec une interpolation linéaire. Ceci fonctionne même avec une vitesse de lecture nulle : j'ai utilisé cette approche pour le device Max for Live Spectral Freeze Pro. Un autre avantage est inclus : vous pouvez ajuster l'intervalle temporel utilisé pour la re-synthèse. C'est le paramètre Blur dans Spectral Stretch. Pour plus de détails, voir cette vidéo de 2008 : extreme time stretching with Max.
Extrême étirement du temps dans Max for Live
Pour le device Max for Live Spectral Stretch, j'utilise le quatrième algorithme présenté ci-dessus : la re-synthèse stochastique.
Vous pouvez ajuster le son avec les contrôles suivants :
- Record : débute l'enregistrement du son d'entrée de la piste dans le device.
- Rewind : place la tête de lecture au début du son.
- Auto : quand sélectionné, Rewind est déclenché automatiquement avec Record.
- Stretch Factor : facteur d'étirement du temps, ajustable de 1 à 1000.
- Reverse : sens de lecture inversé.
- Freeze : arrêt sur place de la tête de lecture : tant que sélectionné, la vitesse de lecture est nulle.
- Blur : ajuste l'étendue de son à partir de laquelle la re-synthèse stochastique est opérée.
- Denoise : noise gate, pour changer la texture sonore.
- Dry/Wet Mix : ajuste la balance entre le son direct et le son du device.
- Duration : ajuste la longueur du son enregistré. Quand la durée du son est modifiée, le son est ré-initialisé.
- Click & Drag sur la forme d'onde : cliquer la forme d'onde pour repositionner la tête de lecture. Cliquer et bouger pour voyager dans la forme d'onde.
Sur cette image, les paramètres disponibles pour MIDI mapping sont surlignés :
Commentaires
Enregistrer un commentaire