Jump to content

Stravinsky Rotation With Fewer Pitches


Recommended Posts

The existing STRAWINSKY-ROTATION function generates pitch and choral material using the given 12-tone row. Is it possible to use the same function with fewer pitches? I attached an example that I'd like to produce.

 

Like the STRAWINSKY-ROTATION function, I'd like to take any number of pitches and then use cyclic-rotation to transpose each inversion so that the beginning note is always the same.

 

51924523_ScreenShot2020-12-10at1_34_31PM.png.b0c7619c67a7eb031986e44e43933ea7.pngThank you!

Link to comment
Share on other sites

The input needs to be 12-tone row.


Maybe this helps:

(setf row '(c4 eb4 gs4 g4 a4 d4 fs4 cs4 bb4 b4 f4 e4))
(setf str-rot
      (pitch-transpose-start
       0
       (sort-asc
        (pitch-melodize
         (mclist
          (flatten
           (strawinski-rotation row :remove t)))))))
=> ((c4 f4 fs4 a4 bb4 c5) (c4 e4 bb4 bb4 cs5 f5) (c4 cs4 cs4 cs5 cs5 d5)
    (c4 e4 g4 g4 cs5 f5) (c4 d4 eb4 fs4 g4 c5) (c4 cs4 f4 g4 gs4 eb5)
    (c4 d4 e4 gs4 b4 f5) (c4 cs4 d4 bb4 b4 c5) (c4 fs4 a4 cs5 eb5 f5)
    (c4 g4 gs4 bb4 d5 eb5) (c4 d4 eb4 fs4 g4 c5) (c4 e4 g4 g4 cs5 f5)
    (c4 cs4 cs4 cs5 cs5 d5) (c4 e4 bb4 bb4 cs5 f5) (c4 f4 fs4 a4 bb4 c5)
    (c4 g4 gs4 bb4 d5 eb5) (c4 fs4 a4 cs5 eb5 f5) (c4 cs4 d4 bb4 b4 c5)
    (c4 d4 e4 gs4 b4 f5) (c4 cs4 f4 g4 gs4 eb5))

(chordize str-rot)
=> ((c4f4fs4a4bb4c5) (c4e4bb4bb4cs5f5) (c4cs4cs4cs5cs5d5) 
    (c4e4g4g4cs5f5) (c4d4eb4fs4g4c5) (c4cs4f4g4gs4eb5)
    (c4d4e4gs4b4f5) (c4cs4d4bb4b4c5) (c4fs4a4cs5eb5f5)
    (c4g4gs4bb4d5eb5) (c4d4eb4fs4g4c5) (c4e4g4g4cs5f5)
    (c4cs4cs4cs5cs5d5) (c4e4bb4bb4cs5f5) (c4f4fs4a4bb4c5)
    (c4g4gs4bb4d5eb5) (c4fs4a4cs5eb5f5) (c4cs4d4bb4b4c5)
    (c4d4e4gs4b4f5) (c4cs4f4g4gs4eb5))

 

or

(setf row '(c4 eb4 gs4 g4 a4 d4 fs4 cs4 bb4 b4 f4 e4))
(setf str-rot2
      (pitch-transpose-start
       0
       (sort-asc
        (strawinski-rotation row :remove t :chord nil))))
=> ((c4 cs4 f4 fs4 g4) (c4 d4 g4 gs4 a4) (c4 d4 eb4 g4 a4)
    (c4 d4 eb4 gs4 a4) (c4 d4 eb4 g4 gs4) (c4 eb4 g4 gs4 a4)
    (c4 eb4 e4 a4 bb4) (c4 cs4 d4 fs4 g4) (c4 eb4 e4 f4 bb4)
    (c4 eb4 e4 f4 a4) (c4 eb4 f4 a4 bb4) (c4 e4 f4 a4 bb4)
    (c4 cs4 d4 fs4 g4) (c4 cs4 d4 g4 a4) (c4 d4 fs4 g4 a4)
    (c4 cs4 fs4 g4 a4) (c4 cs4 f4 fs4 gs4) (c4 cs4 d4 fs4 a4)
    (c4 cs4 fs4 g4 bb4) (c4 cs4 f4 fs4 g4) (c4 f4 fs4 g4 bb4)
    (c4 e4 f4 fs4 a4) (c4 cs4 f4 g4 bb4) (c4 cs4 f4 fs4 bb4))
    
(chordize str-rot2)
=> ((c4cs4f4fs4g4) (c4d4g4gs4a4) (c4d4eb4g4a4) (c4d4eb4gs4a4)
    (c4d4eb4g4gs4) (c4eb4g4gs4a4) (c4eb4e4a4bb4) (c4cs4d4fs4g4)
    (c4eb4e4f4bb4) (c4eb4e4f4a4) (c4eb4f4a4bb4) (c4e4f4a4bb4)
    (c4cs4d4fs4g4) (c4cs4d4g4a4) (c4d4fs4g4a4) (c4cs4fs4g4a4)
    (c4cs4f4fs4gs4) (c4cs4d4fs4a4) (c4cs4fs4g4bb4) (c4cs4f4fs4g4)
    (c4f4fs4g4bb4) (c4e4f4fs4a4) (c4cs4f4g4bb4) (c4cs4f4fs4bb4))

 

Link to comment
Share on other sites

Thanks for pointing me in the right direction. I was able to arrive at the solution using the CHORD-INVERSION function. 


 

(setf chord '(c4d4e4))
(setf rot-size (get-chord-size chord))
=> (3)

(setf str-rot3
      (pitch-transpose-start
       0
       (sort-asc
        (pitch-melodize
         (mclist
          (flatten
           (chord-inversion rot-size chord :root t :series t)))))))
=> ((c4 d4 e4) (c4 d4 bb4) (c4 gs4 bb4) (c4 d4 e4))
(chordize str-rot3)

(chordize str-rot3)
((c4d4e4) (c4d4bb4) (c4gs4bb4) (c4d4e4))

 

 

 

 

Link to comment
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.

×
×
  • Create New...

Important Information

Terms of Use Privacy Policy