Jump to content

Recommended Posts

Posted

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))

 

Posted

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

Posted

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

 

Posted

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))

 

Posted

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

 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

Terms of Use Privacy Policy