pvsfread — Lit un canal sélectionné d'un fichier d'analyse PVOC-EX.
Crée un flot fsig en lisant un canal sélectionné d'un fichier d'analyse PVOC-EX chargé en mémoire, avec interpolation de trame. Seuls les fichiers au format 0 (amplitude + fréquence) sont actuellement supportés. L'opération de cet opcode reflète celle de pvoc, mais en restituant un fsig au lieu d'un signal resynthétisé.
ifn -- Nom du fichier d'analyse. Il doit avoir l'extension de fichier .pvx.
On peut générer un fichier PVOC-EX multi-canaux avec l'pvanal utility étendue.
ichan -- (facultatif) Le canal à lire (en comptant à partir de 0). Vaut 0 par défaut.
ktimpt -- pointeur temporel dans le fichier d'analyse, en secondes. Voir la description du même paramètre de pvoc pour son utilisation.
Noter que les fichiers d'analyse peuvent être très grands, surtout s'ils sont multi-canaux. La lecture de tels fichiers en mémoire provoquera probablement des coupures audio durant une exécution en temps réel. Comme le fichier n'est lu qu'une fois, étant ensuite disponible pour tous les opcodes intéressés, il peut être opportun de disposer d'un intrument dédié au préchargement de ces fichiers d'analyse au démarrage.
Voici un exemple de l'opcode pvsfread. Il utilise le fichier pvsfread.csd.
Exemple 829. Exemple de l'opcode pvsfread.
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 pvsfread.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 0dbfs = 1 nchnls = 2 ; analyze sound file, creating a PVOC-EX file ires1 system_i 1,{{ pvanal stereoJungle.wav stereoJungle.pvx }} ; default settings instr 1 ; create a PVOC-EX (*.pvx) file with PVANAL first idur filelen "stereoJungle.pvx" ;find duration of (stereo) analysis file kpos line 0,p3,idur ;to ensure we process whole file fsigr pvsfread kpos,"stereoJungle.pvx", 1 ;create fsig from right channel aout pvsynth fsigr ;resynthesise it outs aout, aout endin </CsInstruments> <CsScore> i 1 0 20 ; slow down i 1 21 1 ; speed up e </CsScore> </CsoundSynthesizer>
Voici un autre exemple de l'opcode pvsfread. Il utilise le fichier pvsfread-2.csd.
Exemple 830. Autre exemple de l'opcode pvsfread.
<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 pvsfread-2.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 0dbfs = 1 nchnls = 2 instr 1 ; play and analyze sound file, but one channel only idur filelen "stereoJungle.wav" ; check duration of sample prints "\nsound file duration = %f\n", idur ichn filenchnls "stereoJungle.wav" ; check channels- a stereo sound! prints "number of channels = %f\n\n", ichn asigL, asigR diskin2 "stereoJungle.wav" ; stereo sound file fss pvsanal asigR, 1024, 256, 1024, 0 ; choose which channel- here the Right channel pvsfwrite fss, "stereoJungle.pvx" ; write that analyzed channel to pvocex file ase pvsynth fss ; lets hear it outs ase, ase endin instr 2 ; must be called after instr 1 finishes prints "\n--**analyzed file is played back**--\n\n" idur filelen "stereoJungle.pvx" ; find duration of (stereo) analysis file kpos line 0,p3,idur ; to ensure we process whole file fsigr pvsfread kpos,"stereoJungle.pvx", 0 ; read the fsig from this (= Right) channel aout pvsynth fsigr ; resynthesise it outs aout, aout endin </CsInstruments> <CsScore> s i 1 0 7 s i 2 0 7 i 2 8 4 ; faster e </CsScore> </CsoundSynthesizer>