January 1Jan 1 Happy New Year 2026 to OM community.Followup on post: https://opusmodus.com/forums/topic/3989-om-lydian-chromatic-concept-of-tonal-organization-george-russell/Enthous.mp3"Enthous" is a small piece, which tries to use techniques of LCCOTO in 2 parts form each using alternations of 2 parent-scales.Opusmodus is very well equipped for LCCOTO 😀.CommentsFunction find-chord-for-parent-scale is implemented here: https://opusmodus.com/forums/topic/3998-take-3-lydian-chromatic-concept-of-tonal-organization-george-russell/Function write-midi is implemented here: https://opusmodus.com/forums/topic/4024-command-to-include-in-def-score-or-at-the-end-of-code-to-automaticcaly-store-the-evaluation-as-indexed-midi-file-to-a-predefine-folder/#findComment-13925I am making heavy use of arrows package to pipe operations (especially here arrows:-<>), enhancing readability from top to bottom. See my request to enable this in OM w/o namespace-qualifier on this here.Part A: ;; Enthous - A modal piece ;; Part A ;; ;; C. Scherer, 2025/26 ;; (asdf:load-system :arrows) (progn ;; Part A - Parent scale (setf parent-scale-a '(eb lydian)) (setf parent-scale-b '(c lydian)) (setf scale-a (second parent-scale-a)) (setf scale-b (second parent-scale-b)) (setf root-a (first (expand-tonality parent-scale-a))) (setf root-b (first (expand-tonality parent-scale-b))) (setf scale-tonality (tonality-series (list scale-a scale-b) :root (list root-a root-b) :map 'octave :variant 'p)) ;; Select Chords in this parent scale (create-chord quartal-chord-4a '(0 5 10 14)) (create-chord quartal-chord-4b '(0 5 10 15)) (setf chords (arrows:-<> (list parent-scale-a ) (find-chord-for-parent-scale '((quartal-chord-4a quartal-chord-4b))) (flatten-sublist) (flatten-sublist) (expand-chord) (mclist) )) ;; Chord-Track (setf chords-omn (arrows:-<> (make-omn :length (rnd-sample 8 (rhythm-series 1 5 8/4 :length '(h. q. e) :seed 40)) :pitch (rnd-sample 8 chords :seed 42) :velocity (vector-to-velocity 'pppp 'f (gen-ar-time-series 64 '(0.8) 0.2 :seed 42)) ) (omn-to-time-signature <> '(4 4)) (drop-voicing <> :type (rnd-sample 5 '(2 3)) :leading 't) (melodize-to-length 's 'e <>) (pitch-transpose -24 <>) (pitch-ornament) (tonality-map scale-tonality <> :time '(ww ww)) (dictum '(:bar 16 :substitute '(w c3 mp)) <> ) (velocity-to-dynamic) )) (setf total-span-a (get-span chords-omn :sum t)) ;; Melodic line (setf melo-mat (arrows:-<> (gen-ar-time-series 128 '(0.7) 0.5 ) (vector-to-pitch '(eb4 f6) <>) (filter-repeat 1 <>) )) (pitch-list-plot (flatten melo-mat)) (setf length-mat (euclidean-rhythm '(4 4) 1 4 1/4 :type 3)) (setf melody (arrows:-<> (make-omn :pitch melo-mat :length (length-span total-span-a length-mat) :velocity (vector-to-velocity 'pp 'fff (gen-ar-time-series 64 '(0.7) 0.5 :seed 23)) :swallow nil ) (omn-to-time-signature <> '(4 4)) ;(bind-to-interval '(-3 -3 -3 -3) <>) (passing-intervals '((2 (1 1)(2) )(-2 (-1 -1)) (3 (1 1 1))(-3 (-1 -1 -1)) (4 (2 2)(1 1 1 1))(-4 (-2 -2)(-1 -1 -1 -1)) (5 (1 1 1 1 1))(-5 (-1 -1 -1 -1 -1)) (6 (2 1 2 1))(-6 (-2 -1 -2 -1)) (7 (2 1 1 1 1))(-6 (-2 -1 -1 -1 -1)) ) <>) (quantize <> '(1 2 3 4 5)) (length-augmentation '(2) <> :section '(0)) (tonality-map scale-tonality <> :time '(ww ww)) (flatten) (closest-path :ambitus '(eb4 f6)) (filter-anacrusis) (omn-to-time-signature <> '(4 4)) (fit-to-span total-span-a <>) (dictum '(:bar 16 :substitute '(w c4 mf)) <> ) (velocity-to-dynamic) )) ;; Bass Line (setf bass (arrows:-<> (make-omn :pitch (rnd-sample total-span-a '(c2 c2 c2 c2 c3 g2 b1)) :length (gen-repeat total-span-a (list (append (fit-to-span 1 (pcs-rhythm '6-7 :rotate 0 :value 'e)) (fit-to-span 1 (pcs-rhythm '6-7 :rotate -4 :value 'e))))) :velocity (vector-to-velocity 'p 'ff (gen-ar-time-series 128 '(0.8) 0.2 :seed 42)) :articulation (gen-loop 16 (vector-map '(stacc marc def leg) (gen-ar-time-series 8 '(0.8) 0.2))) :swallow nil ) (omn-to-time-signature <> '(4 4)) (tonality-map scale-tonality <> :time '(ww ww)) (omn-to-time-signature <> '(4 4)) (fit-to-span total-span-a <>) (quantize <> '(1 2 4)) (dictum '(:bar 16 :do '(c2)) <> ) (velocity-to-dynamic) )) ;; Preview (ps 'gm :tempo 77 :time-signature '(4 4) :p (list melody chords-omn) :bass (list bass) ) (write-midi) ) Part B: ;; Enthous - A modal piece ;; Part B ;; ;; C. Scherer, 2025/26 ;; (asdf:load-system :arrows) (progn ;; Part A - Parent scale (setf parent-scale-a '(a lydian-augmented)) (setf parent-scale-b '(c lydian)) (setf scale-a (second parent-scale-a)) (setf scale-b (second parent-scale-b)) (setf root-a (first (expand-tonality parent-scale-a))) (setf root-b (first (expand-tonality parent-scale-b))) (setf scale-tonality (tonality-series (list scale-a scale-b) :root (list root-a root-b) :map 'octave :variant 'p)) ;; Select Chords in this parent scale (create-chord quartal-chord-4a '(0 5 10 14)) (create-chord quartal-chord-4b '(0 5 10 15)) (setf chords (arrows:-<> (list parent-scale-a ) (find-chord-for-parent-scale '((quartal-chord-4a quartal-chord-4b))) (flatten-sublist) (flatten-sublist) (expand-chord) (mclist) )) ;; Chord-Track (setf chords-omn (arrows:-<> (make-omn :length (rnd-sample 16 (rhythm-series 1 4 4/4 :length '(h. q. e) :seed 43)) :pitch (rnd-sample 8 chords :seed 42) :velocity (vector-to-velocity 'ppp 'mp (gen-ar-time-series 64 '(0.8) 0.2 :seed 43)) ) (omn-to-time-signature <> '(4 4)) (drop-voicing <> :type (rnd-sample 5 '(2 3)) :leading 't) (melodize-to-length 's 'e <>) (pitch-transpose -24 <>) (pitch-ornament) (tonality-map scale-tonality <> :time '(ww ww)) (dictum '(:bar 16 :substitute '(w c3 mp)) <> ) (velocity-to-dynamic) )) (setf total-span-a (get-span chords-omn :sum t)) ;; Melodic line (setf melo-mat (arrows:-<> (gen-ar-time-series 128 '(0.9) 0.1 ) (vector-to-pitch '(eb4 f6) <>) (filter-repeat 1 <>) (reverse) )) (pitch-list-plot (flatten melo-mat)) (setf length-mat '(-e e s s s s -e q -q)) (setf melody (arrows:-<> (make-omn :pitch melo-mat :length (length-span total-span-a length-mat) :velocity (vector-to-velocity 'pp 'fff (gen-ar-time-series 64 '(0.7) 0.5 :seed 23)) :swallow nil ) (omn-to-time-signature <> '(4 4)) (bind-to-interval '(-2 -2 -2 -2) <>) ;(passing-intervals '((2 (1 1)(2) )(-2 (-1 -1)) ; (3 (1 1 1))(-3 (-1 -1 -1)) ; (4 (2 2)(1 1 1 1))(-4 (-2 -2)(-1 -1 -1 -1)) ; (5 (1 1 1 1 1))(-5 (-1 -1 -1 -1 -1)) ; (6 (2 1 2 1))(-6 (-2 -1 -2 -1)) ; (7 (2 1 1 1 1))(-6 (-2 -1 -1 -1 -1)) ; ) <>) (quantize <> '(1 2 3 4)) (length-augmentation '(2) <> :section '(0)) (length-augmentation '(2) <> :section '(7)) (tonality-map scale-tonality <> :time '(ww ww)) (flatten) (closest-path :ambitus '(d4 c5)) ;(filter-anacrusis) (omn-to-time-signature <> '(4 4)) (fit-to-span total-span-a <>) (dictum '(:bar 16 :substitute '(w c4 mf)) <> ) (velocity-to-dynamic) )) ;; Bass Line (setf bass (arrows:-<> (make-omn :pitch (rnd-sample total-span-a '(c2 c2 c2 c2 g1)) :length (gen-repeat total-span-a (list (append (fit-to-span 1 (pcs-rhythm '7-7 :rotate 0 :value 'e)) (fit-to-span 1 (pcs-rhythm '7-7 :rotate -4 :value 'e))))) :velocity (vector-to-velocity 'p 'ff (gen-ar-time-series 128 '(0.8) 0.2 :seed 42)) :articulation (gen-loop 16 (vector-map '(stacc marc def leg) (gen-ar-time-series 8 '(0.8) 0.2))) :swallow nil ) (omn-to-time-signature <> '(4 4)) (tonality-map scale-tonality <> :time '(ww ww)) (omn-to-time-signature <> '(4 4)) (fit-to-span total-span-a <>) (quantize <> '(1 2 4)) (dictum '(:bar 16 :substitute '(w c2 mf)) <> ) (velocity-to-dynamic) )) ;; Preview (ps 'gm :tempo 77 :time-signature '(4 4) :p (list melody chords-omn) :bass (list bass) ) (write-midi) )
Create an account or sign in to comment