Jump to content
Sign in to follow this  


Recommended Posts

Here is a rather simple function that might be useful for others as well. 


The function rotate-omn rotates a sequence by the given number of positions, much like gen-rotate. However, you can specify which parameter you want to rotate, whether you want to rotate the flattened sequence or subsequences separately, or only certain subsequences. 

(setf melody '((-h q c4) (q. f4 e g4 q a4) (h. g4)))

(rotate-omn :right melody) 
; => ((-h q g4) (q. c4 e f4 q g4) (h. a4))

(rotate-omn :left melody :parameter :length) 
; => ((q c4 q. f4 e g4) (q a4 h g4 tie) (q g4 -h))

(rotate-omn 2 melody :section '(1) :flat nil)
; => ((-h q c4) (q. g4 e a4 q f4) (h. g4)) 


The function is part of my tot library (http://github.com/tanders/tot). It is a generalisation of the built-in gen-rotate, again with a short definition calling my function edit-omn. 





Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this