vpvoc

vpvoc — Implémente une reconstruction de signal au moyen d'un vocoder de phase basé sur la TFR et une enveloppe supplémentaire.

Description

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

Syntaxe

ares vpvoc ktimpnt, kfmod, ifile [, ispecwp] [, ifn]

Initialisation

ifile -- le numéro pvoc (n dans pvoc.n) ou le nom entre guillements du fichier d'analyse obtenu au moyen de pvanal. (Voir pvoc.)

ispecwp (facultatif, 0 par défaut) -- 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.

ifn (facultatif, 0 par défaut) -- table de fonction facultative contenant l'information de contrôle pour vpvoc. Si ifn = 0, le contrôle est dérivé en interne d'une unité tableseg ou tablexseg précédente. Vaut 0 par défaut. (Nouveau dans la version 3.59 de Csound.)

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.

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.

vpvoc est identique à pvoc mais il utilise la table de fonction d'un tableseg ou d'un tablexseg précédent (passée en interne à vpvoc) comme enveloppe pour les amplitudes des canaux de données analysées. Une table spécifiée par ifn peut être utilisée de manière optionnelle.

Il en résulte une enveloppe spectrale. La taille de la fonction utilisée dans tableseg doit être tailletrame/2,tailletrame est le nombre de bins dans le fichier d'analyse du vocoder de phase utilisé par vpvoc. Chaque position dans la table est utilisée pour échelonner un seul bin d'analyse. En utilisant différentes fonctions pour ifn1, ifn2, etc.. dans le tableseg, l'enveloppe spectrale devient dynamique. Voir aussi tableseg et tablexseg.

Exemples

L'exemple suivant avec vpvoc, montre l'utilisation de fonctions telles que

f 1 0 256 5 .001 128 1 128 .001
f 2 0 256 5 1 128 .001 128 1
f 3 0 256 7 1 256 1

pour pondérer les amplitudes des bins d'analyse séparés.

ktime   line         0, p3, 3 ; pointeur de temps, en secondes, dans le fichier
        tablexseg    1, p3*0.5, 2, p3*0.5, 3
apv     vpvoc        ktime, 1, "pvoc.file"

Le résultat sera une « enveloppe spectrale » variant dans le temps, appliquée aux données d'analyse du vocoder de phase. Comme les fréquences appariées avec les amplitudes qui sont pondérées par ces fonctions sont amplifiées ou atténuées, cela a pour effet d'appliquer des filtres très précis au signal. Dans cet exemple, la première table aura l'effet d'un filtre passe-bande, se transformant graduellement en réjecteur de bande sur la première moitié de la note, puis allant vers aucune modification des amplitudes dans la seconde moitié.

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

Exemple 1200. 

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   ;;;realtime audio out
; For Non-realtime ouput leave only the line below:
; -o vpvoc.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
      tablexseg 1, p3, 2	; morph from table 1 to table 2
prints  "2 tables are used as filter envelopes (tables 1 & 2)\n"
asig  vpvoc ktime, p4, "fox1.pvx"
      outs asig, asig
endin

</CsInstruments>
<CsScore>
f 1 0 512 9 .5 1 0
f 2 0 512 5 1 60 0.01 390 0.01 62 1

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  15 10   1.2; higher pitch, forming a chord

e
</CsScore>
</CsoundSynthesizer>


Voir aussi

pvoc

Crédits

Auteurs : Dan Ellis et Richard Karpen
Seattle, WA USA
1997

Nouveau dans la version 3.44