pvstanal

pvstanal — Traitement par analyse de vocodeur de phase avec détection/traitement d'attaque.

Description

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).

Syntaxe

fsig pvstanal ktimescal, kamp, kpitch, ktab, [kdetect, kwrap, ioffset, ifftsize, ihop, idbthresh]
      

Initialisation

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.

Exécution

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).

Exemples

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>


Crédits

Auteur : Victor Lazzarini
Février 2010

Nouveau greffon dans la version 5.13

Février 2005.