pvread — Reads from a phase vocoder analysis file and returns the frequency and amplitude from a single analysis channel or bin.
pvread reads from a pvoc file and returns the frequency and amplitude from a single analysis channel or bin. The returned values can be used anywhere else in the Csound instrument. For example, one can use them as arguments to an oscillator to synthesize a single component from an analyzed signal or a bank of pvreads can be used to resynthesize the analyzed sound using additive synthesis by passing the frequency and magnitude values to a bank of oscillators.
ifile -- the pvoc number (n in pvoc.n) or the name in quotes of the analysis file made using pvanal. (See pvoc.)
ibin -- the number of the analysis channel from which to return frequency in Hz and magnitude.
kfreq, kamp -- outputs of the pvread unit. These values, retrieved from a phase vocoder analysis file, represent the values of frequency and amplitude from a single analysis channel specified in the ibin argument. Interpolation between analysis frames is performed at k-rate resolution and dependent of course upon the rate and direction of ktimpnt.
ktimpnt -- the passage of time, in seconds, through this file. ktimpnt must always be positive, but can move forwards or backwards in time, be stationary or discontinuous, as a pointer into the analysis file.
The example below shows the use pvread to synthesize a single component at a time from a phase vocoder analysis file. It should be noted that the kfreq and kamp outputs can be used for any kind of synthesis, filtering, processing, and so on.
Example 809. Example of the pvread 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 -m0 --limiter=.95 ;;;realtime audio out, with limiter protection ;-iadc ;;;uncomment -iadc if realtime audio input is needed too ; For Non-realtime ouput leave only the line below: ; -o pvread.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 0dbfs = 1 nchnls = 2 ; 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, asig endin instr 2 prints "\n---***YOU NOW HEAR THE RESULT OF THIS ANALYZED FILE:***---\n" ibin = p4 ktime line 0, p3, 2.8 kfreq, kamp pvread ktime, "fox1.pvx", ibin ;read data from 7th analysis bin. asig poscil kamp, kfreq outs asig*5, asig*5 ;compensate loss of volume endin </CsInstruments> <CsScore> i1 0 2.76 ; original sample s i2 0 2.76 7 ; 3 different bins i2 + 2.76 15 i2 + 2.76 25 s i2 2 6 7 ; slow chord i2 2 6 50 i2 2 2 75 e </CsScore> </CsoundSynthesizer>