pvbufread — Lit un fichier d'analyse par vocodeur de phase et rend accessibles les données récupérées.
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.
ifile -- le numéro pvoc (n dans pvoc.n) ou le nom entre guillemets du fichier d'analyse créé avec pvanal. (Voir pvoc.)
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.
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>