This opcode attempts to model some of the filter characteristics of a Roland TB303 voltage-controlled filter. Euler's method is used to approximate the system, rather than traditional filter methods. Cutoff frequency, Q, and distortion are all coupled. Empirical methods were used to try to unentwine, but frequency is only approximate as a result. Future fixes for some problems with this opcode may break existing orchestras relying on this version of tbvcf.
asig -- input signal. Should be normalized to ±1.
xfco -- filter cutoff frequency. Optimum range is 10,000 to 1500. Values below 1000 may cause problems.
xres -- resonance or Q. Typically in the range 0 to 2.
kdist -- amount of distortion. Typical value is 2. Changing kdist significantly from 2 may cause odd interaction with xfco and xres.
kasym -- asymmetry of resonance. Typically in the range 0 to 1.
Here is an example of the tbvcf opcode. It uses the files tbvcf.orc and tbvcf.sco.
Example 15-1. Example of the tbvcf opcode.
/* tbvcf.orc */
;---------------------------------------------------------
; TBVCF Test
; Coded by Hans Mikelson December, 2000
;---------------------------------------------------------
sr = 44100 ; Sample rate
kr = 4410 ; Kontrol rate
ksmps = 10 ; Samples/Kontrol period
nchnls = 2 ; Normal stereo
zakinit 50, 50
instr 10
idur = p3 ; Duration
iamp = p4 ; Amplitude
ifqc = cpspch(p5) ; Pitch to frequency
ipanl = sqrt(p6) ; Pan left
ipanr = sqrt(1-p6) ; Pan right
iq = p7
idist = p8
iasym = p9
kdclck linseg 0, .002, 1, idur-.004, 1, .002, 0 ; Declick envelope
kfco expseg 10000, idur, 1000 ; Frequency envelope
ax vco 1, ifqc, 2, 1 ; Square wave
ay tbvcf ax, kfco, iq, idist, iasym ; TB-VCF
ay buthp ay/1, 100 ; Hi-pass
outs ay*iamp*ipanl*kdclck, ay*iamp*ipanr*kdclck
endin
/* tbvcf.orc */
/* tbvcf.sco */
f1 0 65536 10 1
; TeeBee Test
; Sta Dur Amp Pitch Pan Q Dist1 Asym
i10 0 0.2 32767 7.00 .5 0.0 2.0 0.0
i10 0.3 0.2 32767 7.00 .5 0.8 2.0 0.0
i10 0.6 0.2 32767 7.00 .5 1.6 2.0 0.0
i10 0.9 0.2 32767 7.00 .5 2.4 2.0 0.0
i10 1.2 0.2 32767 7.00 .5 3.2 2.0 0.0
i10 1.5 0.2 32767 7.00 .5 4.0 2.0 0.0
i10 1.8 0.2 32767 7.00 .5 0.0 2.0 0.25
i10 2.1 0.2 32767 7.00 .5 0.8 2.0 0.25
i10 2.4 0.2 32767 7.00 .5 1.6 2.0 0.25
i10 2.7 0.2 32767 7.00 .5 2.4 2.0 0.25
i10 3.0 0.2 32767 7.00 .5 3.2 2.0 0.25
i10 3.3 0.2 32767 7.00 .5 4.0 2.0 0.25
i10 3.6 0.2 32767 7.00 .5 0.0 2.0 0.5
i10 3.9 0.2 32767 7.00 .5 0.8 2.0 0.5
i10 4.2 0.2 32767 7.00 .5 1.6 2.0 0.5
i10 4.5 0.2 32767 7.00 .5 2.4 2.0 0.5
i10 4.8 0.2 32767 7.00 .5 3.2 2.0 0.5
i10 5.1 0.2 32767 7.00 .5 4.0 2.0 0.5
i10 5.4 0.2 32767 7.00 .5 0.0 2.0 0.75
i10 5.7 0.2 32767 7.00 .5 0.8 2.0 0.75
i10 6.0 0.2 32767 7.00 .5 1.6 2.0 0.75
i10 6.3 0.2 32767 7.00 .5 2.4 2.0 0.75
i10 6.6 0.2 32767 7.00 .5 3.2 2.0 0.75
i10 6.9 0.2 32767 7.00 .5 4.0 2.0 0.75
i10 7.2 0.2 32767 7.00 .5 0.0 2.0 1.0
i10 7.5 0.2 32767 7.00 .5 0.8 2.0 1.0
i10 7.8 0.2 32767 7.00 .5 1.6 2.0 1.0
i10 8.1 0.2 32767 7.00 .5 2.4 2.0 1.0
i10 8.4 0.2 32767 7.00 .5 3.2 2.0 1.0
i10 8.7 0.2 32767 7.00 .5 4.0 2.0 1.0
e
/* tbvcf.sco */