hsc3-0.21: Help/Graph/jmcc-berlin-1977.hs
-- berlin 1977 (jmcc) #4
let dsequ sq tr = demand tr 0 (dseq dinf (mce sq))
dsequR sq tr = demand tr 0 (dshuf dinf (mce sq))
clock_rate = mouseX kr 5 20 Exponential 0.2 {- mouse x controls clock rate -}
clock_time = 1 / clock_rate
clock = impulse kr clock_rate 0 {- sequencer trigger -}
patternList = [55,60,63,62,60,67,63,58]
note = dsequ patternList clock {- midi note pattern sequencer -}
clock_16 = pulseDivider clock 16 0 {- divide clock by 16 -}
note' = dsequR [-12,-7,-5,0,2,5] clock_16 + note {- transpose somewhat randomly -}
freq = midiCps note' {- convert midi note to cycles per second -}
env = decay2 clock (0.05 * clock_time) (2 * clock_time)
amp = env * 0.1 + 0.02 {- amplitude envelope -}
filt = env * (fSinOsc kr 0.17 0 * 800) + 1400 {- filter frequency -}
pw = sinOsc kr 0.08 (mce2 0 (0.5 * pi)) * 0.45 + 0.5 {- pulse width LFO(s) -}
s = pulse ar freq pw * amp
in combN (rlpf s filt 0.15) 0.2 (mce2 0.2 0.17) 1.5
-- berlin 1977 (jmcc) #4 ; id
let dsequId z sq tr = demand tr 0 (dseqId z dinf (mce sq))
dsequRId z sq tr = demand tr 0 (dshufId z dinf (mce sq))
clock_rate = mouseX kr 5 20 Exponential 0.2 {- mouse x controls clock rate -}
clock_time = 1 / clock_rate
clock = impulse kr clock_rate 0 {- sequencer trigger -}
patternList = [55,60,63,62,60,67,63,58]
note = dsequId 'α' patternList clock {- midi note pattern sequencer -}
clock_16 = pulseDivider clock 16 0 {- divide clock by 16 -}
note' = dsequRId 'β' [-12,-7,-5,0,2,5] clock_16 + note {- transpose somewhat randomly -}
freq = midiCps note' {- convert midi note to cycles per second -}
env = decay2 clock (0.05 * clock_time) (2 * clock_time)
amp = env * 0.1 + 0.02 {- amplitude envelope -}
filt = env * (fSinOsc kr 0.17 0 * 800) + 1400 {- filter frequency -}
pw = sinOsc kr 0.08 (mce2 0 (0.5 * pi)) * 0.45 + 0.5 {- pulse width LFO(s) -}
s = pulse ar freq pw * amp
in combN (rlpf s filt 0.15) 0.2 (mce2 0.2 0.17) 1.5
-- berlin 1977 (jmcc) #4 ; event-control
let f (_,w,_,y,z,_,_,_,p,_,_) =
let freq = unitCps p
env = decay2 (trig w controlDur) (0.05 * y) (2 * y)
amp = env * z + 0.02
filt = env * (fSinOsc kr 0.17 0 * 800) + 1400 {- filter frequency -}
pw = sinOsc kr 0.08 (mce2 0 (0.5 * pi)) * 0.45 + 0.5 {- pulse width LFO(s) -}
s = pulse ar freq pw * amp
in combN (rlpf s filt 0.15) 0.2 (mce2 0.2 0.17) 1.5 * lagUD w 0 (2 + y)
in mix (voicer 16 f) * control kr "gain" 1