diff options
| author | Jake Zerrer <him@jakezerrer.com> | 2025-11-05 16:45:22 -0500 |
|---|---|---|
| committer | Jake Zerrer <him@jakezerrer.com> | 2025-11-06 11:08:24 -0500 |
| commit | 2d956a3a779672ab3acfc1bc542ebba855522d06 (patch) | |
| tree | 37c5f1eb7e549e2662bfb6abbe932136aa53cdf0 /src/unheard/dsl.clj | |
| parent | bee77914483da25831093e0475e4a71f1383253b (diff) | |
Organize namespaces
Diffstat (limited to 'src/unheard/dsl.clj')
| -rw-r--r-- | src/unheard/dsl.clj | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/src/unheard/dsl.clj b/src/unheard/dsl.clj new file mode 100644 index 0000000..e111725 --- /dev/null +++ b/src/unheard/dsl.clj @@ -0,0 +1,61 @@ +(ns unheard.dsl + (:require [missionary.core :as m] + [clojure.set :refer [union]])) + +(comment + ;; Parallel groups + ;; Notes 1, 2, and 3 simultaneously + ;; = should remind you of amb= + ;; implicit duration of 1 + [= 1 2 3] + ;; Compiles to? + + ;; Same as above, but with duration 3 + ([= 1 2 3] 3) + + ;; Notes 1, 2, and 3 all with different durations + [= + (1 2) + (2 3) + (3 4)] + + ;; Inner values override outer values + ;; In this chord, 1 would have a duration of 3 while 2 and 3 would have a duration of 2 + ([= (1 3) 2 3] 2) + + ;; Notes 1, 2, and 3 all with different durations and velocities + [= + (1 2 100) + (2 3 110) + (3 4 123)] + + ;; Sequential groups + ;; Note 1, then note 2, then note 3 + [1 2 3] + + ;; Note 1 duration 1, then note 2 duration 2, then note 3 duration 1 + [(1 1) + (2 2) + (3 1)] + + ;; Three chords played sequentially + [[= 1 2 3] + [= 1 2 3] + [= 1 2 3]] + +;; Note 1, followed by a rest, followed by note 3 + [1 (r) 3] + + ;; Unlike notes, rests are at most 2-tuples + ;; (Think about it: Rests never have a note value) + + ;; Assign the note sequence 1 2 3 to the name loop1 + ;; The first argument is always the name; the last argument is always either + ;; a sequential or parallel group + (=loop1 [1 2 3]) + + ;; Use loop1 + [1 (loop1) 2 3] + + ;; Middle arguments are variable names + (=loop2 dur ([1 2 3] dur))) |
