Jump to content

Recommended Posts

In my Dissertation, I worked a way to convert every chord and set in a modulo 12 rhythm,

so the entire catalog of FORTE are converted to rhythms, following the steps of Babitt:

 

image.png.5df1ac95d98df3547314c1b78c5bf905.png

 

As a hardcore serialist, Babbitt was interested in converting 12-tone rows to rhythms, in a kind of 12-tone rhythm theory.

Below, Wuorinen show one example of a typical Babbitt idea:

 

image.png.25a5974ddbc6dfc91d52f00235af0fe5.png

 

For the sake of explaining my idea of function, it's important to have in mind that for Babbitt, the order of the

 row is very important and lead to different results in the pitch to rhythm conversion. Take a look in the example

 below:

 

image.png.7019cb6f78beb3ec6f85511690953db5.png

 

In the preceeding figure, the order of the C major triad generate different rhythms. In the example (0 4 7) have a

different result from (4 0 7) or (7 0 4).

 

In the system I developed in my Dissertation, the order does NOT matter, since (0 4 7), (7 0 4) or (4 0 7) will result

 in exactly the same rhythm, as you can see below:

image.png.876f1b753396ca7179ca480cf99592d0.png

 

In my system, the transposition equals rotation (as well as in Babbitt)

image.png.78a8b530a8d5be35ff98718b2b741991.png

 

And every chord symbol can be transformed in a rhythm:

 

image.png.9ddbc5774498adb94023497463f65c75.png

Even voicings can be converted in longer Rhythms (the more spread the voicing, the longer the rhythm):

 

image.png.b7ba392788fc45dcd5fdb762307e2964.png

 

 

So I did every FORTE SET in the catalog, in this way:

Below, you can see the example of the rhythm of the major triad (Forte number 3-11b).

In the 1st bar there is the prime form (0 4 7).

In each subsequent bar there is a rotation of the first set by 16th note increments.

 

HERE IS THE POINT, for the sake of the new function !

 

The note C (that I call Rhythmic Fundamental, the "root" of the rhythm) is being displaced, as

 you can see in the circled notes.

 

THE SET WRAP AROUND ITSELF, always forming 12 time-points (always twelve 16th notes),

in a different way from Babbit, where the order of the sets generates longer rhythms.

THIS WAY IS MORE INTERESTING For Popular and Minimalist Repetition Music, as

 well as 12 tone music.

 

In the bottom staff, there are the complementary rhythm of the 3-11b set, i.e., the 9-11a

 set. In the catalog, every set is presented alongside its complementary set and every set is

presented in 3/4 (16th notes) and in 12-8 (with the 8th note as the base value for the increments

 and rotations).

image.png.6f8d9aaf8b748309c50978bf7504a878.png

 

So the function needed would be the one that mirror exacty this kind of conversion, not the tradicional time-point-system conversion,

so I could use my catolog inside Opusmodus, connecting the diferent sets, like this:

 

image.png.db32ec649dacbb030745a69ca56cc9ae.png

 

Or even using portions of the Rhythmic Sets, by truncating some of them, like this:

 

image.png.3e2591cde21d27093006eaa3876efa06.png

 

In the preceeding example, only parts of the 2 sets are used (9 time points out of 12 in the 

first and 8 time points out of 12 in the second).

 

So, I hope someone could help me to find a way of implementing this.

Maybe Janusz or Stephane could find interesting to develop this kind of idea inside

 the software.

 

All the best !

Julio Herrlein

Share this post


Link to post
Share on other sites

The function is already there: time-point-system

 

