pvbufread

pvbufread — Lit un fichier d'analyse par vocodeur de phase et rend accessibles les données récupérées.

Description

pvbufread lit depuis un fichier pvoc et rend les données récupérées accessibles à toutes les unités pvinterp et pvcross suivantes qui surviennent dans un instrument avant un pvbufread consécutif (de la même façon que lpread et lpreson travaillent ensemble). Les données sont passées en interne et l'unité n'a pas de sortie propre.

Syntaxe

pvbufread ktimpnt, ifile

Initialisation

ifile -- le numéro pvoc (n dans pvoc.n) ou le nom entre guillemets du fichier d'analyse créé avec pvanal. (Voir pvoc.)

Exécution

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

Exemples

L'exemple ci-dessous montre une utilisation de pvbufread avec pvinterp pour interpoler entre le son d'un hautbois et celui d'une clarinette. La valeur de kinterp retournée par l'opcode linseg est utilisée pour définir le déroulement temporel de la transition entre les deux sons. Les interpolations des fréquences et des amplitudes sont contrôlées par le même facteur dans cet exemple, mais il peut être intéressant de ne pas les synchroniser de cette manière pour obtenir d'autres effets. Cet exemple commence par un son de clarinette qui se transforme en hautbois et revient ensuite à la clarinette. kfreqscale2 vaut 1.065 car dans ce cas le hautbois est plus haut d'un demi-ton que la clarinette et cela les met approximativement à la même hauteur. kampscale2 vaut 0.75 car la clarinette analysée était un peu plus forte que le hautbois analysé. Les réglages de ces deux paramètres donnent une transition assez douce dans ce cas, mais de tels ajustements ne sont en aucun cas nécessaires ou même préconisés.

ktime1  line      0, p3, 3.5 ; used as index in the "oboe.pvoc" file
ktime2  line      0, p3, 4.5 ; used as index in the  "clar.pvoc" file
kinterp linseg    1, p3*0.15, 1, p3*0.35, 0, p3*0.25, 0, p3*0.15, 1, p3*0.1, 1
        pvbufread ktime1, "oboe.pvoc"
apv     pvinterp  ktime2,1,"clar.pvoc", 1, 1.065, 1, 0.75, 1-kinterp, 1-kinterp

Ci-dessous un exemple d'utilisation de pvbufread avec pvcross. Dans cet exemple les amplitudes utilisées dans la resynthèse évoluent graduellement de celles du hautbois à celles de la la clarinette. Naturellement, les fréquences sont celles de la clarinette durant tout le processus car pvcross n'utilise pas les données de fréquence du fichier lut par pvbufread.

ktime1  line      0, p3, 3.5 ; used as index in the "oboe.pvoc" file
ktime2  line      0, p3, 4.5 ; used as index in the "clar.pvoc" file
kcross  expon     0.001, p3, 1
        pvbufread ktime1, "oboe.pvoc"
apv     pvcross   ktime2, 1, "clar.pvoc", 1-kcross, kcross

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

Exemple 799. Exemple de l'opcode pvbufread.

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
;-iadc    ;;;uncomment -iadc if realtime audio input is needed too
; For Non-realtime ouput leave only the line below:
; -o pvbufread.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

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

; by Menno Knevel 2021

gilen1  filelen "flute.aiff"    ; get length of soundfiles
gilen2  filelen "beats.wav"

; analyze sound files and output results to pvoc-ex files
ires1 system_i 1,{{ pvanal flute.aiff flute.pvx }} ; use default settings
ires2 system_i 1,{{ pvanal beats.wav beats.pvx }}  

instr 1 ; untreated signals

asig    diskin2   p4 , 1
print gilen1
print gilen2
prints  "\n---***YOU NOW HEAR THE UNTREATED SOUND SAMPLES***---\n"
    outs    asig, asig
endin

instr 2

prints  "\n---***YOU NOW HEAR THE RESULT OF THE ANALYZED FILES:***---\n"
ktime1 line  0, p3, .8		; use a part of "flute.pvx" file
ktime2 line  0, p3, 1		; use a part of "beats.pvx" file
kcross line  0, p3, 1       ; from flute to beats
       pvbufread ktime1, "flute.pvx"
asig   pvcross   ktime2, 1, "beats.pvx", 1-kcross, kcross
       outs asig, asig

endin
</CsInstruments>
<CsScore>
s
i1 0 2.62   "flute.aiff"
i1 3 2      "beats.wav"
s
i2 1 3
i2 5 10
e
</CsScore>
</CsoundSynthesizer>


Voir aussi

pvcross, pvinterp, pvread, tableseg, tablexseg

Crédits

Auteur : Richard Karpen
Seattle, WA USA
1997