diff --git a/dirty-journal/2022-09-21-trying-new-arpeggios.lisp b/dirty-journal/2022-09-21-trying-new-arpeggios.lisp index cf7d038..b65a051 100644 --- a/dirty-journal/2022-09-21-trying-new-arpeggios.lisp +++ b/dirty-journal/2022-09-21-trying-new-arpeggios.lisp @@ -71,8 +71,8 @@ :pattern (list 0 1 2 0 3) :note (pnary (lambda (a) (nth a (chord-notes :major-7th))) (pseq (pk :pattern)))) (next-upto-n (pdef :initial-patterned) 20) -(play :initial-patterned) -(stop :initial-patterned) +;; (play :initial-patterned) +;; (stop :initial-patterned) ;; and now i want what? i want to do pnary? pfunc @@ -104,9 +104,68 @@ :legato 0.5 :octave 2 :embed :with-patterned-changing-chords) -(play :instrumented-play) -(end :instrumented-play) +;; (play :instrumented-play) +;; (end :instrumented-play) ;; i guess next is making this pattern a function that takes patterns to provice chords, roots and pattrn ;; then could use embed and set attributes in place ;; this is actually fun + +(defun patterned-arpeggio (chords roots patterns &optional (chord-duration 8) (events-in-chord 32)) + (parp + ;;; first part of parp is "base values" for each event whole second pattern will be played + ;;; so this pattern produces "settings for each phrase" + (pbind :arpeggio-chord chords + :chord-root roots + :pattern patterns) + ;;; this patten would play our fully with settings values + (pbind + :note (pnary (lambda (chord-step chord chord-root) + (+ chord-root (nth chord-step (chord-notes chord)))) + (pseq (pk :pattern)) + (pk :arpeggio-chord) + (pk :chord-root)) + :dur (pdurstutter (pseq (list chord-duration) 1) events-in-chord)))) + +(pb :first-try-of-function + :instrument :fmbass + :legato 0.5 + :octave 2 + :embed (patterned-arpeggio + (pseq (list :minor-6th :minor :minor-7th :minor)) + (pseq (list 0 3 2 6) 1) + (list 0 1 2 1 2 1 2 0))) +;; (play :first-try-of-function) +;; (end :first-try-of-function) + +;; taking progressions from +;; https://en.wikipedia.org/wiki/List_of_chord_progressions + +(pb :second-try-of-function + :instrument :fmbass + :legato 0.5 + :octave 2 + :embed (patterned-arpeggio + (pseq (list :major :minor :major :major)) + (pseq (list 0 5 3 4) 1) + (list 0 1 2 1 2 1 2 0) + 2 8)) +;; (play :second-try-of-function) +;; (end :second-try-of-function) + +;; andalusian cadence iv-III-II-I +(pb :third-try-of-function + ;; :instrument :fmbass + ;; :instrument :strings + :instrument :prophet5pwmstrings + :legato 1 + :octave 5 + :embed (patterned-arpeggio + (pseq (list :minor :major :major :major)) + (pseq (list 3 2 1 0) 1) + (list 0 1 2 1 2 1 2 0) + ;; 2 16 + 8 16 + )) +;; (play :third-try-of-function) +;; (stop :third-try-of-function)