Jump to content

Featured Replies

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

 

  • Author

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

  • Author

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

 

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

 

  • Author

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

 

Create an account or sign in to comment


Copyright © 2014-2025 Opusmodus™ Ltd. All rights reserved.
Product features, specifications, system requirements and availability are subject to change without notice.
Opusmodus, the Opusmodus logo, and other Opusmodus trademarks are either registered trademarks or trademarks of Opusmodus Ltd.
All other trademarks contained herein are the property of their respective owners.

Powered by Invision Community

Important Information

Terms of Use Privacy Policy