pvsarp

pvsarp — Arpeggiate the spectral components of a streaming pv signal.

Description

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

Performance

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] 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 826. 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 827. 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>


See also

Tools for Real-time Spectral Processing (pvs opcodes)

Credits

Author: Victor Lazzarini
April 2005

New plugin in version 5

April 2005.