Skip to content

pvsmix

Combine the strongest bins from two spectral signals.

Syntax

fsig = pvsmix(fsigin1, fsigin2)
fsig pvsmix fsigin1, fsigin2

Performance

fsig -- output pv stream

fsigin1 -- input pv stream in amplitude-frequency or amplitude-phase format.

fsigin2 -- input pv stream with the same FFT size, hop size, window settings, and data format as fsigin1. Both inputs must use the same analysis mode (frame-based or sliding).

For each bin, pvsmix copies the larger magnitude and its frequency or phase to the output. If the magnitudes are equal, it uses the first input's bin.

For frame-based input, a new frame from either input updates the output using the latest frame from each input. For sliding input, it mixes each active sample separately.

Reinitialize pvsmix if you change the sources' analysis settings.

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

Examples

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

Example of the pvsmix 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 pvsmix.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

; by Menno Knevel 2021

sr = 44100
ksmps = 32
nchnls = 2
0dbfs  = 1

instr 1

asig1 diskin2 "drumsMlp.wav", .5,0,1            ;signal in 1 at half speed
asig2 diskin2 "drumsMlp.wav", 1,0,1             ;signal in 2
fsig1 pvsanal asig1,1024,256,1024,0           ;pvoc analysis 
fsig2 pvsanal asig2,1024,256,1024,0           ;of both signals
fsall pvsmix  fsig1, fsig2 
asig  pvsynth fsall
outs asig, asig 

endin 
</CsInstruments>
<CsScore>

i 1 0 8
e
</CsScore>
</CsoundSynthesizer>

See also

Tools for Real-time Spectral Processing (pvs opcodes)

Credits

Author: Victor Lazzarini
November 2004

New plugin in version 5

November 2004.