pvsarp
Prev | Orchestra Opcodes and Operators | Next

## 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
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 812. 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 813. 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.

Prev | Up | Next
pvsanal | Home | pvsbandp