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.
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. |
Here is an example of the pvsarp opcode. It uses the file pvsarp.csd
Example 807. Example of the pvsarp 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 ; 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 808. Example of the pvsarp 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 ; 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>