Techno jam (2024-07)
Overlapping basslines and industrial noise sounds. Listen with a good pair of headphones!
1 Rhytmn patterns
Interesting rhythm patterns can be simply generated by using non standard beats.
Eg here we have a 5/3 downbeat, with the hihat playing at each 1/4. This results in two distinct syncopated beats every bar.
2 Synth line
Generated using a varying diatonic interval on a minor scale. Which can be modified in real time for nice effects etc..
3 Oscillators drive the drumkit
The kick drum and snare are activated only when the synth oscillator (driving the cutoff and resonance) goes beyond a certain threshold.
This allows to build up momentum semi automatically.
;; cyclical drums
(if> osc1 60
(at 1 1/2 (playk *kit-kick* 90)))
(if< osc1 60
(at 10/3 1/4 (playk *kit-snare* 90)))
4 Full source
(define drones
(lambda (beat)
(let ((dur (random)))
(atbtw 14/5 0 1 (play drone C1 80 2))
(atbtw 2 0 1/2 (play glitch C4 (cosr 20 20 1/3) 4))
(callback-at dur 'drones ))))
(drones (*metro* 'get-beat 1))
(define main
(lambda (beat)
(let ((dur 1/4)
(osc1 (cosr 60 60 1/128))
(osc2 (cosr 60 60 5/256))
)
;; drums
(at 1 0 (playk *kit-hhat* 90))
(at 2 1/2 (playk *kit-hhat3* 90))
(at 5/3 1/4 (playk *kit-hhat3* 90))
;; bassline
(play bass (mkint C2 (oneof 0 3 4 5) 'm ) 90 dur)
(mcc *cutoff* osc1)
(mcc *reso* osc2)
;; cyclical drums
(if> osc1 60
(at 1 1/2 (playk *kit-kick* 90)))
(if< osc1 60
(at 10/3 1/4 (playk *kit-snare* 90)))
(if< osc1 60
(at 50 0 (play voice C4 80 50)))
(callback-at dur 'main ))))
(main (*metro* 'get-beat 1))
Also on GitHub.