diff --git a/dirty-journal/2022-09-21-trying-new-arpeggios.lisp b/dirty-journal/2022-09-21-trying-new-arpeggios.lisp index cf7d038..5ce360d 100644 --- a/dirty-journal/2022-09-21-trying-new-arpeggios.lisp +++ b/dirty-journal/2022-09-21-trying-new-arpeggios.lisp @@ -110,3 +110,62 @@ ;; 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) +(end :third-try-of-function)