-
Notifications
You must be signed in to change notification settings - Fork 23
Examples
TatriX edited this page Aug 13, 2021
·
1 revision
Welcome to the cl-collider wiki!
See video by Eli for explanation.
(in-package :sc-user)
(ql:quickload :arrows)
(use-package :arrows)
;; If you have `cl-patterns' you can also use something like this to
;; generate scale midinotes:
;; (cl-patterns:scale-midinotes (cl-patterns:scale :minor) :octave 3)
(defparameter *scale* (let* ((scale (list (36 38 39 41 43 44 46)))
(buf (buffer-alloc (length scale))))
(buffer-setn buf scale)))
;; Optionally record to a file
;; (defparameter *recorder* (buffer-alloc (* 48000 11) :chanls 2))
(proxy :musical-quantization
(let* ((index (-> (lfd-noise3.kr (dup 3 4))
(range 0 5)
(* (buf-frames.kr (kr :buf *scale*)))))
(note (degree-to-key.kr (kr :buf) index))
(detune (lf-noise1.kr (dup 1 4) 0.12))
(sig (-> (var-saw.ar (midicps (lag.kr (+ note detune) 0.02)))
(splay.ar 0.75 0.1)
(* (env-gen.kr (env (list 0 1 0 0)
(list 0.05 4 7)
(list 0 -2 0)
1)
:act :free)))))
(setf sig (x-fade2.ar sig (comb-n.ar sig 0.25 0.25 2) 0.5))
(setf sig (x-fade2.ar sig (-> sig
(+)
(g-verb.ar 200 3)
(lpf.ar 1000))
0.4))
;; (record-buf.ar sig *recorder*)
sig))
(release :musical-quantization)
;; (buffer-write *recorder* "/tmp/mquant.wav")