1.1 Skip to content

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.

(at 5/3 1/4 (playk *kit-hhat3* 90))

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..

(play bass (mkint C2 (oneof 0 3 4 5) 'm ) 90 dur)
(mcc *cutoff* osc1)
(mcc *reso* osc2)

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.