Posted November 24, 20177 yr Hello, newbie question: I'd like to take an omn list and simply repeat each measure 3 times. If I start with the following code: (setf r-transitions1 '((e (e 1)(-e 3)) (-e (e 3)(-e 1)))) (setf marked (gen-markov-from-transitions r-transitions1 :size 120)) ;;conform to timesignature in omn format (setf r1 (length-span (gen-repeat 20 '8/8) marked :omn t)) ;;define the time signatures (setf timesigs (get-time-signature r1)) ;;stream of pitches (setf pitches '(c4 eb4 f4 g4 bb4 c5 eb5)) (setf pitches (chord-interval-add '(12) pitches)) ;;by spanning r1 onto pitches, pitches will repeat as needed (setf pitches (span r1 pitches)) (setf rh (make-omn :length r1 :pitch pitches)) and then try something like: (setf rrh (gen-repeat 3 rh)) ;or (setf rrh (gen-repeat '(3) rh)) neither gives me what I'm looking for. However, I notice that if I evaluate (setf rrh (gen-repeat 3 (list (first rh)))) then I get the correct result for the first measure. Therefore, doing something like this gets me what I was looking for: (setf rrh (gen-divide 8 (flatten (mapcar #'(lambda (n) (gen-repeat 3 (list n))) rh)))) But surely there's a better/simpler way to repeat bars in omn format. If anyone has insights, I'd be most appreciative. thanks, Michael
November 25, 20177 yr Author As I've played around I hit on this, which works if the repetition is always the same number (it would obviously be nice to do this with cycles of numbers, etc)...and of course, I continue to be sure there's some much easier way to do this that I don't know about yet... ;;this helper function returns a list of lists one level deep (defun remove-nested (lst) (if (endp lst) 'nil (append (car lst) (remove-nested (cdr lst))))) ;;x is number of repetitions per bar (defun repeat-omn (lst x) (remove-nested (mapcar #'(lambda (n) (gen-repeat x (list n))) lst))) (setf rrh (repeat-omn rh 3))
November 25, 20177 yr You may use the gen-repeat-seq function for the repetitions. You can have a look also to omn-to-measure , it could be useful also in what you doing. Cheers S.
November 25, 20177 yr (setf r-transitions1 '((e (e 1) (-e 3)) (-e (e 3) (-e 1)))) (setf marked (gen-markov-from-transitions r-transitions1 :size 120)) (setf r1 (length-span (gen-repeat 20 1) marked :omn t)) (setf pitches '(c4 eb4 f4 g4 bb4 c5 eb5)) (setf chords (chord-interval-add '(12) pitches)) (setf rh (make-omn :length r1 :pitch chords)) (setf rrh (omn-to-time-signature (gen-repeat '(3) rh) '(4 4))) or (setf rrh (assemble-seq (mapcar #'(lambda (x) (gen-repeat 3 (list x))) rh)))
November 25, 20177 yr Author excellent, thank you so much. I've really loved beginning to learn this environment, and I appreciate the assistance. cheers
Create an account or sign in to comment