1. Techno jam (2024-07)
Overlapping basslines and industrial noise sounds. Listen with a good pair of headphones!
1.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 hhat playing at each 1/4. This results in two distinct syncopated beats every bar.
1.2 Synth line
Generated using a varying diatonic interval on a minor scale. Which can be modyfyed in real time for nice effects etc..
1.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)))
1.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.