fofilter — Formant filter.
Fofilter generates a stream of overlapping sinewave grains, when fed with a pulse train. Each grain is the impulse response of a combination of two BP filters. The grains are defined by their attack time (determining the skirtwidth of the formant region at -60dB) and decay time (-6dB bandwidth). Overlapping will occur when 1/freq < decay, but, unlike FOF, there is no upper limit on the number of overlaps. The original idea for this opcode came from J McCartney's formlet class in SuperCollider, but this is possibly implemented differently(?).
istor --initial disposition of internal data space. Since filtering incorporates a feedback loop of previous output, the initial status of the storage space used is significant. A zero value will clear the space; a non-zero value will allow previous information to remain. The default value is 0.
asig -- input signal.
xcf -- filter centre frequency
xris -- impulse response attack time (secs).
xdec -- impulse response decay time (secs).
Here is an example of the fofilter opcode. Play fofilter.csd
Example 363. Example of the fofilter 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 -odac ;;;realtime audio out ;-iadc ;;;uncomment -iadc if realtime audio input is needed too ; For Non-realtime ouput leave only the line below: ; -o fofilter.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 instr 1 kfe expseg 10, p3*0.9, 180, p3*0.1, 175 kenv linen .1, 0.05, p3, 0.05 asig buzz kenv, kfe, sr/(2*kfe), 1 afil fofilter asig, 900, 0.007, 0.04 outs afil, afil endin </CsInstruments> <CsScore> ; sine wave f 1 0 16384 10 1 i 1 0 10 e </CsScore> </CsoundSynthesizer>