hsc3-0.20: Help/Ugen/spring.help.hs
-- spring ; mouse control ; button=gate ; x=spring-constant ; y=damping
let inforce = k2a (mouseButton kr 0 1 0) `greater_than` 0
k = mouseX kr 0.1 20 Exponential 0.2
d = mouseY kr 0.00001 0.1 Exponential 0.2
outforce = spring ar inforce k d
freq = outforce * 400 + 500 -- modulate frequency with the force
in sinOsc ar freq 0 * 0.1
-- spring ;several springs in series
let inforce = k2a (mouseButton kr 0 1 0) `greater_than` 0
k = mouseX kr 0.1 20 Exponential 0.2
d = mouseY kr 0.00001 0.1 Exponential 0.2
m0 = spring ar inforce k 0.01
m1 = spring ar m0 (0.5 * k) d
m2 = spring ar m0 (0.6 * k + 0.2) d
m3 = spring ar (m1 - m2) 0.4 d
in sinOsc ar (m3 * 200 + 500) 0 * 0.1 -- modulate frequency with the force
-- spring ; modulating a resonating string
let k = mouseX kr 0.5 100 Exponential 0.2
d = mouseY kr 0.0001 0.1 Exponential 0.2
t = dustId 'α' ar 2
m0 = spring ar (toggleFF t) k 0.01
m1 = spring ar m0 (0.5 * k) d
m2 = spring ar m0 (0.6 * k) d
m3 = spring ar (mce2 m1 m2) (0.4 * k) d
m4 = spring ar (m3 - m1 + m2) (0.1 * k) d
in combL t 0.1 (linLin m4 (-10) 10 (1/8000) (1/100)) 12
-- spring ; event control
let f (_,w,x,y,z,o,rx,_,_,_,_) =
let k = linExp x 0 1 0.1 20
d = linExp y 0 1 0.00001 0.065
s = spring ar (k2a w) k d
freq = midiCps (x * 24 + 48) + (s * 800 * rx) -- modulate frequency with the force
in pan2 (sinOsc ar freq 0) (o * 2 - 1) (w * z * z)
in mix (voicer 16 f) * control kr "gain" 2
-- spring ; event control
let f (_,w,x,y,z,_,_,_,_,_,_) =
let k = linExp x 0 1 0.5 100
d = linExp y 0 1 0.0001 0.1
t = trig (k2a w) 0
m0 = spring ar (k2a w) k 0.01
m1 = spring ar m0 (0.5 * k) d
m2 = spring ar m0 (0.6 * k) d
m3 = spring ar (mce2 m1 m2) (0.4 * k) d
m4 = spring ar (m3 - m1 + m2) (0.1 * k) d
dt = linLin m4 (-10) 10 (x/8000) (x/100)
in combL (trig (k2a w) (z * 0.05)) 0.1 dt ((latch y w + 1) * 9)
in mix (voicer 16 f) * control kr "gain" 2