Jump to content

Featured Replies

Posted

Hi all,

 

I'm new to Lisp and new to OpusModus but have over 20 years of programming experience and an academic degree in composition. I'm having a great time learning Lisp and getting a better feel for the power of using OpusModus.

 

As an exercise, I would like to be able to program functions that generate Slonimsky patterns. For example pattern 648: c4 cs5 d4 ds5 e4 es5 (from c4 to c5 and back to c4). (see attached image)

 

Instead of making it a data list I would like to be able to program a Lisp function that generates the pattern.

 

Maybe someone on this forum can give me a jump start.

 

Many thanks in advance,

 

Wim Dijkgraaf

 

Slonimsky648.JPG

in lisp -> create OMN with (midi-to-pitch)... 

 

(setq half-row (loop repeat 13
                 with interval
                 with stack = 60
                 with cnt = 0
                 when (oddp cnt) do (setq interval 13)  
                 when (evenp cnt) do (setq interval -11) 
                 when (= cnt 0) collect stack
                 else collect (setq stack (+ stack interval))
                 do (incf cnt)))

 

(midi-to-pitch (append half-row (reverse (butlast half-row))))

  • Author

This is a great learning experience. Both SB and AM thank you so much!!!!

 

Worked on page 90 of Slonimsky's book to further discover what can be done with make-scale and came up with the following:

 

;; Slonimsky 648
(make-scale 'c4  14 :alt '(13 -11) :type :pal)

 

;; Slonimsky 649
(make-scale 'c4  14 :alt '(13 13 -11 -11) :type :pal)

 

;; Slonimsky 650
(make-scale 'c4  13 :alt '(13 13 13 -11 -11 -11) :type :pal)

 

;; Slonimsky 651
(make-scale 'c4  13 :alt '(1 13 -11) :type :pal)

 

;; Slonimsky 652
(make-scale 'c4  13 :alt '(13 -11 1) :type :pal)

 

;; Slonimsky 653
(make-scale 'c4  13 :alt '(13 1 -11) :type :pal)

 

;; Slonimsky 654
(make-scale 'c4  13 :alt '(1 1 13 1 1 -11) :type :pal)

 

;; Slonimsky 655
(make-scale 'c2  13 :alt '(11 -1 11 -1) :type :pal)

 

;; Slonimsky 656 - has mismatch with original -> to be checked why
(make-scale 'c2  14 :alt '(11 11 -13 11) :type :pal)

 

;; Slonimsky 657 - has mismatch with original -> to be checked why
(make-scale 'c2  14 :alt '(11 11 11 11 -13 -13 -13) :type :pal)

 

It makes my day :-)

 

Wim Dijkgraaf

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