pvoc

pvoc — Implémente une reconstruction de signal au moyen d'un vocoder de phase basé sur la TFR.

Description

Implémente une reconstruction de signal au moyen d'un vocoder de phase basé sur la TFR.

Syntaxe

ares pvoc ktimpnt, kfmod, ifilcod [, ispecwp] [, iextractmode] \
      [, ifreqlim] [, igatefn]

Initialisation

ifilcod -- entier ou chaîne de caractères dénotant un fichier de contrôle dérivé de l'analyse d'un signal audio. Un entier dénote le suffixe d'un fichier pvoc.m ; une chaîne de caractères (entre guillemets) donne un nom de fichier, optionnellement un nom de chemin complet. Si ce n'est pas un nom de chemin complet, le fichier est d'abord cherché dans le répertoire courant, ensuite dans celui donné par la variable d'environnement SADIR (si elle est définie). Le contrôle pvoc contient des valeurs d'enveloppes d'amplitude et de fréquence définies par points, organisées pour une resynthèse par TFR. L'utilisation de la mémoire dépend de la taille des fichiers impliqués, qui sont lus et maintenus entièrement dans la mémoire durant les calculs, mais sont partagés par les appels multiples (voir aussi lpread).

ispecwp (facultatif) -- s'il est différent de zéro, l'opcode tente de préserver l'enveloppe spectrale tandis que le contenu fréquentiel est varié par kfmod. Vaut zéro par défaut.

iextractmode (facultatif) -- détermine s'il faut effectuer l'extraction spectrale et, dans ce cas, quels composants ayant des variations de fréquence sous ifreqlim ou au-dessus de ifreqlim seront écartés. Si iextractmode vaut 1, pvoc ne synthétise que les composants pour lesquels la différence de fréquence entre les trames d'analyse est plus grande que ifreqlim. Si iextractmode vaut 2, pvoc ne synthétise que les composants pour lesquels la différence de fréquence entre trames est plus petite que ifreqlim. iextractmode et ifreqlim valent 0 par défaut, ce qui provoque une simple resynthèse. Les exemples de la notice de pvadd montrent comment utiliser l'extraction spectrale.

igatefn (facultatif) -- le numéro d'une fonction stockée à appliquer aux amplitudes des bins de l'analyse avant la resynthèse. Si igatefn est supérieur à 0, les amplitudes de chaque bin seront modifiées par igatefn par un procédé simple de correspondance. D'abord, les amplitudes de tous les bins dans toutes les trames de l'ensemble du fichier d'analyse sont comparées pour déterminer la valeur de l'amplitude maximale. Cette valeur est ensuite utilisée pour créer des amplitudes normalisées comme indices dans la fonction stockée igatefn. L'amplitude maximale correspond au dernier point dans la fonction. Une amplitude nulle correspond au premier point dans la fonction. Les valeurs entre 0 et 1 sont mises en correspondance avec les points tout au long de la table de fonction. Les exemples de la notice de pvadd montrent comment utiliser le mappage d'amplitude.

Exécution

ktimpnt -- l'écoulement du temps en secondes dans le fichier d'analyse. ktimpnt doit toujours être positif, mais il peut avancer ou reculer, rester stationnaire ou être discontinu, comme pointeur dans le fichier d'analyse.

kfmod -- un facteur de transposition au taux-k : une valeur de 1 signifie pas de transposition, 1.5 transpose vers le haut d'une quinte parfaite et 0.5 transpose vers le bas d'une octave.

pvoc implémente une reconstruction de signal au moyen d'un vocoder de phase basé sur la TFR. Les données de contrôle proviennent d'un fichier d'analyse précompilé avec un taux de trame connu.

Cette implémentation de pvoc a été écrite à l'origine par Dan Ellis. Elle est basée en partie sur le système de Mark Dolson, mais le concept de pré-analyse est nouveau. L'extraction spectrale et le mappage d'amplitude (nouveau dans la version 3.56 de Csound) ont été ajoutés par Richard Karpen en se basant sur les fonctions dans SoundHack par Tom Erbe.

Exemples

Voici un exemple de l'opcode pvoc. Il utilise le fichier pvoc.csd.

Exemple 802. Exemple de l'opcode pvoc.

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   -m0  --limiter=.95 ;;;realtime audio out, with limiter protection
; For Non-realtime ouput leave only the line below:
; -o pvoc.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

sr = 44100
ksmps = 32
nchnls = 2
0dbfs  = 1

; by Menno Knevel 2021

gilen  filelen "fox.wav"	    ; get length of impulse soundfile

; analyze sound file and output result to pvoc-ex file
ires system_i 1,{{ pvanal fox.wav fox1.pvx }}          ; default settings

instr 1 ; untreated signal
asig    diskin2   "fox.wav", 1
prints  "\n---***YOU NOW HEAR THE UNTREATED SOUND SAMPLE***---\n"
outs    asig*.8, asig*.8
endin

instr 2

prints  "\n---***YOU NOW HEAR THE RESULT OF THIS ANALYZED FILE:***---\n"
ktime line 0, p3, gilen     ; timepointer over the entire sample
asig  pvoc ktime, p4, "fox1.pvx", 1 
      outs asig*.6, asig*.6
endin

</CsInstruments>
<CsScore>

i1 0 2.76      ; original sample

i2  5 2.76  1  ; no change so original sample is played
i2  10 2    1  ; played faster

i2  15 10   1  ; slowed down, same pitch &
i2  25 10   1.2; slowed down and higher pitch

e
</CsScore>
</CsoundSynthesizer>


Voir aussi

vpvoc, PVANAL.

Crédits

Auteurs : Dan Ellis et Richard Karpen
Seattle, Wash
1997