pvsvoc — Combine the spectral envelope of one fsig with the excitation (frequencies) of another.


This opcode provides support for cross-synthesis of amplitudes and frequencies. It takes the amplitudes of one input fsig and combines with frequencies from another. It is a spectral version of the well-known channel vocoder.


fsig pvsvoc famp, fexc, kdepth, kgain


fsig -- output pv stream

famp -- input pv stream from which the amplitudes will be extracted

fexc -- input pv stream from which the frequencies will be taken

kdepth -- depth of effect, affecting how much of the frequencies will be taken from the second fsig: 0, the output is the famp signal, 1 the output is the famp amplitudes and fexc frequencies.

kgain -- gain boost/attenuation applied to the output.

[Warning] Warning

It is unsafe to use the same f-variable for both input and output of pvs opcodes. Using the same one might lead to undefined behavior on some opcodes. Use a different one on the left and right sides of the opcode.


Example 371. Example

asig  in                                 ; get the signal in
asyn  oscili 16000, 150, 1               ; excitation signal

famp  pvsanal   asig, 1024, 256, 1024, 1 ; analyse in signal
fexc  pvsanal   asyn, 1024, 256, 1024, 1 ; analyse excitation signal
ftps  pvsvoc   famp, fexc, 1, 1     ; cross it
atps  pvsynth  ftps                      ; synthesise it                      
       out atps

The example above shows a typical cross-synthesis operation. The input signal (say a vocal sound) is used for its amplitude spectrum. An oscillator with an arbitrary complex waveform produces the excitation signal, giving the vocal sound its pitch.


Author: Victor Lazzarini;
April 2005

New plugin in version 5

April 2005.