pvstanal — Traitement par analyse de vocodeur de phase avec détection/traitement d'attaque.
pvstanal implémente une analyse par vocodeur de phase en lisant des tables de fonction contenant des sources de son échantillonné avec GEN01. pvstanal accepte ainsi les tables à allocation différée.
Cet opcode permet une mise à l'échelle du temps indépendante de celle de la fréquence. Le temps progresse en interne mais il est contrôlé par un paramètre de mise à l'échelle du tempo ; lorsqu'une attaque est détectée, l'échelonnement du temps est momentanément stoppé pour éviter le brouillage des attaques. La qualité de l'effet est généralement améliorée avec le verrouillage de phase activé.
pvstanal met aussi à l'échelle la hauteur, indépendamment de la fréquence, en utilisant un facteur de transposition (taux-k).
fsig pvstanal ktimescal, kamp, kpitch, ktab, [kdetect, kwrap, ioffset, ifftsize, ihop, idbthresh]
ifftsize -- taille de la TFR (puissance de deux), vaut par défaut 2048.
ihop -- taille du saut, vaut par défaut 512
ioffset -- décalage du début de la lecture dans la table, en secondes
idbthresh -- seuil pour la détection des attaques, basé sur le rapport de spectre de puissance en dB entre deux fenêtres successives. Un rapport détecté au-dessus du seuil stoppe momentanément l'échelonnement du temps, pour éviter le brouillage (vaut 1 par défaut). Par défaut, tout ce qui dépasse une différence de puissance de 1 dB entre trames sera détecté comme un attaque.
ktimescal -- rapport de mise à l'échelle du temps, < 1 étirement, > 1 contraction.
kamp -- mise à l'échelle de l'amplitude
kpitch -- mise à l'échelle de la hauteur de grain (1=hauteur normale, < 1 plus grave, > 1 plus aigu ; négatif, à l'envers)
kdetect -- 0 ou 1, pour désactiver/activer les détections/traitements d'attaque. Le détecteur d'attaque cherche les différences de puissance entre les fenêtres d'analyse. S'il trouve plus que ce qui a été spécifié dans le paramètre dbthresh, une attaque est déclarée. La mise à l'échelle du temps est momentanément suspendue afin que les attaques ne soient pas modifiées. Vaut 1 par défaut, ce qui active les détections/traitements d'attaque.
ktab -- table de fonction du signal source. Les tables à allocation différée (voir GEN01) sont acceptées, mais l'opcode attend une source mono. On peut changer de table au taux-k.
kwrap -- 0 ou 1, pour désactiver/activer la lecture cyclique de table (vaut 1 par défaut).
Voici un exemple de l'opcode pvstanal. Il utilise le fichier pvstanal.csd.
Exemple 852. Exemple de l'opcode pvstanal.
Voir les sections Audio en Temps Réel et Options de la Ligne de Commande pour plus d'information sur l'utilisation des options de la ligne de commande.
<CsoundSynthesizer> <CsOptions> ; Select audio/midi flags here according to platform -odac ;;;realtime audio out ;-iadc ;;;uncomment -iadc if realtime audio input is needed too ; For Non-realtime ouput leave only the line below: ; -o pvstanal.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 gifil ftgen 0, 0, 0, 1, "fox.wav", 0, 0, 1 instr 1 fsig pvstanal p4, 1, p5, gifil, p6, p7 aout pvsynth fsig outs aout, aout endin instr 2 kspeed randi 2, 2, 2 ;speed randomly between -2 and 2 kpitch randi 2, 2, 2 ;pitch between 2 octaves lower or higher fsig pvstanal kspeed, 1, octave(kpitch), gifil aout pvsynth fsig outs aout, aout endin </CsInstruments> <CsScore> ; speed pch det wrap i 1 0 2.757 1 1 0 0 i 1 3 . 2 1 0 0 i 1 6 . 2 1 0 1 i 1 9 . 1 .75 i 2 12 10 ;random scratching e </CsScore> </CsoundSynthesizer>