Jump to content

Featured Replies

Posted

I'm doing some work (analytically) with Messiaen's finite permutations of sequences (Livre d'Orgue, Catalogue d'Oiseaux etc) - and want to be able to develop more functions in OM to generate versions of the various options that Messiaen sets out in his later writings and that have been also been analysed in a number of academic writings by others.

 

The messiaen-permutation function in OM is really simple to use, but the documentation is pretty minimal and I cannot figure out what specific permutation this function uses? It does not appear to be either of the two standard 'fan' permutations (open or closed) and it only appears to generate one type of permutation.

 

Could the code for this function be made available so it can be adapted - or can we have some options for adapting/arguments in the current function on the system?

 

bw

 

Andrew

That's some code I wrote some 25 years ago for Symbolic Composer that Janusz converted for OM.

I think I got the algorithm from some Messiaen book. Let me see if I can find it. Not sure if there was more

than one permutation in the book though. If there was I would probably have added them.

 

Jesper 

  • Author
10 hours ago, AM said:


The permutations I’m referring to post-date The technique of my musical language book. They are described by Messiaen in the 3rd volume of Traité de couleur, et d’ornithologie as “permutations symétriques” and are based on finite outputs of substitutions by position within a sequence, so permutation is finite even with long sequences and return to the original sequence within a limited number of variants. These are fascinating patterns aesthetically and they are used initially in a limited way as part of the serial techniques in the Quatre études de rhythms in 1949-50 and then developed much more extensively in the works following, such as Le merle noir and Livre d’orgue from about 1951 on. Catalogue d’oiseaux is full of these permutations. The 32 value duration sequence at the opening of La chouette hulotte in Livre 3 of Catalogue is a key example.

 

Messiaen describes the permutations thus:

In the case of a chromatic scale of durations ranging from the 32nd note to the whole note, the number of possible permutations is so vast that it would take half a human lifetime just to write them down—and several years to play them. Therefore, it is necessary to make a selection—and to select in a way that will give the maximum opportunity for dissimilarity between one permutation and another. (Messiaen 1965)

 

It is the selection and choices involved that make these permutations interesting. I have most of the permutations mapped out but want to develop OM functions for them. If you can share the code for the messiaen-permutation function, I’d be more than happy to do the development of this and share the results. 
 

bw Andrew 

There is missing a reverse function in the open and closed types above but Janusz has a version that I hope is correct.

I think it will be included in the next OM update. 

 

Jesper

Did you get my new update with the mapcar 'reverse Janusz?

 

Jesper

  • Author

Absolutely great! I look forward to playing with this.

I just updated versions. The documentation is also really excellent! Thanks Jesper and Janusz.  This is just another reason why using OM is so rewarding.

 

bw 

Andrew

 

Yes, I hope I got it right.

 

Jesper

  • Author

I have a bunch of material I'm already using so will drop some into the function and see what comes out. Will report back.

Yes, the documentation is really good. That's all Janusz. Thanks Janusz!

 

Jesper

 

  • Author

Both closed and open fans are working perfectly. I'll play around with the integer options too - but that looks a bit more involved.

The Symmetrical Permutation is really simple

 

(setf sequence '(1 2 3 4 5))
(setf order '(4 3 0 1 2))
(gen-divide 5 (messiaen-permutation sequence :type order))
=> ((5 4 1 2 3) (3 2 5 4 1) (1 4 3 2 5) (5 2 1 4 3)
    (3 4 5 2 1) (1 2 3 4 5) (5 4 1 2 3))

 

so 1:st permutation '(5 4 1 2 3) is the sequence '(1 2 3 4 5) reordered by '(4 3 0 1 2)

then the 2:nd permutation '(3 2 5 4 1) is  the result of the 1:st permutation '(5 4 1 2 3) reordered by '(4 3 0 1 2) and so on…

 

(defun symmetrical-permutation (seq ord &aux (tmp seq))
    (loop collect  
         (setf tmp (position-filter ord tmp))
       while (not (equal tmp seq))))

(symmetrical-permutation '(1 2 3 4 5) '(4 3 0 1 2))
=> ((5 4 1 2 3) (3 2 5 4 1) (1 4 3 2 5) (5 2 1 4 3) (3 4 5 2 1) (1 2 3 4 5))

 

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