pvsarp
Arpeggiate the spectral components of a streaming pv signal.
This opcode arpeggiates spectral components, by amplifying one bin and attenuating all the others around it. Used with an LFO it will provide a spectral arpeggiator similar to Trevor Wishart's CDP program specarp.
Syntax
fsig pvsarp fsigin, kbin, kdepth, kgain
fsig -- output pv stream
fsigin -- input pv stream
kbin -- target bin, normalised 0 - 1 (0Hz - Nyquist).
kdepth -- depth of attenuation of surrounding bins
kgain -- gain boost applied to target bin
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 pvsarp opcode. It uses the file pvsarp.csd
Example of the pvsarp opcode. |
---|
| <CsoundSynthesizer>
<CsOptions>
; Select audio/midi flags here according to platform
; Audio out Audio in No messages
-odac -iadc ;;;-d RT audio I/O
; For Non-realtime ouput leave only the line below:
; -o pvsarp.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>
; additions by Menno Knevel 2021
sr = 44100
ksmps = 32
nchnls = 2
0dbfs = 1
nchnls_i = 1 ; number of input channels
instr 1
asig diskin2 "flute.aiff", 1, 0, 1 ; get the sample in
idepth = p4
prints "\n--**here the sample is used**--\n"
fsig pvsanal asig, 1024, 256, 1024, 1 ; analyse it
kbin oscili 0.1, 0.05, 1 ; ftable 1 in the 0-1 range
ftps pvsarp fsig, kbin+0.01, idepth, 7 ; arpeggiate it (range 220.5 - 2425.5)
atps pvsynth ftps ; synthesise it
outs atps, atps
endin
instr 2
asig in ; get the (microphone?) signal in
idepth = p4
prints "\n--**please use microphone**--\n"
prints "--**if no input is given, there will be only silence...\n"
fsig pvsanal asig, 1024, 256, 1024, 1 ; analyse it
kbin oscili 0.1, 0.3, 1 ; ftable 1 in the 0-1 range
ftps pvsarp fsig, kbin+0.01, idepth, 7 ; arpeggiate it (range 220.5 - 2425.5)
atps pvsynth ftps ; synthesise it
outs atps, atps
endin
</CsInstruments>
<CsScore>
f 1 0 4096 10 1 ;sine wave
s
i 1 0 10 0.5 ; notes for the flute sample
i 1 + 10 1
s
i 2 0 10 0.9 ; notes for the microphone
i 2 + 10 0.5
e
</CsScore>
</CsoundSynthesizer>
|
Here is another example of the pvsarp opcode. It uses the file pvsarp2.csd
Example of the pvsarp opcode. |
---|
| <CsoundSynthesizer>
<CsOptions>
; Select audio/midi flags here according to platform
; Audio out Audio in
-odac ;;;RT audio I/O
; For Non-realtime ouput leave only the line below:
; -o pvsarp2.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>
sr = 44100
ksmps = 32
nchnls = 2
0dbfs = 1
;; example written by joachim heintz 2009
; additions by Menno Knevel 2021
instr 1
ifftsize = 1024
ioverlap = ifftsize / 4
iwinsize = ifftsize
iwinshape = 1 ; von-Hann window
Sfile1 = "fox.wav"
ain1 soundin Sfile1
fftin pvsanal ain1, ifftsize, ioverlap, iwinsize, iwinshape
;make 3 independently moving accentuations in the spectrum
kbin1 linseg 0.05, p3/2, .05, p3/2, .05
farp1 pvsarp fftin, kbin1, .9, 10
kbin2 linseg 0.075, p3/2, .1, p3/2, .075
farp2 pvsarp fftin, kbin2, .9, 10
kbin3 linseg 0.02, p3/2, .03, p3/2, .04
farp3 pvsarp fftin, kbin3, .9, 10
;resynthesize and add them
aout1 pvsynth farp1
aout2 pvsynth farp2
aout3 pvsynth farp3
;aout = aout1*.3 + aout2*.3 + aout3*.3
outs aout1*1 + aout2*.5, aout2*.5 + aout3*.3
endin
</CsInstruments>
<CsScore>
i 1 0 3
e
</CsScore>
</CsoundSynthesizer>
|
See also
Tools for Real-time Spectral Processing (pvs opcodes)
Credits
Author: Victor Lazzarini
April 2005
New plugin in version 5
April 2005.