ドラムマシーン未満

別のことをやろうと思ったが時間切れ。
ということで、今まで覚えた技術で音を作り連続させる。

(defun snare()        ;スネア風
  (mult (pwl 0 0.5 0.15)
    (lp 
      (sim (noise) (osc-tri (pwl 0 50 0.15)))
      2000)))

(defun hihat()        ;ハイハット風
  (mult (pwl 0 1 0.05)
    (bandpass2
      (noise)
      5000
      1)))

(defun kick()         ;キック風
  (mult 
    (pwl 0 1 0.2)
    (lp
      (osc-tri (pwl 0 110 0.2))
      1000)))

(seq
  (snare)(kick)(hihat)
)

3つの関数(kick,snare,hihat)はドラム音のいくつか、それをシーケンス(seq)で並べている。
例えばスネアとキックの間を空けたい場合は

(seq
  (snare)
  (at 1 (kick))   ;atで1秒間の無音をはさむ
  (hihat)
)

特に説明は要らないでしょう。
シーケンスの最初にatを置いて場合、無音をはさみません。

(seq
  (at 1 (snare))   ;この場合は無音をはさまない
  (kick)
  (snare)
)

これは再帰するときに凄く便利なのですが、それはまた後で。