More notes

This commit is contained in:
Jeremy Dormitzer 2018-07-16 23:12:32 -04:00
parent 851bdc4088
commit 50bc93ac14
No known key found for this signature in database
GPG Key ID: 04F17C0F5A32C320

View File

@ -6,5 +6,17 @@
;; a duration is a rational number, e.g. 1/8
;; a note has a duration, optionally a pitch, and optionally any other necessary keys (e.g. loudness)
;; {:duration 1/8 :pitch [:A# 3]} is a note. {:duration 1/4} is a note (really, a rest)
;; (:=: noteA noteB) represents noteA played simultaneously with noteB
;; (:+: noteA noteB) represents noteA played followed by noteB
;; what do the above functions return? Whatever that thing is, a note is a "subtype" of it
;; since the :=: and :+: operations can be applied to their return values
;; one solution would be to have [noteA noteB] represent noteA and noteB played sequentially
;; and [[noteA noteB]] represent noteA and noteB played simultaneously -- this would
;; mean that :=: and :+: would have to act on vectors
;; this would allow arbitrary musical phrases, e.g. [noteA [noteB noteC] noteD], but what
;; would deeper nesting mean?
;; (modify noteA control) merges the control map into the noteA map
;; control maps have keys like ::tempo, ::transpose, ::instrument, ::phrase, ::player, ::keysig