Jump to content

opmo

Administrators
  • Posts

    2,901
  • Joined

  • Last visited

Reputation Activity

  1. Sad
    opmo got a reaction from YiyangW in Apple M1 Arm processor?   
    We are waiting for CCL to make the move.
  2. Like
    opmo got a reaction from torstenanders in listener   
    Soon I will release the documentation for the SCORE-PLAYER and STOP-SCORE-PLAYER function.
  3. Like
    opmo got a reaction from AM in listener   
    Soon I will release the documentation for the SCORE-PLAYER and STOP-SCORE-PLAYER function.
  4. Like
    opmo got a reaction from Stephane Boussuge in listener   
    Soon I will release the documentation for the SCORE-PLAYER and STOP-SCORE-PLAYER function.
  5. Like
    opmo got a reaction from JulioHerrlein in Simple Tuplet Question   
    If possibile the system will use power of 2 values and not tuplets.
     
    (/ 3/4 4) => 3/16  
  6. Thanks
    opmo reacted to InLight-Tone in Opusmodus on iOS/iPad?   
    OK, I'm obviously ignorant about the complexity of the job, but thanks for considering.
  7. Like
    opmo reacted to InLight-Tone in Opusmodus on iOS/iPad?   
    Saw this at LispWorks. Any chance OM could be ported to iPad?
    LispWorks® for Mobile Runtime
    LispWorks for Mobile Runtime is the generic name for our implementations of ANSI Common Lisp which generate Lisp runtime libraries for mobile platforms. Currently these are LispWorks for Android Runtime and LispWorks for iOS Runtime. These are licensed separately from each other, and they are sold as add-ons to LispWorks. There are no runtime license fees.
    LispWorks for Mobile Runtime has most of the language-level features of LispWorks but not CAPI or the LispWorks IDE. It is source code compatible with LispWorks on supported platforms. You use LispWorks to develop your code, and then run LispWorks for Mobile Runtime on a suitable platform to create your mobile Lisp library.
    LispWorks for Android™ Runtime
    LispWorks for Android Runtime has most of the features of LispWorks but not CAPI or the LispWorks IDE. Currently it is 32-bit only.
    You can run it on ARM Linux or a suitable platform with an ARM emulator, including x86/x86_64 Linux and Mac OS X. We supply the QEMU emulator for Mac OS X; Linux users should install it from their distribution.
    LispWorks for Android Runtime is available to LispWorks 7.1 licensees, and is separately licensed under this End User License Agreement.
    LispWorks for iOS Runtime
    LispWorks for iOS Runtime has most of the features of LispWorks, but not CAPI or the LispWorks IDE, and iOS runtimes cannot use cl:compile. It supports both 32-bit and 64-bit.http://www.lispworks.com/images/new_small.png
    You should run it on Mac OS X.
    LispWorks for iOS Runtime is available to LispWorks 7.1 licensees, and is separately licensed under this End User License Agreement.
    Further Information
    Here are details about system requirements, information about pricing and how to order.
    To try before you buy, ask for an evaluation license.
    If you need further information about LispWorks for Mobile Runtime, please send e-mail to lisp-sales@lispworks.com.
  8. Thanks
    opmo reacted to Deb76 in An analysis of proliferating series with the analysis tools of Opusmodus   
    It is certainly an iconoclastic analysis, but André's script to generate Jean Barraqué's proliferating series made me want to test several Anton Webern series in his script and see how they were modified, in particular at level of their intervallic structures. It is also an opportunity to test the graphical analysis tools offered by Opusmodus. And in particular in the various circular representations for the pitches. For the interval classes, I used the circle-rythm-plot function but that would deserve, in my opinion, a specific circular representation.
    Sorry for my bad English.
    Didier
    ActuelJeanBarraqueExport.pdf
  9. Like
    opmo got a reaction from Stephane Boussuge in Opusmodus 2.2.26563   
    2.2.26563 
     
    – Additional Functionality:
    COUNTERPOINT - additional dictum keyword :tonality
    GEN-DICTUM - additional dictum keyword :tonality
     
    Additional dictum symbol (=) - repeats last method, harmony or tonality values.
     
    In this example we assign an variabile to a list of tonalities:
    (setf tonality1 '((major :root 'a3 :map step :rotate 1 :variant 'i)                   (minor :root 'e4 :map step)                   (major :root 'd4 :map step :rotate 1 :variant 'ri)                   (minor :root 'fs4 :map step))) (counterpoint patterns '(((1 2 1 2) :methods (r - (ri dl5) (r dl2)) :tonality tonality1)))  
    Tonality defined to all voices:
    ((1 2 1 2) :methods (r - (ri dl5) (r dl2)) :tonality ((major :map step)))  
    Same as above with repeat symbol (=). The symbol (=) means repeat of the last tonality used:
    ((1 2 1 2) :methods (r - (ri dl5) (r dl2)) :tonality ((major :map step) = = =))  
    Assigning variables to a list of methods:
    (setf m1 '((t5 1 3) (t12 r))       m2 '(t4 (i t12 tie))       m3 '((r d7) (t9 dl3)))        (counterpoint patterns               '(((1 2) :methods m1)                 ((2 2) :methods m2)                 ((2 1) :methods m3)))  
  10. Like
    opmo got a reaction from JulioHerrlein in Opusmodus 2.2.26563   
    2.2.26563 
     
    – Additional Functionality:
    COUNTERPOINT - additional dictum keyword :tonality
    GEN-DICTUM - additional dictum keyword :tonality
     
    Additional dictum symbol (=) - repeats last method, harmony or tonality values.
     
    In this example we assign an variabile to a list of tonalities:
    (setf tonality1 '((major :root 'a3 :map step :rotate 1 :variant 'i)                   (minor :root 'e4 :map step)                   (major :root 'd4 :map step :rotate 1 :variant 'ri)                   (minor :root 'fs4 :map step))) (counterpoint patterns '(((1 2 1 2) :methods (r - (ri dl5) (r dl2)) :tonality tonality1)))  
    Tonality defined to all voices:
    ((1 2 1 2) :methods (r - (ri dl5) (r dl2)) :tonality ((major :map step)))  
    Same as above with repeat symbol (=). The symbol (=) means repeat of the last tonality used:
    ((1 2 1 2) :methods (r - (ri dl5) (r dl2)) :tonality ((major :map step) = = =))  
    Assigning variables to a list of methods:
    (setf m1 '((t5 1 3) (t12 r))       m2 '(t4 (i t12 tie))       m3 '((r d7) (t9 dl3)))        (counterpoint patterns               '(((1 2) :methods m1)                 ((2 2) :methods m2)                 ((2 1) :methods m3)))  
  11. Like
    opmo reacted to JulioHerrlein in Replace Stream - Amazing Tool !!!!   
    Dear Janusz, 
     
    Thanks for the explanation.  
    I found my way to use it  !!!
    Finally !!!
    It will be VERY USEFUL (thanks a lot)
     
    Here is my way to use it:
    SCORE BEFORE RE-PITCH
     
    ;;; BEFORE REPITCH (progn (setf rv1 '((1/8) (1/8 3/4 1/8 1/8 3/4) (1/4) (1/12 1/12 1/12 3/16 1/4 1/16 -3/8 1/8 1/4 -1/8 1/8) (3/4) (1/8 1/8 1/2 1/4 1/12 1/12 1/12) (3/16) (1/4 1/16 -3/8 1/8 1/4 -1/8 1/8 1/2) (1/4) (1/8 1/2 1/8 1/4 1/12 1/12 1/12 3/16 1/4 1/16) (-3/8 1/8) (1/4 -1/8 1/8 3/4 1/8 1/8) (1/2) (1/4 1/12 1/12 1/12 3/16 1/4 1/16 -3/8 1/8) (1/4) (-1/8 1/8 1/2 1/4 1/8 1/2 1/8) (1/4) (1/12 1/12 1/12 3/16 1/4 1/16 -3/8 1/8 1/4 -1/8 1/8) (3/4) (1/8 1/8 1/2 1/8 3/8) (1/2) (1/8 3/8) (1/8) (1/8 3/4 1/8 1/8 3/4) (1/4) (1/12 1/12 1/12 3/16 1/4 1/16 -3/8 1/8 1/4 -1/8 1/8) (3/4) (1/8 1/8 1/2 1/4 1/12 1/12 1/12) (3/16) (1/4 1/16 -3/8 1/8 1/4 -1/8 1/8 1/2) (1/4) (1/8 1/2 1/8 1/4 1/12 1/12 1/12 3/16 1/4 1/16) (-3/8 1/8) (1/4 -1/8 1/8 3/4 1/8 1/8) (1/2) (1/4 1/12 1/12 1/12 3/16 1/4 1/16 -3/8 1/8) (1/4) (-1/8 1/8 1/2 1/4 1/8 1/2 1/8) (1/4) (1/12 1/12 1/12 3/16 1/4 1/16 -3/8 1/8 1/4 -1/8 1/8) (3/4) (1/8 1/8 1/2 1/8 3/8) (1/2) (1/8 3/8) (1/8) (1/8 3/4 1/8 1/8 3/4) (1/4) (1/12 1/12 1/12 3/16 1/4 1/16 -3/8 1/8 1/4 -1/8 1/8) (3/4) (1/8 1/8 1/2 1/4 1/12 1/12 1/12) (3/16) (1/4 1/16 -3/8 1/8 1/4 -1/8 1/8 1/2) (1/4) (1/8 1/2 1/8 1/4 1/12 1/12 1/12 3/16 1/4 1/16) (-3/8 1/8) (1/4 -1/8 1/8 3/4 1/8 1/8) (1/2) (1/4 1/12 1/12 1/12 3/16 1/4 1/16 -3/8 1/8) (1/4) (-1/8 1/8 1/2 1/4 1/8 1/2 1/8) (1/4) (1/12 1/12 1/12 3/16 1/4 1/16 -3/8 1/8 1/4 -1/8 1/8) (3/4) (1/8 1/8 1/2 1/8 3/8) (1/2) (1/8 3/8))) (setf rv2 '((-1/4 -1/8 1/8) (1/2 -1/4 -1/8 1/8 1/2) (-1/8 1/8) (3/4 -1/2 -1/8 1/8 1/4) (1/12) (1/12 1/12 3/16 1/4 1/16 -1/8 1/8 1/2 -1/8 1/8 1/4) (1/2) (-1/2 -1/8 1/8 1/4 1/12 1/12 1/12 3/16 1/16) (1/4) (-1/8 1/8 1/2 -1/8 1/8 3/4) (-1/2 -1/8 1/8) (1/4 1/12 1/12 1/12 3/16 1/4 1/16 -1/8 1/8) (1/2) (-1/8 1/8 1/4 1/2) (-1/2 -1/8 1/8) (1/4 1/12 1/12 1/12 3/16 1/16 1/4 -1/8 1/8 1/2) (-1/8 1/8) (3/4 -1/2 -1/8 1/8 1/4) (1/12) (1/12 1/12 3/16 1/4 1/16 -1/8 1/8 1/2 -1/4 -1/8 1/8) (1/2) (-1/4 -1/8 1/8) (-1/4 -1/8 1/8) (1/2 -1/4 -1/8 1/8 1/2) (-1/8 1/8) (3/4 -1/2 -1/8 1/8 1/4) (1/12) (1/12 1/12 3/16 1/4 1/16 -1/8 1/8 1/2 -1/8 1/8 1/4) (1/2) (-1/2 -1/8 1/8 1/4 1/12 1/12 1/12 3/16 1/16) (1/4) (-1/8 1/8 1/2 -1/8 1/8 3/4) (-1/2 -1/8 1/8) (1/4 1/12 1/12 1/12 3/16 1/4 1/16 -1/8 1/8) (1/2) (-1/8 1/8 1/4 1/2) (-1/2 -1/8 1/8) (1/4 1/12 1/12 1/12 3/16 1/16 1/4 -1/8 1/8 1/2) (-1/8 1/8) (3/4 -1/2 -1/8 1/8 1/4) (1/12) (1/12 1/12 3/16 1/4 1/16 -1/8 1/8 1/2 -1/4 -1/8 1/8) (1/2) (-1/4 -1/8 1/8) (-1/4 -1/8 1/8) (1/2 -1/4 -1/8 1/8 1/2) (-1/8 1/8) (3/4 -1/2 -1/8 1/8 1/4) (1/12) (1/12 1/12 3/16 1/4 1/16 -1/8 1/8 1/2 -1/8 1/8 1/4) (1/2) (-1/2 -1/8 1/8 1/4 1/12 1/12 1/12 3/16 1/16) (1/4) (-1/8 1/8 1/2 -1/8 1/8 3/4) (-1/2 -1/8 1/8) (1/4 1/12 1/12 1/12 3/16 1/4 1/16 -1/8 1/8) (1/2) (-1/8 1/8 1/4 1/2) (-1/2 -1/8 1/8) (1/4 1/12 1/12 1/12 3/16 1/16 1/4 -1/8 1/8 1/2) (-1/8 1/8) (3/4 -1/2 -1/8 1/8 1/4) (1/12) (1/12 1/12 3/16 1/4 1/16 -1/8 1/8 1/2 -1/4 -1/8 1/8) (1/2) (-1/4 -1/8 1/8))) (setf rv3 '((-1/4 -1/8 1/8) (1/2 -1/4 -1/8 1/8 1/2) (-1/8 1/8) (3/4 -1/2 -1/8 1/8 1/4) (1/12) (1/12 1/12 3/16 1/4 1/16 -1/8 1/8 1/2 -1/8 1/8 1/4) (1/2) (-1/2 -1/8 1/8 1/4 1/12 1/12 1/12 3/16 1/16) (1/4) (-1/8 1/8 1/2 -1/8 1/8 3/4) (-1/2 -1/8 1/8) (1/4 1/12 1/12 1/12 3/16 1/4 1/16 -1/8 1/8) (1/2) (-1/8 1/8 1/4 1/2) (-1/2 -1/8 1/8) (1/4 1/12 1/12 1/12 3/16 1/16 1/4 -1/8 1/8 1/2) (-1/8 1/8) (3/4 -1/2 -1/8 1/8 1/4) (1/12) (1/12 1/12 3/16 1/4 1/16 -1/8 1/8 1/2 -1/4 -1/8 1/8) (1/2) (-1/4 -1/8 1/8) (-1/4 -1/8 1/8) (1/2 -1/4 -1/8 1/8 1/2) (-1/8 1/8) (3/4 -1/2 -1/8 1/8 1/4) (1/12) (1/12 1/12 3/16 1/4 1/16 -1/8 1/8 1/2 -1/8 1/8 1/4) (1/2) (-1/2 -1/8 1/8 1/4 1/12 1/12 1/12 3/16 1/16) (1/4) (-1/8 1/8 1/2 -1/8 1/8 3/4) (-1/2 -1/8 1/8) (1/4 1/12 1/12 1/12 3/16 1/4 1/16 -1/8 1/8) (1/2) (-1/8 1/8 1/4 1/2) (-1/2 -1/8 1/8) (1/4 1/12 1/12 1/12 3/16 1/16 1/4 -1/8 1/8 1/2) (-1/8 1/8) (3/4 -1/2 -1/8 1/8 1/4) (1/12) (1/12 1/12 3/16 1/4 1/16 -1/8 1/8 1/2 -1/4 -1/8 1/8) (1/2) (-1/4 -1/8 1/8) (-1/4 -1/8 1/8) (1/2 -1/4 -1/8 1/8 1/2) (-1/8 1/8) (3/4 -1/2 -1/8 1/8 1/4) (1/12) (1/12 1/12 3/16 1/4 1/16 -1/8 1/8 1/2 -1/8 1/8 1/4) (1/2) (-1/2 -1/8 1/8 1/4 1/12 1/12 1/12 3/16 1/16) (1/4) (-1/8 1/8 1/2 -1/8 1/8 3/4) (-1/2 -1/8 1/8) (1/4 1/12 1/12 1/12 3/16 1/4 1/16 -1/8 1/8) (1/2) (-1/8 1/8 1/4 1/2) (-1/2 -1/8 1/8) (1/4 1/12 1/12 1/12 3/16 1/16 1/4 -1/8 1/8 1/2) (-1/8 1/8) (3/4 -1/2 -1/8 1/8 1/4) (1/12) (1/12 1/12 3/16 1/4 1/16 -1/8 1/8 1/2 -1/4 -1/8 1/8) (1/2) (-1/4 -1/8 1/8))) (setf rv4 '((-1/4 -1/4 -1/8 1/8) (1/4 -1/4 -1/4 -1/8 1/8 1/4) (1/8) (7/8 1/4 1/12 1/12 1/12 3/16 1/16 1/8 1/8) (3/4) (-1/4 -1/8 1/8 1/4 1/8 3/8) (1/2) (1/4 1/12 1/12 1/12 3/16 1/16 1/8 1/2 1/8) (1/4) (-3/8 1/8 1/4 1/8 7/8) (1/4) (1/12 1/12 1/12 3/16 1/16 1/8 1/8 3/4) (-1/4 -1/8 1/8) (1/4 1/8 3/8 1/2 1/4 1/12 1/12 1/12) (3/16) (1/16 1/8 1/2 1/8 1/4 -3/8 1/8 1/4) (1/8) (7/8 1/4 1/12 1/12 1/12 3/16 1/16 1/8 1/8) (3/4) (-1/4 -1/8 1/8 1/4) (-1/4 -1/4 -1/8 1/8) (1/4) (-1/4 -1/4) (-1/4 -1/4 -1/8 1/8) (1/4 -1/4 -1/4 -1/8 1/8 1/4) (1/8) (7/8 1/4 1/12 1/12 1/12 3/16 1/16 1/8 1/8) (3/4) (-1/4 -1/8 1/8 1/4 1/8 3/8) (1/2) (1/4 1/12 1/12 1/12 3/16 1/16 1/8 1/2 1/8) (1/4) (-3/8 1/8 1/4 1/8 7/8) (1/4) (1/12 1/12 1/12 3/16 1/16 1/8 1/8 3/4) (-1/4 -1/8 1/8) (1/4 1/8 3/8 1/2 1/4 1/12 1/12 1/12) (3/16) (1/16 1/8 1/2 1/8 1/4 -3/8 1/8 1/4) (1/8) (7/8 1/4 1/12 1/12 1/12 3/16 1/16 1/8 1/8) (3/4) (-1/4 -1/8 1/8 1/4) (-1/4 -1/4 -1/8 1/8) (1/4) (-1/4 -1/4) (-1/4 -1/4 -1/8 1/8) (1/4 -1/4 -1/4 -1/8 1/8 1/4) (1/8) (7/8 1/4 1/12 1/12 1/12 3/16 1/16 1/8 1/8) (3/4) (-1/4 -1/8 1/8 1/4 1/8 3/8) (1/2) (1/4 1/12 1/12 1/12 3/16 1/16 1/8 1/2 1/8) (1/4) (-3/8 1/8 1/4 1/8 7/8) (1/4) (1/12 1/12 1/12 3/16 1/16 1/8 1/8 3/4) (-1/4 -1/8 1/8) (1/4 1/8 3/8 1/2 1/4 1/12 1/12 1/12) (3/16) (1/16 1/8 1/2 1/8 1/4 -3/8 1/8 1/4) (1/8) (7/8 1/4 1/12 1/12 1/12 3/16 1/16 1/8 1/8) (3/4) (-1/4 -1/8 1/8 1/4) (-1/4 -1/4 -1/8 1/8) (1/4) (-1/4 -1/4))) (setf v1pit '(f5 e5 f5 e5 f5 e5 f5 e5 f5 e5 f5 e5 f5 e5 f5 e5 f5 e5 f5 e5 f5 e5 f5 e5 f5 e5 f5 e5 f5)) (setf v2pit '(c4 d4 c4 d4 c4 d4 c4 d4 c4 d4 c4 d4 c4 d4 c4 d4 c4 d4 c4 d4 c4 d4 c4 d4 c4 d4 c4 d4 c4)) (setf v3pit '(bb3 gs3 bb3 gs3 bb3 gs3 bb3 gs3 bb3 gs3 bb3 gs3 bb3 gs3 bb3 gs3 bb3 gs3 bb3 gs3 bb3 gs3)) (setf v4pit '(bb2 eb2 bb2 eb2 bb2 eb2 bb2 eb2 bb2 eb2 bb2 eb2 bb2 eb2 bb2 eb2 bb2 eb2 bb2 eb2 bb2 eb2)) (setf len-map1 '((e (stacc)) (s (ord)) (h (long)) (h. (long)) (w (long)))) (setf len-map2 '((e (list (rnd-pick '(mf f)))) (s (mf)) (e. (mf)) (h (p<f)) (h. (p<f)) (w (P<f>p))(wq (P<f>p))(wh (P<f>p))(wh. (P<f>p))(ww (P<f>p)))) (setf v1mat-a (make-omn :length rv1 :pitch (span rv1 v1pit) ;to gen-divide = 1 use v1dtc, instead of v1dtb :span :length :velocity (length-map len-map2 rv1 :otherwise '(mf) :repeat t) :articulation (length-map len-map1 rv1 :otherwise '(ord) :repeat t))) (setf v2mat-a (make-omn :length rv2 :pitch (span rv2 v2pit) :span :length :velocity (length-map len-map2 rv2 :otherwise '(mf) :repeat t) :articulation (length-map len-map1 rv2 :otherwise '(ord) :repeat t))) (setf v3mat-a (make-omn :length rv3 :pitch (span rv3 v3pit) :span :length :velocity (length-map len-map2 rv3 :otherwise '(mf) :repeat t) :articulation (length-map len-map1 rv3 :otherwise '(ord) :repeat t))) (setf v4mat-a (make-omn :length rv4 :pitch (span rv4 v4pit) :span :length :velocity (length-map len-map2 rv4 :otherwise '(mf) :repeat t) :articulation (length-map len-map1 rv4 :otherwise '(ord) :repeat t))) (ps 'gm :sq (list (pitch-transpose 0 (ambitus 'violin v1mat-a )) (pitch-transpose 0 (ambitus 'violin v2mat-a)) (pitch-transpose 0 (ambitus 'viola v3mat-a)) (pitch-transpose 0 (ambitus 'cello v4mat-a)) ) :key-signature 'atonal :time-signature '(4 4) ;:tempo 90 :flexible-clef nil :title "Quartet BEFORE RE-PITCH - JULIO HERRLEIN" :display :window) )  
    My solution is to use one distribute-stream per voice.
    In this way, I can just put exactly what I want in each voice.
     
    ;;; QUARTET AFTER REPITCH PROCESS USING One instance of Distribute-Stream for each voice (progn (setf repitch1 '(f5 e5 d5 c5 f5 e5 d5 c5 f5 e5 d5 c5 f5 e5 d5 c5 f5 e5)) (setf repitch2 '(c4 cs4 d4 eb4 e4 f4 fs4 g4 gs4 a4 bb4 c5 cs5 d5 eb5 e5)) (setf repitch3 '(c4 b3 bb3 a3 gs3 g3 fs3 f3 e3 eb3 d3 cs3 c3 b2 bb2 a2)) (setf repitch4 '(cs2 g2 cs2 g2 cs2 g2 cs2 g2 cs2 g2 cs2 g2 cs2 g2 cs2 g2)) (setf v1-new (distribute-stream repitch1 (list v1mat-a))) (setf v2-new (distribute-stream repitch2 (list v2mat-a))) (setf v3-new (distribute-stream repitch3 (list v3mat-a))) (setf v4-new (distribute-stream repitch4 (list v4mat-a))) (setf in1 (make-omn :length v1mat-a :pitch (1~ v1-new))) (setf in2 (make-omn :length v2mat-a :pitch (1~ v2-new))) (setf in3 (make-omn :length v3mat-a :pitch (1~ v3-new))) (setf in4 (make-omn :length v4mat-a :pitch (1~ v4-new))) (ps 'gm :sq (list (pitch-transpose 0 (ambitus 'violin in1)) (pitch-transpose 0 (ambitus 'violin in2)) (pitch-transpose 0 (ambitus 'viola in3)) (pitch-transpose 0 (ambitus 'cello in4)) ) :key-signature 'atonal :time-signature '(4 4) ;:tempo 90 :flexible-clef nil :title "Quartet RE-PITCH - JULIO HERRLEIN" :display :window) )  
    All the best !!
    Julio
  12. Like
    opmo got a reaction from JulioHerrlein in Replace Stream - Amazing Tool !!!!   
    Nothing to do with calculation or lengths or any of that sort.  🙂
    Doing any other way the harmonic work is lost.
     
    The voices delta time is of essence.
     
    The vertical distribution is very useful in "class composition" (number of scores base on structural template) where your harmonic stream is set and you test it with many possibile scores. Everything in the scores stays as it is: velocity, articulation and duration and only the pitch stream (one by one) will be distributed to all voices.
     
    The simplest way to understand the function is to think of music analysis.
     
  13. Thanks
    opmo got a reaction from Stephane Boussuge in Counterpoint Question - use of variable for harmony keyword   
    I will add a new dictum element :tonality.
    And you will be able to use variables in the :methods, :harmony and :tonality dictum.
     
    This will work:
    (setf harmony2 '((a3b3e4gs4) (b3e4gs4a3) (e4gs4a3b3)(gs4a3b3e4))) ... ((1 2 3 4) :harmony harmony2 :tempo 72) ...  
  14. Like
    opmo got a reaction from JulioHerrlein in Replace Stream - Amazing Tool !!!!   
    Harmonic voice distribution is vertical (stream).
    If you wish to apply a series of pitches to voices (instruments) just get count of the lengths form each of the voice and divide the pitch series accordingly - very simple.
  15. Thanks
    opmo reacted to JulioHerrlein in Replace Stream - Amazing Tool !!!!   
    Dear Friends,
     
    Please check this replace-stream function !!
    This is what I was searching for and trying to achieve for a long time !!
    It really worth to upgrade.
     
    I have some questions regarding this new tool:
    Here is the code, similar to the documentation.
    First, we have the Bach Chorale.
    Second, there are some original material that looks like this:
    V1 plays only E and F pitch classes
    V2 plays only C and D pitch classes
    VLA plays only Bb and G# pitch classes
    CELLO plays only Bb and Eb pitch classes
     
    For easy understanding of the point

    When I do the replace-stream, I.E., using the new pitch classes to the old Bach Chorale, I get this

    My new notes are traversing the instruments vertically and not horizontally (voice by voice)
    I´d like to keep the same pitch classes in each instrument, just with the new rhythms of the Bach Chorale, I.E., the VL1 plays only E and F, the VL2, only C and D, as I had in the original music.
     
    It´s just like an inverted axis... (or maybe the distribution is related with the length...)
     
    There is some solution ?
    I hope so, because this sounds AMAZING !
    It´s just what I need !
    I was trying to do this with the counterpoint function (in the previous post, with the :harmony keyword, but getting some noise in between, because of the nature of embedded harmonic path inside the Counterpoint function.
     
     
    Best !
    Julio
     
     
     
     
    ;;;FORUM QUESTION ;;--------------------------------------------------------- ;; Bach, BWV 0004 (progn (setf soprano '((-h. q b4) (q as4 e b4 cs5 q d5 e5) (q d5 cs5 b4 fermata b4) (q g4 a4 b4 e a4 g4) (e fs4 e4 q fs4 e4 fermata b4) (q as4 e b4 cs5 q d5 e5) (q d5 cs5 b4 fermata b4) (q g4 a4 b4 e a4 g4) (e fs4 e4 q fs4 e4 fermata -q) (e e4 fs4 q g4 a4 e e4 fs4) (q g4 a4 b4 fermata b4) (q e5 ds5 e5 e fs5 e5) (q d5 cs5 b4 fermata cs5) (q d5 e b4 cs5 q d5 a4) (q g4 fs4 h e4 fermata) (q b4 a4 h g4) (h fs4 e4 fermata)) alto '((-h. q g4) (q fs4 fs4 fs4 fs4) (q fs4 e fs4 e4 q ds4 fermata fs4) (q e4 d4 e d4 ds4 q e4 tie) (q e4 ds4 b3 fermata g4) (q fs4 fs4 fs4 fs4) (q fs4 e fs4 e4 q ds4 fermata fs4) (q e4 d4 e d4 ds4 q e4 tie) (q e4 ds4 b3 fermata -q) (q b3 e4 q. e4 e ds4) (q e4 d4 d4 fermata e g4 a4) (q b4 a4 b4 fs4) (q fs4 e fs4 e4 q d4 fermata e4) (q fs4 d4 g4 fs4) (e fs4 e4 e4 ds4 h e4 fermata) (e d4 e4 q. fs4 e ds4 q e4 tie) (q e4 ds4 h b3 fermata)) tenor '((-h. e e4 d4) (q cs4 e d4 as3 q b3 cs4) (q b3 as3 fs3 fermata b3) (e b3 c4 b3 a3 g3 a3 q b3) (q c4 e fs3 a3 q g3 fermata e e4 d4) (q cs4 e d4 as3 q b3 cs4) (q b3 as3 fs3 fermata b3) (e b3 c4 b3 a3 g3 a3 q b3) (q c4 e fs3 a3 q g3 fermata -q) (e g3 a3 q b3 e a3 b3 q c4) (q b3 a3 g3 fermata d4) (q g4 fs4 e e4 d4 q cs4) (q b3 as3 fs3 fermata g3) (q a3 g3 g3 e d4 c4) (q b3 a3 h g3 fermata) (q g3 e fs3 b3 q b3 c4 tie) (q c4 e b3 a3 h gs3 fermata)) bass '((-h. q e3) (e fs3 e3 d3 cs3 q b2 as2) (q b2 fs2 b2 fermata ds3) (q e3 fs3 e g3 fs3 q e3) (e a2 s b2 c3 q b2 e2 fermata e3) (e fs3 e3 d3 cs3 q b2 as2) (q b2 fs2 b2 fermata ds3) (q e3 fs3 e g3 fs3 q e3) (e a2 s b2 c3 q b2 e2 fermata -q) (q. e3 e d3 c3 b2 q a2) (q e3 fs3 g3 e g3 fermata fs3) (q e3 fs3 gs3 as3) (q b3 fs3 b2 fermata e3) (q d3 g3 e b2 c3 q d3) (q e3 b2 h c3 fermata) (q g3 ds3 e3 c3) (q a2 b2 h e2 fermata))) (def-score bach-bwv-0004 ( :title "Bach, BWV-0004" :composer "J.S. Bach" :key-signature '(e min) :time-signature '(4 4) :tempo 88 :layout (choir-satb-layout 'soprano 'alto 'tenor 'bass) ) (soprano :omn soprano :channel 1 :sound 'gm :program 0) (alto :omn alto :channel 2) (tenor :omn tenor :channel 3) (bass :omn bass :channel 4) ) ) ;;; ORIGINAL MATERIAL (4 voices) ;; EACH VOICE USES DIFFERENT PITCH CLASSES FOR DEBUG ;;; this voice uses only pcs E and F (setf v1mat-a '((e f5 stacc) (e e5 stacc h. f5 p<f long e e5 mf stacc f5 stacc h. e5 p<f long) (q f5 mf ord) (3q e5 ord f5 ord e5 ord e. f5 ord q e5 ord s f5 ord -q. e e5 stacc q f5 ord -e e5 stacc))) ;;; this voice uses only pcs C and D (setf v2mat-a '((-q -e c4 f stacc) (h d4 p<f long -q -e c4 f stacc h d4 p<f long) (-e c4 f stacc) (h. d4 p<f long -h -e c4 f stacc q d4 mf ord) (3q c4 ord) (3q d4 ord c4 ord e. d4 ord q c4 ord s d4 ord -e c4 f stacc h d4 p<f long -e c4 f stacc q d4 mf ord))) ;;; this voice uses only pcs Bb and G# (setf v3mat-a '((-q -e bb3 stacc) (h gs3 p<f long -q -e bb3 mf stacc h gs3 p<f long) (-e bb3 mf stacc) (h. gs3 p<f long -h -e bb3 mf stacc q gs3 ord) (3q bb3 ord))) ;;; this voice uses only pcs Bb and Eb (setf v4mat-a '((-q - -e bb2 stacc) (q eb2 ord - - -e bb2 stacc q eb2 ord) (e bb2 stacc) (h.. eb2 ord q bb2 ord 3q eb2 ord bb2 ord eb2 ord e. bb2 ord s eb2 ord e bb2 stacc eb2 stacc))) ;;; PREVIEW ORIGINAL MATERIAL (ps 'gm :sq (list (pitch-transpose 0 (ambitus 'violin v1mat-a )) (pitch-transpose 0 (ambitus 'violin v2mat-a)) (pitch-transpose 0 (ambitus 'viola v3mat-a)) (pitch-transpose 0 (ambitus 'cello v4mat-a)) ) :key-signature 'atonal :time-signature '(4 4) ;:tempo 90 :flexible-clef nil :title "replace stream" :display :window) (setf original-pitches (list v1mat-a v2mat-a v3mat-a v4mat-a)) (setf stream (collect-stream :pitch original-pitches)) (setf bach (collect-score-instruments 'bach-bwv-0004)) (replace-stream stream bach :index 'v :articulation nil :rest-articulation nil) (ps 'gm :sq (list v1 v2 v3 v4) :time-signature '(3 4) :tempo tempo )  

  16. Like
    opmo got a reaction from Stephane Boussuge in Gen-Choralis: How to bypass voice leading ?   
    Will have a look.
  17. Thanks
    opmo got a reaction from JulioHerrlein in Gen-Choralis: How to bypass voice leading ?   
    Will have a look.
  18. Like
    opmo got a reaction from JulioHerrlein in Counterpoint Question - use of variable for harmony keyword   
    :group velocity           dyn (:velocity (velocity-to-dynamic x))  
    Check the doc velocity-to-dynamic function.
    (velocity-to-dynamic '(p p mp mp f ff mp mp p f)) => (p< < mp< < f< ff> mp> > p< f) (velocity-to-dynamic '(p p mp mp f ff mp mp p f) :extend t) => (p< < < < < ff> > > p< f) (velocity-to-dynamic '(p p mp mp f ff mp mp p f) :end 'pp) => (p< < mp< < f< ff> mp> > p> pp) (velocity-to-dynamic '((pppp ppp ppp pp ppp p p mp mf mf) (f ff mf mp p ppp pppp))) => ((pppp< ppp< < pp> ppp< p< < mp< mf< <) (f< ff> mf> mp> p> ppp> pppp))  
  19. Thanks
    opmo reacted to Stephane Boussuge in Counterpoint Question - use of variable for harmony keyword   
    Try this :
     
    (progn ;; Global SEED (init-seed 15342) ;; Patterns (setf ;p1 '((-s c1 p g2 cs3) (3q fs3 - bb3) (-3q eb4 mf a4) (-s b4 d5 f5) ; (-5q gs5 e6 c1 mp g2) (-3q cs3 fs3 mf) (s bb3 - eb4 p a4) (s b4 mp d5 f5 -)) ;p2 '((5q bb2 mf g3 c4 e3 a3) (5q d4 mp fs4 gs4 b4 p cs5) (s f5 eb6 bb3 g3)) ;p3 '((5q fs4 p - bb3 f3 e4) (-3q g4 c5) (s eb5 a5 mf cs6 gs6) ; (5q gs6 pp cs6 mf a5 eb5 -) (-s c5 g4 e4)) ;p4 '((5q bb3 p a4 c6 cs6 cs6) (s g7 mp a6 c6 e5 - d4 cs4 g3 3h fs3 eb3 -) ; (-3q b6 pp a6 5q c6 - d5 bb4 b3 -s gs3 f1 eb3)) p5 '((5q c2 mf g2 e2 a2 b2) (5q fs5 p gs5 bb5 b5 cs5 mp) (s f5 eb6 c6 p g6)) p6 '(s a4 p e b5 s gs3 3h f3 3q e2 5h eb4 5q g5 fs2 f4) p7 '(5q cs5 mf d5 5h eb5 5q f5 fs5 gs5 5h a5 f 5q bb5 5h b5 5q cs6 5h) p8 '(t bb4 mp cs6 c5 b5 bb4 cs6 a3 gs2 3q a2 gs5 fs4) ) (setf p1 '(e d7 d7 d7 d7 d7 d7 d7 d7 s d6 d6 d6 d6 d6 d6 d6 d6 h)) (setf p2 '(e d5 d5 d5 d5 d5 d5 d5 d5 s d4 d4 d4 d4 d4 d4 d4 d4 h)) (setf p3 '(e d4 d4 d4 d4 d4 d4 d4 d4 s s s s s s s s h d3)) (setf p4 '(e d2 d2 d2 d2 d2 d2 d2 d2 s s s s s s s s h d1)) ;(pitch-transpose 2 p4) (setf patterns (list p1 p2 p3 p4 p5 p6 p7 p8)) (setf harmony2 '((a3b3e4gs4) (b3e4gs4a3) (e4gs4a3b3)(gs4a3b3e4))) (setf dictum-a `(((1 2 3 4) :harmony ,harmony2 :tempo 72) ((1 2 3 4) :harmony ((a3b3e4gs4) (b3e4gs4a3) (e4gs4a3b3)(gs4a3b3e4)) :tempo 72) ((2 1 3 4) :harmony ((a3b3e4gs4) (b3e4gs4a3) (e4gs4a3b3)(gs4a3b3e4)):methods (- ri - -) :tempo 72) ((3 2 1 4) :harmony ((a3b3e4gs4) (b3e4gs4a3) (e4gs4a3b3)(gs4a3b3e4)):methods (a d2 r -) :tempo 72) ((4 3 2 1) :harmony ((a3b3e4gs4) (b3e4gs4a3) (e4gs4a3b3)(gs4a3b3e4)) :tempo 72) ((4 2 1 4):harmony a3b3e4gs4) ((2 3 1 4):harmony a3b3e4gs4) ((3 2 1 4):harmony a3b3e4gs4) ((- - - -) :span 1/4 :harmony a3b3e4gs4)) dictum-b '(((- 5 2 -) :span 3/4 :methods (- ri - -) :tempo 64) ((- 2 2 6) :span 3/4 :methods (- d d3 -) :tempo (:rit 80 56 1/64)) ((4 6 6 8) :span 2/4 :methods (a d2 r -) :tempo 88) ((- - - -) :span 1/4)) dictum-c '(((7 4 - 5) :methods (a d i ?) :extend (s - s -) :tempo 64) ((1 2 2 3) :methods (a d i -) :extend (s - s -))) dictum-d '(((- 3 - -) :methods (- - - -) :tempo 80) ((- 2 - -) :methods (- - - -)) ((- 4 - -) :methods (< - - -)) ;((1 1 1 1) :methods (da ad (r d5) (i d2)) :polyphony (7 o) :tempo 72) ) ) ;; Sections (setf sec-a (counterpoint patterns dictum-a :global-methods '((dyn fl) - - -))) (setf sec-b (counterpoint patterns dictum-b :global-methods '((dyn fl) (dyn cl) (t-12 dyn hn) (t-12 dyn vc)) :global-polyphony '((10 p) (1 13)) :iterate t)) (setf sec-c (counterpoint patterns dictum-c :global-methods '((dyn fl) (dyn cl) (t-12 dyn hn) (t-12 dyn vc)) :global-polyphony '((7 p) (1 13)) :iterate t)) (setf sec-d (counterpoint patterns dictum-d :global-methods '((dyn fl) (dyn cl) (dyn hn) (dyn vc)))) ;; Assemble Voices (assemble-voices 'voice sec-a sec-b sec-c sec-d) (ps 'gm :sq ;(list (pitch-transpose 12 vh1-2) vh2-2 vh3-2 vh4-2) (list (pitch-transpose 0 voice1) (pitch-transpose 0 voice2) (pitch-transpose 0 voice3) (pitch-transpose 0 voice4) #| (pitch-transpose 0 (ambitus 'violin voice1)) (pitch-transpose 0 (ambitus 'violin voice2)) (pitch-transpose 0 (ambitus 'viola voice3)) (pitch-transpose -12 (ambitus 'cello voice4)) |# ) :key-signature 'atonal ;;;obs:it´s possible to bypass the time signature we did before opening the time signature here ;;time-signature timesig-proc are processed lists of time-signatures ;:time-signature timesig ;:tempo 90 :flexible-clef nil :title ;:flexible-clef nil "Quartet Harmony Control - JULIO HERRLEIN" :display :window) ;; Global SEED back to NIL (init-seed nil) ) SB
    The trick is here with backquote:
     
    `(((1 2 3 4) :harmony ,harmony2 :tempo 72)
  20. Like
    opmo got a reaction from Deb76 in Opusmodus 2.2.26529   
    New Function:
     
    search-for-pattern
     
    This function searches for a recurring pattern in a sequence.
    The result is a bar number in which the pattern has been found and a count number of the recurrence in the bar.
    The pitch and interval element returns a variant recurrence if found.
     
    (setf rh '((-s) (e f4e5 pp -s db5)            (-s) (-s eb4 pp c4d5 -)            (-s) (-s c4d5 pp eb4 -)            (-s) (e db5 pp -s f4e5)            (-s) (s gb4f5 p a5 -)            (s d4ab4db5 p bb4 -) (-s a5 p gb4f5)            (-s) (s b5 f gb4g5 -)            (s a3bb4 f ab4 -) (s c4d5 f> eb4 -)            (s db5 f> f4e5 -) (-s)            (s gb4f5 p a5 d4ab4db5 bb4 -) (-s)            (-s a5 pp gb4f5) (-s)            (-t b2 f e3 bb3 - d5 c4eb4) (-s)            (s db3 f - s. g5 -t) (s gb4f5 p)            (-t a3 mp ab3 mf -s. t db5f5 f c4 -) (s e3e4 p)            (-t s. d2 f -s ab5 mf) (-s)            (t gb4a4 p g3 mp - b2 f e3 bb3 e3 a3 eb4 - g5 mf f4ab4 mp) (-s)            (s f2 f - s. c6 -t) (s b2bb3 p)            (-s t db5 mp -s. t gb5bb5 f4 f -) (t a3 f ab2 - ab2 a3)            (-t f4 f gb5bb5 mf) (-t a3 mp d4ab4 c4 p bb5db6 mf)            (-t b2 f3 b2 -) (t bb5db6 c5 f d4ab4 a3 p)            (-s) (t b4eb5 p bb3 -)            (t d4 p db3 - db3 d4) (-t bb3 p b4eb5)            (-s) (-s eb5 p bb3b4 -) (-s)            (e d4db5 p -s c5) (-s)            (e c5 p -s d4db5) (-s)            (-s bb3b4 p eb5 -) (-s)            (-s ab3g4 p e4 mf) (-s c4gb4b4 f5)            (-s db5 mp bb3a4) (-s)            (-s eb4d5 p gb4) (-s e4 p f3g4)            (-s b3 p a2bb3) (-s c5db6 pp ab5)            (-s) (-s e5eb6 p g5 c4f4b4 p> gb4)            (-s) (-e) (e d5ab5db6 pp)))  
     
    (search-for-pattern '(eb4 c4d5) rh                     :element :pitch                     :name "Webern, Variationen für Klavier Op.27, I, rh") ..................................................... Score: Webern, Variationen für Klavier Op.27, I, rh Pitches: (eb4 c4d5) Prime:   bar: 4  count: 1 Retrograde:   bar: 6   count: 1   bar: 16  count: 1 Inversion: none Retrograde-inversion: none .....................................................  
     
    (search-for-pattern '(eb4 c4 d5) rh                     :melodize t                     :element :pitch                     :name "Webern, Variationen für Klavier Op.27, I, rh") ..................................................... Score: Webern, Variationen für Klavier Op.27, I, rh Pitches: (eb4 c4 d5) Prime:   bar: 4  count: 1 Retrograde:   bar: 23  count: 1 Inversion: none Retrograde-inversion: none .....................................................  
     
    (search-for-pattern '(-8 11) rh                     :element :interval                     :melodize t                     :name "Webern, Variationen für Klavier Op.27, I, rh") ..................................................... Score: Webern, Variationen für Klavier Op.27, I, rh Intervals: (-8 11) Prime:   bar: 8   count: 1   bar: 17  count: 1 Retrograde:   bar: 58  count: 1   bar: 63  count: 1 Inversion: none Retrograde-inversion: none .....................................................  
     
    (search-for-pattern '(t t t t) rh                     :element :length                     :name "Webern, Variationen für Klavier Op.27, I, rh") ..................................................... Score: Webern, Variationen für Klavier Op.27, I, rh Lengths: (1/32 1/32 1/32 1/32) Found:   bar: 31  count: 1   bar: 38  count: 1   bar: 40  count: 1 .....................................................  
     
    (search-for-pattern '(mp p mf) rh                     :element :velocity                     :name "Webern, Variationen für Klavier Op.27, I, rh") ..................................................... Score: Webern, Variationen für Klavier Op.27, I, rh Velocities: (mp p mf) Found:   bar: 38  count: 1 .....................................................  
     
    (search-for-pattern '(stacc) rh                     :element :attribute                     :name "Webern, Variationen für Klavier Op.27, I, rh") ..................................................... Score: Webern, Variationen für Klavier Op.27, I, rh Attributes: (stacc) Found: none .....................................................  
    Search for pattern in none omn-form sequence:
     
    (search-for-pattern '(1 2 3) '((1 2 3 1 2 3) (4 1 2 3 4 5 6))) ..................................................... Score: nil Values: (1 2 3) Found:   list: 1  count: 2   list: 2  count: 1 .....................................................  
     
    series-analysis
     
    This function searches for recurring series in a sequence.
    The result is a size and count number of high recurring series and longest recurring series found in a sequence.
     
    Searching for pitches:
     
    (series-analysis rh                  :element :pitch                  :name "Webern, Variationen für Klavier Op.27, I, rh") ..................................................... Score: Webern, Variationen für Klavier Op.27, I, rh High recurrence series:   found: (gb4 f5) size: 2 count: 5 Longest recurrence series:   found: (c4 d5 eb4 db5 f4 e5 gb4 f5 a5 d4 ab4 db5 bb4 a5 gb4 f5) size: 16 count: 2 .....................................................  
    Searching for intervals:
     
    (series-analysis rh                  :element :interval                  :name "Webern, Variationen für Klavier Op.27, I, rh") ..................................................... Score: Webern, Variationen für Klavier Op.27, I, rh High recurrence series:   found: (5 6) size: 2 count: 6 Longest recurrence series:   found: (14 -11 10 -8 11 -10 11 4 -19 6 5 -3 11 -15 11) size: 15 count: 2 .....................................................  
    Searching for lengths:
     
    (series-analysis rh                  :element :length                  :name "Webern, Variationen für Klavier Op.27, I, rh") ..................................................... Score: Webern, Variationen für Klavier Op.27, I, rh High recurrence series:   found: (1/16 -1/16) size: 2 count: 29 Longest recurrence series:   found: (1/16 -1/16 1/16 1/16 -1/16 1/16 1/16 -1/16 -1/16           1/16 1/16 -1/16 1/16 1/16 -1/16 1/16 1/16 -1/16           1/16 1/16 -1/16) size: 21 count: 2 .....................................................  
    Searching for velocities:
     
    (series-analysis rh                  :element :velocity                  :name "Webern, Variationen für Klavier Op.27, I, rh") ..................................................... Score: Webern, Variationen für Klavier Op.27, I, rh High recurrence series:   series: (p p) size: 2 count: 18 Longest recurrence series:   found: (mp f f f f f f mf mp) size: 9 count: 2   found: (p p p p p p p p p) size: 9 count: 2 .....................................................  
    Searching for values:
     
    (setf population (gen-population 16 3 7)) (setf pitches (vector-to-pitch 'piano population)) (series-analysis pitches) ..................................................... Score: nil High recurrence series:   found: (a0 c8) size: 2 count: 6 Longest recurrence series:   found: (a0 c8 a0) size: 3 count: 2   found: (a0 c8 b7) size: 3 count: 2 .....................................................  
     
    (series-analysis (modus pitches)) ..................................................... Score: nil High recurrence series:   found: (9 0) size: 2 count: 7 Longest recurrence series:   found: (0 7 9 5 0) size: 5 count: 2 .....................................................  
     
    remove-series
     
    The function REMOVE-SERIES removes a number of successive items from a list.
     
    (remove-series 3 '(c4 cs4 fs4 f4 b4 c4)) => (f4 b4 c4) (remove-series 3 '(c4 cs4 fs4 f4 b4 c4) :from-end t) => (c4 cs4 fs4)  
    Best wishes, stay safe,
    Janusz
  21. Like
    opmo got a reaction from JulioHerrlein in PS stave display and play   
    You can display one instrument as a snippet (notation only) and them play all instrument with audition only.
  22. Thanks
    opmo got a reaction from JulioHerrlein in How to Evaluate a separate file from inside an opmo document ?   
    Load:
     
    (load "directory/file-name")  
  23. Like
    opmo got a reaction from AM in 'Announcements' Forum & Reply   
    The 'Announcements' forum is a one-way communication about updates, upgrades and new features in our software. Participants cannot leave replies to posts. If you do wish to reply to any of the news here, you need to create a new post (topic) in one of the Support Forum sections.
     
  24. Thanks
    opmo got a reaction from JulioHerrlein in Recursive Function for finding complementary set of notes in Chord/Scale relationship   
    Loop in the loop:
     
    (let ((rem (ambitus '(c5 b5) (expand-tonality '((c5 major) (db5 major) (gb5 major)))))       (super (ambitus '(c5 b5) '((d5 f5 a5 c6) (eb4 gb4 bb4 db4) (fs4 as4 cs4)))))   (loop for s in super     for r in rem     collect (loop for i in s               do (setf r (remove i r))               finally (return r))))
  25. Like
    opmo got a reaction from lviklund in Opusmodus 2.2.26529   
    New Function:
     
    search-for-pattern
     
    This function searches for a recurring pattern in a sequence.
    The result is a bar number in which the pattern has been found and a count number of the recurrence in the bar.
    The pitch and interval element returns a variant recurrence if found.
     
    (setf rh '((-s) (e f4e5 pp -s db5)            (-s) (-s eb4 pp c4d5 -)            (-s) (-s c4d5 pp eb4 -)            (-s) (e db5 pp -s f4e5)            (-s) (s gb4f5 p a5 -)            (s d4ab4db5 p bb4 -) (-s a5 p gb4f5)            (-s) (s b5 f gb4g5 -)            (s a3bb4 f ab4 -) (s c4d5 f> eb4 -)            (s db5 f> f4e5 -) (-s)            (s gb4f5 p a5 d4ab4db5 bb4 -) (-s)            (-s a5 pp gb4f5) (-s)            (-t b2 f e3 bb3 - d5 c4eb4) (-s)            (s db3 f - s. g5 -t) (s gb4f5 p)            (-t a3 mp ab3 mf -s. t db5f5 f c4 -) (s e3e4 p)            (-t s. d2 f -s ab5 mf) (-s)            (t gb4a4 p g3 mp - b2 f e3 bb3 e3 a3 eb4 - g5 mf f4ab4 mp) (-s)            (s f2 f - s. c6 -t) (s b2bb3 p)            (-s t db5 mp -s. t gb5bb5 f4 f -) (t a3 f ab2 - ab2 a3)            (-t f4 f gb5bb5 mf) (-t a3 mp d4ab4 c4 p bb5db6 mf)            (-t b2 f3 b2 -) (t bb5db6 c5 f d4ab4 a3 p)            (-s) (t b4eb5 p bb3 -)            (t d4 p db3 - db3 d4) (-t bb3 p b4eb5)            (-s) (-s eb5 p bb3b4 -) (-s)            (e d4db5 p -s c5) (-s)            (e c5 p -s d4db5) (-s)            (-s bb3b4 p eb5 -) (-s)            (-s ab3g4 p e4 mf) (-s c4gb4b4 f5)            (-s db5 mp bb3a4) (-s)            (-s eb4d5 p gb4) (-s e4 p f3g4)            (-s b3 p a2bb3) (-s c5db6 pp ab5)            (-s) (-s e5eb6 p g5 c4f4b4 p> gb4)            (-s) (-e) (e d5ab5db6 pp)))  
     
    (search-for-pattern '(eb4 c4d5) rh                     :element :pitch                     :name "Webern, Variationen für Klavier Op.27, I, rh") ..................................................... Score: Webern, Variationen für Klavier Op.27, I, rh Pitches: (eb4 c4d5) Prime:   bar: 4  count: 1 Retrograde:   bar: 6   count: 1   bar: 16  count: 1 Inversion: none Retrograde-inversion: none .....................................................  
     
    (search-for-pattern '(eb4 c4 d5) rh                     :melodize t                     :element :pitch                     :name "Webern, Variationen für Klavier Op.27, I, rh") ..................................................... Score: Webern, Variationen für Klavier Op.27, I, rh Pitches: (eb4 c4 d5) Prime:   bar: 4  count: 1 Retrograde:   bar: 23  count: 1 Inversion: none Retrograde-inversion: none .....................................................  
     
    (search-for-pattern '(-8 11) rh                     :element :interval                     :melodize t                     :name "Webern, Variationen für Klavier Op.27, I, rh") ..................................................... Score: Webern, Variationen für Klavier Op.27, I, rh Intervals: (-8 11) Prime:   bar: 8   count: 1   bar: 17  count: 1 Retrograde:   bar: 58  count: 1   bar: 63  count: 1 Inversion: none Retrograde-inversion: none .....................................................  
     
    (search-for-pattern '(t t t t) rh                     :element :length                     :name "Webern, Variationen für Klavier Op.27, I, rh") ..................................................... Score: Webern, Variationen für Klavier Op.27, I, rh Lengths: (1/32 1/32 1/32 1/32) Found:   bar: 31  count: 1   bar: 38  count: 1   bar: 40  count: 1 .....................................................  
     
    (search-for-pattern '(mp p mf) rh                     :element :velocity                     :name "Webern, Variationen für Klavier Op.27, I, rh") ..................................................... Score: Webern, Variationen für Klavier Op.27, I, rh Velocities: (mp p mf) Found:   bar: 38  count: 1 .....................................................  
     
    (search-for-pattern '(stacc) rh                     :element :attribute                     :name "Webern, Variationen für Klavier Op.27, I, rh") ..................................................... Score: Webern, Variationen für Klavier Op.27, I, rh Attributes: (stacc) Found: none .....................................................  
    Search for pattern in none omn-form sequence:
     
    (search-for-pattern '(1 2 3) '((1 2 3 1 2 3) (4 1 2 3 4 5 6))) ..................................................... Score: nil Values: (1 2 3) Found:   list: 1  count: 2   list: 2  count: 1 .....................................................  
     
    series-analysis
     
    This function searches for recurring series in a sequence.
    The result is a size and count number of high recurring series and longest recurring series found in a sequence.
     
    Searching for pitches:
     
    (series-analysis rh                  :element :pitch                  :name "Webern, Variationen für Klavier Op.27, I, rh") ..................................................... Score: Webern, Variationen für Klavier Op.27, I, rh High recurrence series:   found: (gb4 f5) size: 2 count: 5 Longest recurrence series:   found: (c4 d5 eb4 db5 f4 e5 gb4 f5 a5 d4 ab4 db5 bb4 a5 gb4 f5) size: 16 count: 2 .....................................................  
    Searching for intervals:
     
    (series-analysis rh                  :element :interval                  :name "Webern, Variationen für Klavier Op.27, I, rh") ..................................................... Score: Webern, Variationen für Klavier Op.27, I, rh High recurrence series:   found: (5 6) size: 2 count: 6 Longest recurrence series:   found: (14 -11 10 -8 11 -10 11 4 -19 6 5 -3 11 -15 11) size: 15 count: 2 .....................................................  
    Searching for lengths:
     
    (series-analysis rh                  :element :length                  :name "Webern, Variationen für Klavier Op.27, I, rh") ..................................................... Score: Webern, Variationen für Klavier Op.27, I, rh High recurrence series:   found: (1/16 -1/16) size: 2 count: 29 Longest recurrence series:   found: (1/16 -1/16 1/16 1/16 -1/16 1/16 1/16 -1/16 -1/16           1/16 1/16 -1/16 1/16 1/16 -1/16 1/16 1/16 -1/16           1/16 1/16 -1/16) size: 21 count: 2 .....................................................  
    Searching for velocities:
     
    (series-analysis rh                  :element :velocity                  :name "Webern, Variationen für Klavier Op.27, I, rh") ..................................................... Score: Webern, Variationen für Klavier Op.27, I, rh High recurrence series:   series: (p p) size: 2 count: 18 Longest recurrence series:   found: (mp f f f f f f mf mp) size: 9 count: 2   found: (p p p p p p p p p) size: 9 count: 2 .....................................................  
    Searching for values:
     
    (setf population (gen-population 16 3 7)) (setf pitches (vector-to-pitch 'piano population)) (series-analysis pitches) ..................................................... Score: nil High recurrence series:   found: (a0 c8) size: 2 count: 6 Longest recurrence series:   found: (a0 c8 a0) size: 3 count: 2   found: (a0 c8 b7) size: 3 count: 2 .....................................................  
     
    (series-analysis (modus pitches)) ..................................................... Score: nil High recurrence series:   found: (9 0) size: 2 count: 7 Longest recurrence series:   found: (0 7 9 5 0) size: 5 count: 2 .....................................................  
     
    remove-series
     
    The function REMOVE-SERIES removes a number of successive items from a list.
     
    (remove-series 3 '(c4 cs4 fs4 f4 b4 c4)) => (f4 b4 c4) (remove-series 3 '(c4 cs4 fs4 f4 b4 c4) :from-end t) => (c4 cs4 fs4)  
    Best wishes, stay safe,
    Janusz
×
×
  • Create New...

Important Information

Terms of Use Privacy Policy