pvsfread

pvsfread — Read a selected channel from a PVOC-EX analysis file.

Description

Create an fsig stream by reading a selected channel from a PVOC-EX analysis file loaded into memory, with frame interpolation. Only format 0 files (amplitude+frequency) are currently supported. The operation of this opcode mirrors that of pvoc, but outputs an fsig instead of a resynthesized signal.

Syntax

fsig pvsfread ktimpt, ifn [, ichan]

Initialization

ifn -- Name of the analysis file. This must have the .pvx file extension.

A multi-channel PVOC-EX file can be generated using the extended pvanal utility.

ichan -- (optional) The channel to read (counting from 0). Default is 0.

Performance

ktimpt -- Time pointer into analysis file, in seconds. See the description of the same parameter of pvoc for usage.

Note that analysis files can be very large, especially if multi-channel. Reading such files into memory will very likely incur breaks in the audio during real-time performance. As the file is read only once, and is then available to all other interested opcodes, it can be expedient to arrange for a dedicated instrument to preload all such analysis files at startup.

Examples

Here is an example of the pvsfread opcode. It uses the file pvsfread.csd.

Example 835. Example of the pvsfread opcode.

See the sections Real-time Audio and Command Line Flags for more information on using command line flags.

<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>


Here is another example of the pvsfread opcode. It uses the file pvsfread-2.csd.

Example 836. Another example of the pvsfread opcode.

<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>


See also

Tools for Real-time Spectral Processing (pvs opcodes)

Credits

Author: Richard Dobson
August 2001

New in version 4.13