Jump to content
View in the app

A better way to browse. Learn more.

Opusmodus

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Is there a rotation function for minimalist effects?

Featured Replies

I wrote a script to reproduce Steve Reich's "Clapping Music" by brute forcing a list of rhythm permutations. Is there a single command that would do the same?

;; ---------------------------------------------------------

;; Welcome to the Composer panel.

;; This is the space where you write your score.

;; ---------------------------------------------------------

(setf Clap1 '(e g4 e e -e e e -e e -e e e -e ))

(setf Clap2 '( ( e c4 e e -e e e -e e -e e e -e )

( e e -e e e -e e -e e e -e e )

( e -e e e -e e -e e e -e e e )

( -e e e -e e -e e e -e e e e )

( e e -e e -e e e -e e e e -e )

( e -e e -e e e -e e e e -e e )

( -e e -e e e -e e e e -e e e )

( e -e e e -e e e e -e e e -e )

( -e e e -e e e e -e e e -e e )

( e e -e e e e -e e e -e e -e )

( e -e e e e -e e e -e e -e e )

( -e e e e -e e e -e e -e e e )

( e e e -e e e -e e -e e e -e )))

(setf RepClap1 (gen-repeat (length Clap2) Clap1))

(ps 'gm

:p (list RepClap1 Clap2)

:time-signature '(6 4)

:tempo 160

)

This perhaps

(setf Clap2 (loop for i from 0 downto -12 collect (gen-rotate i (pitch-transpose -7 Clap1))))

less calculations:

(setf Clap3 (loop with clap = (pitch-transpose -7 Clap1) for i from 0 downto -12 collect (gen-rotate i clap)))

Or repeating every pattern 8 times.

((setf Clap3 (omn-to-measure (loop with clap = (pitch-transpose -7 Clap1) for i from 0 downto -12 collect (gen-repeat 8 (gen-rotate i clap))) 6/4))

Jesper

Solution:

(setf clap1 '(e g4 = = - = = - = - = = -))
(setf clap2 (gen-rotate 12 '(e c4 = = - = = - = - = = -) :type 'list))

or

(setf cl1 '(e g4 = = - = = - = - = = -))
(setf cl2 '(e c4 = = - = = - = - = = -))
(setf r-num (length (single-events cl2)))
(setf r-cl2 (gen-rotate (1- r-num) cl2 :type 'list))
(setf r-cl1 (gen-repeat (length r-cl2) (list cl1)))

(ps 'gm
    :p (list r-cl1 r-cl2)
    :time-signature '(6 4)
    :tempo 160
    )

quite simple to do :-)

Ah, type list. Neat.

Jesper

  • Author

Thank you! I don't know why gen-rotate didn't show up in my search. I knew there was an elegant solution!

Also this solution, from Book 2:

;;;--------------------------------------------------------
;;; Study and Practice in Composition with Opusmodus - Book 2
;;; Julio Herrlein
;;; ISBN 9791280270566
;;; Score Examples (code)
;;;--------------------------------------------------------
;;; 2.4. Reich's Clapping Music - PCS-Rhythm
;;;--------------------------------------------------------
(progn
(setf cell 1)

;; Clap 1 Ostinato/Timeline Voice
(setf rhy1 (pcs-rhythm '8-26 :rotate 9))
(setf aug1 (length-augmentation 2 rhy1))
(setf rep1 (gen-repeat (* 13 cell) aug1))
(setf clap1-ostinato (omn-to-time-signature rep1 '(6 4)))

;; Clap 2 Variation Voice
(setf rhy2 (pcs-rhythm '8-26 :rotate '(9 8 7 6 5 4 3 2 1 0 11 10 9)))
(setf aug2 (length-augmentation 2 rhy2))
(setf rep2 (gen-repeat cell aug2))
(setf clap2-rotate (omn-to-time-signature aug2 '(6 4)))

;; To find the length of the repetitions
(get-count clap2-rotate :sum t)

;; Preview Score
(ps 'gm
:rhy (list clap1-ostinato clap2-rotate)
:key-signature '(c maj) :tempo 88 :time-signature '(12 8))
)

Create an account or sign in to comment


Copyright © 2014-2026 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

Account

Navigation

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.