opmo Posted March 16, 2021 Posted March 16, 2021 The length list should only contain length values. What you propose can be done with a map function. (setf pitchlist '((c4 d4 e4 f4)(cs4 ds4 as4 fs4)(bb4 eb4 ab4))) (setf rhy '((q e e)(-s s)(%)(s)(s e e)(e e)(e e_h))) for me the result is: ((q c4 e d4 e4) (-s cs4) (s c4) (s cs4 e ds4 as4) (e bb4 eb4) (e c4 e_h d4)) JulioHerrlein 1 Quote
JulioHerrlein Posted March 16, 2021 Author Posted March 16, 2021 Thank you Janusz, It could be nice to include this as a new standard functions in a future upgrade. In the meanwhile, I´ll try to learn some coding with map function, or possibly keep composing with my "manual" workaround. All the best ! Julio Quote
JulioHerrlein Posted March 16, 2021 Author Posted March 16, 2021 The "manual workaround" works great, I just need to organize my list of pitches before the span process, according to the purpose of use and rhythm list. 1) Lists of pitches to be used as repeated rhythm attacks (1-element lists) 2) Lists to be used as melodic movement (n-elements lists, usually 16 elements) These decisions are more musical and individual to each part of the musical texture, so there is no way to make it as an automated process. The idea of "special character" was just a way to make it easier and flexible, allowing to just skip over a bunch of lists. But in either way, the pre-compositional organization is necessary. Best, Julio Quote
opmo Posted March 16, 2021 Posted March 16, 2021 Span MAP: (setf pitchlist '((c4 d4 e4 f4) (cs4 ds4 as4 fs4) (bb4 eb4 ab4))) (setf rhy '((q e e) (-s s) (s) (s e e) (e e) (e e_h))) (setf map '((x x x) (x) nil (x) (x x x) (x x) (x x))) (span rhy pitchlist :swallow t) => ((c4 d4 e4) (ds4) (bb4) (c4 d4 e4) (cs4 ds4) (bb4 eb4)) (span map pitchlist :swallow t) => ((c4 d4 e4) (cs4) nil (c4) (cs4 ds4 as4) (bb4 eb4) (c4 d4)) (make-omn :length rhy :pitch (span map pitchlist :swallow t) :span :length) => ((q c4 e d4 e4) (-s cs4) (s c4) (s cs4 e ds4 as4) (e bb4 eb4) (e c4 e_h d4)) JulioHerrlein 1 Quote
JulioHerrlein Posted March 16, 2021 Author Posted March 16, 2021 Dear Janusz, This is great ! Thank you ! This is better ! (setf pitchlist '((c4 d4 e4 f4) (cs4 ds4 as4 fs4) (bb4 eb4 ab4))) (setf rhy (gen-repeat 5 '((q e e) (-s s) (s) (s e e) (e e) (e e_h)))) (setf map '((x x x) (x) nil (x) (x x x) (x x) (x x))) (span rhy pitchlist :swallow t) => ((c4 d4 e4) (ds4) (bb4) (c4 d4 e4) (cs4 ds4) (bb4 eb4)) (span map pitchlist :swallow t) => ((c4 d4 e4) (cs4) nil (c4) (cs4 ds4 as4) (bb4 eb4) (c4 d4)) (make-omn :length rhy :pitch (span rhy (span map pitchlist :swallow t)) :span :length) You can keep the span process, using a nested span, like the above. The perfect solution would be a way of extracting the map forms for each individual pitch list and also (the most wanted) a way of skipping a list. We have 3 lists (just for the sake of debugging) : 1) natural note list (c4 d4 e4 f4) 2) sharp note list (cs4 ds4 as4 fs4) 3) flat note list (bb4 eb4 ab4) In this NIL map model, how to skip completely the sharp list, for example ? Best ! Thank you Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.