(setf row '(bb4 a4 gs4 as4 cs5 e5 d4 f4 g4 eb4 fs4 c5))
(time-point-system row 's :start 0)
=> ((h bb4 tie e. s a4 tie) (h a4 tie e e gs4) (e. bb4 cs5 q. e5 tie)
    (q e5 e. d4 e f4 e. g4 tie) (q g4 tie s e. eb4 q fs4 tie) (e fs4 h c5 tie e))

 

Share this post


Link to post
Share on other sites

Dear Janusz,

 

This function will deal with the cyclic and rotational aspect of the rhythm, conceived as a necklace:

 

image.png.1bd470715a5b31e1a38f984551f92222.png

 

The pitch class set is conceived as a modular space and converted to rhythms with rotation inside the

 modulo. The figure above shows a module 8 rhythm.

In my catalog, every rhythm is module 12, but you can :CROP (possible parameter of the function)

 the rhythm in a shorter module or cycle, or you can concatenate many sets to form a longer rhythm.

 

HERE IS THE POINT (what time-point-system don't do)

 

There's a difference between que time-point-system function and the idea I'm talking about.

I'll try to explain:

 

THIS CODE:
 

(time-point-system (pcs '3-11b :pitch)'s :start 0)

Results in

 

image.png.cf3db87db7bd30c561c690d834c2e311.png

And This
 

(time-point-system (pcs '3-11b :pitch)'s :start 4)

Results in

 

image.png.ebd833ef7fd53d6aa8a157f2b35b2459.png

But, in this case,  when the start parameter exceeds 4, like with this code:

 

(time-point-system (pcs '3-11b :pitch)'s :start 5)

 

image.png.a9f83522344a4723aac166fdee0adfaa.png

 

The rhythm cross to the next bar. So, the rhythm is NOT working like a necklace, it's

 exceeding the 12 time-points...

 

In my hypothetical Function, let's say the "pcs-to-rhythm" function

the result would be like the upper staff below,

 

Pseudo-code

(pcs-to-rhythm (pcs '3-11b :pitch)'s :rotation 5 :mod 12)

i.e, the note that is going to next bar is actually rotated back to the begining of the

 same bar, like rotation, wrapping around the modulo 12.

image.png.e34a1886020d5171717400e044960a5a.png

Possible parameters would be:

 

:mod  -  The modulo of the rhythm (explained below)

:rotation  -  the range would be  1 > (mod - 1)

:crop    the range would be x < mod

 

Let me know if I made the point clear.

Best,

Julio

Share this post


Link to post
Share on other sites

This is my best effort, using two André Maier functions (THANKS ANDRÉ !!!)

 

(binary-map (row-rotation 7 (length-to-binary 
(flatten 
(omn :length (length-staccato 1/16 
(time-point-system (pitch-rotate 0 (pcs '3-11b :pitch))'s :start 0)
)))1/16))1/16)

 

Here are the Andre Meier Functions invoked in the code above:

 

;EXTRA FUNCTIONS
;;;LENGTH-LEGATO (ANDRE MEIER)

(defun length-staccato (n alist)
  (let ((newlengths)
        (new-omn (omn-merge-ties (flatten  alist)))
        (time-sign (get-time-signature alist)))
    (progn 
      (setf newlengths (loop for i in (omn :length new-omn)
                         when (> i 0)
                         append (if (= n i)
                                  (list i)
                                  (list n (* -1 (abs (- i n)))))
                         
                         else collect i))
      (if (omn-formp alist)
        (omn-to-time-signature (make-omn :length newlengths
                                         :pitch (omn :pitch new-omn)
                                         :velocity (omn :velocity new-omn)
                                         :articulation (omn :articulation new-omn))
                               time-sign)
        newlengths))))

;;LENGHT TO BINARY ANDRE MEIER

(defun length-to-binary (lengthlist n)
  (let ((newlist (loop for i in (omn :length lengthlist)
                    collect (/ i n))))
    (loop for x in newlist
      when (> x 0)
      append (append (list 1) (gen-repeat (1- x) '0))
      else append  (gen-repeat (abs x) '0))))
    

(length-to-binary '(-e -s s q e) 1/16)
(length-to-binary '(-1/16 1/16 -1/8) 1/16)
=> (0 0 0 0 1 0 0 0 1 0)

(length-to-binary '(-q s s q e) 1/16)
=> (0 0 0 0 1 1 1 0 0 0 1 0)

 

Share this post


Link to post
Share on other sites

MY effort, version 2

 

(setf pcsrhy1 (flatten (omn :length (length-staccato 1/16 (time-point-system (pcs '3-11b :pitch)'s)))))

;; here you adjust the rotation of the rhythm: (1) is the original, 0 is one 16th note ahead (-1) is 2 16th notes ahead and so on

(setf pcsrot1 (row-rotation 1 (length-to-binary pcsrhy1 1/16)))

(binary-map pcsrot1 1/16)

 

The aforementioned Meier's functions are necessary...

 

Best,

Julio

Share this post


Link to post
Share on other sites

This is the EASIEST Method to achieve the result !!!

FINALLY !! Without the need of Meier's Functions !!

 

(binary-map (row-rotation 0 (gen-binary-row 12 (pcs '3-11)))1/16)

YEEEEESSSSS !!!

added 10 minutes later

 

(binary-map (row-rotation 1 (gen-binary-row 12 (pcs '3-11)))1/16)

image.png.803f0b8c2a339d03013203e65d832190.png

(binary-map (row-rotation 0 (gen-binary-row 12 (pcs '3-11)))1/16)

image.png.a3d665e6bee763cee502fd535ff1a748.png

(binary-map (row-rotation -1 (gen-binary-row 12 (pcs '3-11)))1/16)

image.png.f63cc66fc499ba0e252cecbf6b0baf1a.png


(binary-map (row-rotation -2 (gen-binary-row 12 (pcs '3-11)))1/16)

 

image.png.4e46f4510aaed928a8657cd964e369fc.png

(binary-map (row-rotation -3 (gen-binary-row 12 (pcs '3-11)))1/16)

image.png.20f3619c5fd10e16884d44c1dc1edad6.png

(binary-map (row-rotation -4 (gen-binary-row 12 (pcs '3-11)))1/16)

image.png.9adaac4adb338a42c2212af43f8256c8.png

(binary-map (row-rotation -5 (gen-binary-row 12 (pcs '3-11)))1/16)

image.png.da92effc572f056db4077c403a86d4e9.png

(binary-map (row-rotation -6 (gen-binary-row 12 (pcs '3-11)))1/16)

image.png.51367e728b9158180fc8621b316b3d26.png

(binary-map (row-rotation -7 (gen-binary-row 12 (pcs '3-11)))1/16)

image.png.da2f93b99a54387ffb8ef9bc89c96514.png

(binary-map (row-rotation -8 (gen-binary-row 12 (pcs '3-11)))1/16)

image.png.9ecef4b368ed51acd142a21845d02e7f.png

(binary-map (row-rotation -9 (gen-binary-row 12 (pcs '3-11)))1/16)

image.png.3311960e6f55019159de26aabde9b2da.png

(binary-map (row-rotation -10 (gen-binary-row 12 (pcs '3-11)))1/16)

image.png.ee79816eb0c4ac16bb43eded28240689.png

AND FINALLY, back to que original

 

(binary-map (row-rotation -11 (gen-binary-row 12 (pcs '3-11)))1/16)

image.png.e2fda7735354ad10f72978108a026563.png

 

It works !

 

image.png

image.png

image.png

image.png

Share this post


Link to post
Share on other sites

Dear Janusz,

 

Hope it can be useful. It will be great to have this new function ! Thank you !

With a dedicated function, all this can be more elegant, for sure !

An easier workflow.

 

All the code below can be embbeded in only one code:

 

(binary-map (row-rotation -7 (gen-binary-row 12 (pcs '3-11)))1/16)

 

all this can be something like

 

(pcs-to-rhythm (pcs '3-11) 1/16)  with optional arguments, like

 

:rotation - rotation of the series wrapping around itself.

:displace - put a rest of, for ex, 1/16 before the set

;legato -   t, for full value or nil (default) for normal operation (each value equals the quantization

 

(pcs-to-rhythm (pcs '3-11) 1/16) 

image.png.ab71de48a4105e54673f91978cc0d557.png

(pcs-to-rhythm (pcs '3-11) 1/16 :legato t) 

image.png.f74b7a0b773d06dae8331af075be99bb.png only the rhtyhm (without the notes)

:mod - defalt is the 12 time point cycle, but optionally, any cycle rotation, like 16, for example.

:crop - assuming 12 time points as the default cycle, the crop option let you take portions of the sets to

 use. It's easy, just make something to cut the last parts of the binary result.

 

(pcs-to-rhythm (pcs '3-11) 1/16 :crop 8 )  will result in:

image.png.19225f165b2ce08e4fcca07c47497265.png

(pcs-to-rhythm (pcs '3-11) 1/16 :crop 8 :displace 1)

image.png.af792f5eebd8a275fe715fd8c70b71cd.png

(pcs-to-rhythm (pcs '3-11) 1/16 :crop 8 :rotate 1)

image.png.1c67fc928e0ee931874175d05b5026d9.png

 

The crop option helps using portions of the Rhythmic Sets, by truncating some of them, like this:

 

image.png.3e2591cde21d27093006eaa3876efa06.png

 

In the preceeding example, only parts of the 2 sets are used (9 time points out of 12 in the 

first and 8 time points out of 12 in the second).

 

Best !

Julio

 

image.png

Share this post


Link to post
Share on other sites

The crop function is SOLVED

 

(binary-map (butlast (row-rotation 1 (gen-binary-row 12 (pcs '3-11b)))7)1/16)

It's the number 7 as a parameter for the butlast lisp function, after the three parentheses.

 

HERE for the complementary set of the Rhythm (binary-invert)

 

(binary-map (butlast (binary-invert (row-rotation 1 (gen-binary-row 12 (pcs '3-11b))))4) 1/16)

 

Best,

Julio

Share this post


Link to post
Share on other sites

Hey Julio,

 

I was revisiting some old interests and remembered your post...have you come across these particular related presentations and software?

 

https://theconversation.com/how-a-little-mathematics-can-help-create-some-beautiful-music-61812

http://www.dynamictonality.com/xronomorph.htm

...

Share this post


Link to post
Share on other sites
On August 17, 2018 at 9:46 AM, JulioHerrlein said:

Thanks a lot!   Great article and ideas. 

Best, 

Julio 

 

16 hours ago, lviklund said:

Loopyc,

Thank's for pointing to this beatyful app. Just what I have been looking for 🙂

 

/Lasse

 

Oh, you are welcome...so glad you both found it interesting/useful :)

 

I have recently been rediscovering it's potentials using MIDI 'Learn'...connecting the 'rotation', pitch values, etc to external LFO's (I use Numerology 4 Pro) makes for some interesting morphing rhythm studies ;-)

 

 

...

Share this post


Link to post
Share on other sites

The length-staccato is much more complicated the that.

Working with lists a function needs to work with section or exclude.

Anyway I have spent sometime to make it happen.

Share this post


Link to post
Share on other sites
5 hours ago, opmo said:

The length-staccato is much more complicated the that.

Working with lists a function needs to work with section or exclude.

Anyway I have spent sometime to make it happen.

I'm very Happy to see your work, Janusz!  Thank you for all your Hard work in Opusmodus! All the best!  Julio

added 7 minutes later
5 hours ago, opmo said:

The length-staccato is much more complicated the that.

Working with lists a function needs to work with section or exclude.

Anyway I have spent sometime to make it happen.

André Meier came with something interesting in  this post:

Best,

Julio

 

Share this post


Link to post
Share on other sites

Works with tuplets, section and exclude.

Now:
value 1/16 on 1/12 = 1/24
value 1/16 on 3/20 = 1/20

etc...

Here are the final function results:

length-staccato (sequence &key (value 1/16) section exclude omn)

 

(length-staccato '(q - = =) :omn t)
=> (s -e. -q s -e. s -e.)

(length-staccato '(3q -3q 3q 3q 3q 3q) :omn t)
=> (3q - = = = =)

(length-staccato '((3q g4 gs4 a4 tie) (3q a4 b4 c5)))
=> ((3q g4 gs4 a4 tie) (-3q b4 c5))

(length-staccato '(5q f4 - === 3q g4 = a4))
=> (5q f4 - f4 -5h 3q g4 g4 a4)

(length-staccato '((q c4 -q e d4 q e4 q f4 tie)
                   (5q f4 - === 3q g4 = a4 tie)
                   (q a4 tie e a4 -q q b4 tie)
                   (q b4 -q e c5 e d5 tie)
                   (e d5 -q e5 q f5 q g5)))
=> ((s c4 -e. -q s d4 - e4 -e. s f4 tie -e.) (-5q - f4 -5h 3q g4 g4 a4 tie)
    (-q. -q s b4 tie -e.) (-q - s c5 - d5 tie -) (-e - - s e5 -e. s f5 -e. s g5 -e.))

(length-staccato '(q e4 mp q tasto q -q q q))
=> (s e4 mp -e. s e4 tasto -e. s e4 -e. -q s e4 -e. s e4 -e.)

(length-staccato '((q c4 -q e d4 q e4 q f4 tie)
                   (5q f4 - === 3q g4 = a4 tie)
                   (q a4 tie e a4 -q q b4 tie)
                   (q b4 -q e c5 e d5 tie)
                   (e d5 -q e5 q f5 q g5)) :section '(0 3))
=> ((s c4 -e. -q s d4 - e4 -e. s f4 tie -e.) (-5q - 5h. f4 3q g4 g4 a4 tie)
    (q. a4 -q b4 tie) (s b4 -e. -q s c5 - d5 tie -) (-e - - q e5 f5 g5))

 

Best wishes,

Janusz

Share this post


Link to post
Share on other sites

pcs-rhythm (pcs &key points invert (rotate 0) (value 1/16) legato omn)

 

(pcs-rhythm '3-11 :invert t :points 9 :omn t)
=> (-s = = - = = = - =)

(pcs-rhythm '3-11 :invert t :points 9 :rotate 7 :omn t)
=> (s = - = = = = - =)

(pcs-rhythm '3-11 :points 9 :legato t :omn t)
=> (e. q e)

;; Interval list to prime-form: (pcs-prime-form '(2 5 7 11)) => (0 3 6 8)

(pcs-rhythm '(2 5 7 11) :omn t)
=> (s - - = - - = - = - - -)

(pcs-rhythm '(2 5 7 11) :rotate 7 :omn t)
=> (-s = - = - - - = - - = -)

(pcs-rhythm '(3-11 6-5) :points '(8 9) :omn t)
=> ((s - - = - - - =) (s = = = - - = = -))

(pcs-rhythm '((2 5 7 11) (1 6 3 9 2)) :omn t)
=> ((s - - = - - = - = - - -) (s = = - - = - - = - - -))

and

(pcs-rhythm '(3-11 6-21)
            :points '(8 9 7 9)
            :rotate '(0 1 2 3)
            :legato '(0 1 1 0)
            :value '(s e s 3q)
            :omn t)
=> ((s - - = - - - =) (-e q e = q =) (-e e. e) (-3q - - = - = = = -))

(pcs-rhythm '3-11 :rotate '(0 1 2 3 4 5 6 7 8 9 10 11) :omn t)
=> (( s - - = - - - = - - - -)
    (-s = - - = - - - = - - -)
    (-s - = - - = - - - = - -)
    (-s - - = - - = - - - = -)
    (-s - - - = - - = - - - =)
    ( s - - - - = - - = - - -)
    (-s = - - - - = - - = - -)
    (-s - = - - - - = - - = -)
    (-s - - = - - - - = - - =)
    ( s - - - = - - - - = - -)
    (-s = - - - = - - - - = -)
    (-s - = - - - = - - - - =))

 

image.png.3e2591cde21d27093006eaa3876efa06.png

 

(pcs-rhythm '(6-z25b 6-z41b) :points '(9 8) :omn t)
=> ((s - = = - = - = =) (s - = - - = = =))

 

image.png.db32ec649dacbb030745a69ca56cc9ae.png

(pcs-rhythm '(6-z39 5-13 4-24 6-9)
            :rotate '(0 3 9 2)
            :omn t)
=> ((s - = = = = - - = - - -) (-s - - = = = - = - - - =)
    (-s = - - - = - - - = - =) (-s - = = = = - = - = - -))

There is an error in the 3rd bar, it should read: 4-24(s)R9

 

3rd bar: with 4-24(s)R8
Screen Shot 2018-08-24 at 20.22.08.png

Share this post


Link to post
Share on other sites

WOW !!!!!!!!!!!!!!!!!!!

 

Amazing !!!!

 

This is great !!!!!

MUCH LOVE !!!

Thanks !

Next release ?

 

All the best !!

Julio

LOOKING FORWARD !!!!!!!!!!!!!!!!!!!!!!!!!!!!

😎😎

😍

😍

On 8/23/2018 at 10:26 AM, opmo said:

pcs-rhythm (pcs &key points invert (rotate 0) (value 1/16) legato omn)

 


(pcs-rhythm '3-11 :invert t :points 9 :omn t)
=> (-s = = - = = = - =)

(pcs-rhythm '3-11 :invert t :points 9 :rotate 7 :omn t)
=> (s = - = = = = - =)

(pcs-rhythm '3-11 :points 9 :legato t :omn t)
=> (e. q e)

;; Interval list to prime-form: (pcs-prime-form '(2 5 7 11)) => (0 3 6 8)

(pcs-rhythm '(2 5 7 11) :omn t)
=> (s - - = - - = - = - - -)

(pcs-rhythm '(2 5 7 11) :rotate 7 :omn t)
=> (-s = - = - - - = - - = -)

(pcs-rhythm '(3-11 6-5) :points '(8 9) :omn t)
=> ((s - - = - - - =) (s = = = - - = = -))

(pcs-rhythm '((2 5 7 11) (1 6 3 9 2)) :omn t)
=> ((s - - = - - = - = - - -) (s = = - - = - - = - - -))

and

(pcs-rhythm '(3-11 6-21)
            :points '(8 9 7 9)
            :rotate '(0 1 2 3)
            :legato '(0 1 1 0)
            :value '(s e s 3q)
            :omn t)
=> ((s - - = - - - =) (-e q e = q =) (-e e. e) (-3q - - = - = = = -))

(pcs-rhythm '3-11 :rotate '(0 1 2 3 4 5 6 7 8 9 10 11) :omn t)
=> (( s - - = - - - = - - - -)
    (-s = - - = - - - = - - -)
    (-s - = - - = - - - = - -)
    (-s - - = - - = - - - = -)
    (-s - - - = - - = - - - =)
    ( s - - - - = - - = - - -)
    (-s = - - - - = - - = - -)
    (-s - = - - - - = - - = -)
    (-s - - = - - - - = - - =)
    ( s - - - = - - - - = - -)
    (-s = - - - = - - - - = -)
    (-s - = - - - = - - - - =))

 

image.png.3e2591cde21d27093006eaa3876efa06.png

 


(pcs-rhythm '(6-z25b 6-z41b) :points '(9 8) :omn t)
=> ((s - = = - = - = =) (s - = - - = = =))

 

image.png.db32ec649dacbb030745a69ca56cc9ae.png


(pcs-rhythm '(6-z39 5-13 4-24 6-9)
            :rotate '(0 3 9 2)
            :omn t)
=> ((s - = = = = - - = - - -) (-s - - = = = - = - - - =)
    (-s = - - - = - - - = - =) (-s - = = = = - = - = - -))
        

 

THIS IS THE Coolest thing !!! hahahahahaha

 

Share this post


Link to post
Share on other sites

 

Dear Janusz,

 

Yes, I did a mistake in the dissertation caption of this example but in the

attached complete catalog of the Dissertation it's correct.

The complete rotations of the 4-24 set are like this (page 388 of the dissertation):

 

image.png.d92fe19ebbdc45ccc5bbeb3b711ef1e3.png

 

Thank you !

Julio

 

Share this post


Link to post
Share on other sites

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.

Sign in to follow this  

  • Similar Topics

    • By spuki
      Hallo,
      newbie here 🙂
      I'm just starting with OM and playing around with the tutorials.
      I slightly changed tutorial #4 and run into something strange.
       
      If i run the script as posted below, all works as expected. But when i change the function reverse to nreverse (and nreverse is the oficially documented name of the function)
      the omn result will leave the right hand empty. Why ist that?  And why does reverse work as i expect it to work?
       
      And, another thing: i dont understand what the term seed will do. Will it make random functions behave always the same as long as the seed is the same?
      ...and what does the number following the seed mean?
       
      Thank you !!
      Best,
      Sebasian
      (setf pitches (gen-repeat 5 '(c4 cs4 fs4 g4 c5 cs5))) (setf transposed-pitches (gen-repeat 5 (pitch-transpose -24 pitches))) (setf lengths (span pitches '(e))) (setf lengths-rests (length-weight lengths :weight '(2 1) :seed 12)) (setf left-lengths (reverse lengths-rests)) (setf piano-righthand       (make-omn        :length lengths-rests        :pitch pitches        :velocity'(mp))) (setf piano-lefthand       (make-omn        :length left-lengths        :pitch transposed-pitches        :velocity '(f))) (setf timesigs (get-time-signature left-lengths)) (def-score lesson-4            (:key-signature 'chromatic             :time-signature '( 5 8 )             :tempo 190             :layout (piano-layout 'piano-rh 'piano-lh))     (piano-rh    :omn piano-righthand    :channel 1    :sound 'gm    :program 'acoustic-grand-piano)     (piano-lh    :omn piano-lefthand)   )  
    • By Deb76
      Hello, 
      Somewhat stupid question but I do not find a function that would allow me to reorder a sequence of pitches.
      Let me explain, on a forum where Messiaen's limited transposition modes are discussed, I wanted to show that with Opumodus we could very easily analyze the modes and recreate them. I have no problem with those who are in total symmetry and divisible by two, but if I take the mode 3: (c4 d4 eb4 e4 gb4 g4 ab4 bb4 b4), using the function pitch-transpose-start I get in the end the mode but according to the postponement of the intervallic structure on c4 d4 ab4 is => ((c4 e4 gs4) (d4 fs4 bb4) (eb4 g4 b4)). I tried to reorder with the function pcs-normal-order the mode is reordered but with however the c4 in last position: (d4 eb4 e4 fs4 g4 gs4 bb4 b4 c4). Now, I suppose there is a function that makes it possible to obtain the right disposition. What is it ?
      (setf modmessiaen3 '(c4 d4 eb4 e4 gb4 g4 ab4 bb4 b4)) (setf SIMessiaenMod3 (pitch-to-interval modmessiaen3)) ; =>  (2 1 1 2 1 1 2 1) (setf mod3divide (gen-divide 3 modmessiaen3)) (setf firstmodmessiaen3 (filter-first 3 modmessiaen3)) (setf report3 '(c4 e4 ab4)) (setf rep3 (gen-repeat 3 (list report3))) (setf pch3 (modus (flatten (pitch-transpose-start firstmodmessiaen3 rep3)))) (setf MessiaenMod3 (pcs-normal-order pch3 :pitch)) (setf SIMessiaenMod3a (pitch-to-interval MessiaenMod3)) ; => (1 1 2 1 1 2 1 -11) (setf mod3chordsM (melodize '((c4eb4gb4) (d4gb4bb4) (eb4gb4bb4) (e4g4b4) (gb4bb4db5) (g4b4d5) (ab4b4d5) (bb4gb5) (b4d5gb5)))) (setf analysechords3 (pcs-analysis (integer-to-pitch (modus mod3chordsM))))  
      In particular, this distorts the analysis of the interstellar structure of mode 3:
      of (2 1 1 2 1 1 2 1) I get (1 1 2 1 1 2 1 -11)
      Besides, there is probably a more efficient script than the one I tried?
      Best.
      Didier
       
      PS : In fact, I realize that the function pcs-normal-order is not adapted at all according to the modes.
    • By JulioHerrlein
      Dear Friends,
       
      What is the exact opposite function of length-legato ?
       
      Lenght-legato turns this:
       

       
      onto this:
       

       
      I want exactly the reverse:
      Changing this:

      to this:

       
      Thanks for help !
       
      Best !
      Julio
×
×
  • Create New...