Skip to content

resonxk

Control signal resonant filter stack.

resonxk connects several resonk filters in series, all with the same settings. More layers give a sharper response.

Syntax

kres = resonxk(ksig, kcf, kbw[, inumlayer, iscl, istor])
kres resonxk ksig, kcf, kbw[, inumlayer, iscl, istor]

Initialization

inumlayer - number of filters in the stack. The default is 4.

iscl (optional, default=0) - scaling for each filter. A value of 1 gives each filter a peak gain of 1. A value of 2 gives each filter an RMS gain of 1 for white noise; this does not give the whole stack an RMS gain of 1. A value of 0 leaves the signal unscaled.

istor (optional, default=0) -- set to zero to clear the filter history, or nonzero to keep it on reinitialization. First use and a change in the number of filters always clear the history.

Performance

kres - output signal

ksig - input signal

kcf - center frequency in Hz, shared by all filters.

kbw - bandwidth of each filter in Hz (the difference between the upper and lower half-power points).

The filters process one sample per control period. Their frequency range therefore depends on kr. The bandwidth setting applies to each filter; adding layers narrows the response of the whole stack.

Examples

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

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

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

gisin ftgen 0, 0, 2^10, 10, 1

instr 1

ksig randomh  400, 1800, 150
aout poscil   .2, 1000+ksig, gisin
     outs     aout, aout
endin

instr 2

ksig randomh  400, 1800, 150
kcf  line     1, p3, 1000               ;vary high-pass
ilay = p4
ksig resonxk  ksig, kcf, 100, ilay
aout poscil   .2, 1000+ksig, gisin
asig interp   ksig                      ;convert k-rate to a-rate
aout balance  asig, aout                ;avoid getting asig out of range
     outs     aout, aout
endin

</CsInstruments>
<CsScore>
i 1 0  5
i 2 6  5 1      ;number of filter stack = 1
i 2 12 5 5      ;number of filter stack = 5
e
</CsScore>
</CsoundSynthesizer>

See also

Standard Filters: Control signal filters

Credits

Written by Gabriel Maldonado.

New in Csound 5 (Previously available only on CsoundAV)