Jump to content

opmo

Administrators
  • Posts

    2,901
  • Joined

  • Last visited

Reputation Activity

  1. Thanks
    opmo got a reaction from hujairi in Opusmodus 1.3 release   
    Whats new in version 1.3
     
    Compatibility with macOS Mojave
    
macOS 10.14 Dark Mode
    
CLM added

    OSC added
    
MIDI player improvements
     
    New functions:
    binary-to-attribute
    merge-attributes
    circle-pitch-plot

    circle-rhythm-plot
    xy-plot
    pcs-rhythm

    edit-events
    find-max-span
    fit-to-span

    gen-osc-data

    osc-thread
    
stop-osc-threads
     
    Enhancements and fixes:
    quantizer returns now the count of given length-notes
    single-events returns given type
    don't join dissimilar rests
    fixed rest grouping
    fixed tied 8va or 8vb tuplets
      Installation:
    There are some changes to the Opusmodus user system folder.
    Before opening the new application you need to delete the old Opusmodus folder.
    Make sure you save your personal files (scores, docs etc...) before. A good solution is to rename the Opusmodus folder first and then compress it.
    After you have deleted the Opusmodus user folder you can start the new application.
    At the start Opusmodus will ask you for permission to create a new user folder in your home directory, if you don’t see a window for it, it means the old folder is still on your computer. Make sure the new Opusmodus folder is installed in your home directory.
     
    New Opusmodus folder:
     


    Upgrade:
    Opusmodus 1.3 requires a new serial number to run.
    When purchasing upgrade 1.3 the current user will need to provide an Opusmodus 1.2 serial number.
    After the confirmation which takes a few seconds only, you will be redirected to the purchase page.
    Following the purchase a new serial number will be sent to you by email.
     
    Happy New Year 2019
     
    Yours,
    Janusz Podrazik
  2. Like
    opmo got a reaction from hujairi in Using Nigel's Book   
    indeed, it is a great introduction to parametric composition. Nigel started working on this book at the time we were working on Opusmodus documentation. It makes me very happy to hear his work is appreciated by so many, He was a great supporter and teacher of algorithmic composition which has spread over many decades. We all miss him dearly.

    Note:
    There are a few changes to some of the Opusmodus function names since the release of Nigel's book. Some of the examples might end in error.
  3. Like
    opmo reacted to Andy in The learning curve..thoughts   
    It's quite a feeling this Opusmodus thing.
     
    Stephen I have a website so maybe I'll do a 'post' there.
  4. Like
    opmo got a reaction from ydepps in Using Nigel's Book   
    indeed, it is a great introduction to parametric composition. Nigel started working on this book at the time we were working on Opusmodus documentation. It makes me very happy to hear his work is appreciated by so many, He was a great supporter and teacher of algorithmic composition which has spread over many decades. We all miss him dearly.

    Note:
    There are a few changes to some of the Opusmodus function names since the release of Nigel's book. Some of the examples might end in error.
  5. Thanks
    opmo reacted to Andy in The learning curve..thoughts   
    For me, this is a much easier journey than Max/MSP or ACToolbox or Kyma or PWGL or ...in fact any program for composition where there is a bunch of boxes, wires and annoying graphics! The idea of boxes and graphics..the visual paradigm, is it is meant to make it easier somehow.. but I now realise the reverse is true.
    If you are just dealing with text and traditional music notation as in OM,  it's really very straight forward. There is a learning 'bump' initially but then it really starts to make sense.
    I got so annoyed at Max going from 4 to 5 to 6 to 7 and the ridiculous changes in the GUI that meant I had to relearn the program every time. It was all about them. I feel Opusmodus is all about me. And that's quite a unique experience. And actually the real effort visually in Opusmodus has been put in to functionality, the IDE, which to be honest is totally unique. Thanks.
    Onward and upward. (with a few backwards I'm sure)
     
     
  6. Like
    opmo got a reaction from Stephane Boussuge in Using Nigel's Book   
    indeed, it is a great introduction to parametric composition. Nigel started working on this book at the time we were working on Opusmodus documentation. It makes me very happy to hear his work is appreciated by so many, He was a great supporter and teacher of algorithmic composition which has spread over many decades. We all miss him dearly.

    Note:
    There are a few changes to some of the Opusmodus function names since the release of Nigel's book. Some of the examples might end in error.
  7. Like
    opmo got a reaction from Andy in Using Nigel's Book   
    indeed, it is a great introduction to parametric composition. Nigel started working on this book at the time we were working on Opusmodus documentation. It makes me very happy to hear his work is appreciated by so many, He was a great supporter and teacher of algorithmic composition which has spread over many decades. We all miss him dearly.

    Note:
    There are a few changes to some of the Opusmodus function names since the release of Nigel's book. Some of the examples might end in error.
  8. Like
    opmo reacted to Andy in Using Nigel's Book   
    I just wanted to say that as a newcomer to parametric composition and Opusmodus, Nigel's book has been so helpful. I have it as a pdf in the Utilities section of Opusmodus and work through a chapter a day and copy and paste his code directly into the Composer. 
    I know Nigel wrote the tutorials, but his book sets a wider context which I have found very helpful in this beginning stage.
    Recommended!
  9. Like
    opmo got a reaction from loopyc in Quantization   
    Thank you Yuichi for sharing, great piece, I am very happy to see Opusmodus is able to help you realise your ideas.
  10. Like
    opmo got a reaction from Stephane Boussuge in Opusmodus 1.3.24409   
    Whats new:
    —'Check for Updates...' menu in Opusmodus app menu (no more manual downloads). 🙂
    —New CLM instruments with omn-form plist input and documentation.
     
      badd-synth   bandedwg-synth   circular-scanned-synth   fm-bell-synth   fm-insect-synth   fm-violin-synth   grani-synth   piano-synth   pvoc-synth   scanner-synth   singbowl-synth
    —Additional _About documents for various function groups (Wikipedia).
     —CLM bug fixes.
     
    Installation:
    There are some changes to the Opusmodus user system folder and CLM implementation.
    Before opening the new application you need to delete the old Opusmodus folder.
    Make sure you save your personal files (scores, docs etc...) before. A good solution is to rename the Opusmodus folder first and then compress it.
    After you have deleted the Opusmodus user folder you can start the new application.
    At the start Opusmodus will ask you for permission to create a new user folder in your home directory, if you don’t see a window for it, it means the old folder is still on your computer. Make sure the new Opusmodus folder is installed in your home directory.
     
    Hopefully this is the last time we need to delete the previous Opusmodus user folder from the home directory.
     
    Best wishes,
    Janusz

    P.S. Few CLM examples from the "3.Howto Score/CLM/Sound Synthesis.opmo" file:

    fm-bell-synth
    (progn   (defparameter count 50)   (setf partials (library 'marangona-partials 'partials nil :random 20))   (setf par (rnd-sample count (partial :freq (flatten partials))))   (defparameter freq (gen-divide (rnd-sample count '(1 2 3 4 5)) par))   (defparameter dur (list (length-span 42 (rnd-sample count '(w h q w)))))      (do-timeline    '(dur (---xx--xx- ---xx---x- --x--xx--- ---x------ x----x---))    '(gen-pause x) :time '(w))      (defparameter vel (rnd-number count 0.05 0.43))   (defparameter dist (rnd-number count 0.5 1.0))   (defparameter env     '((0 0 40 .1000 60 .2000 75 .4000 82 1 90 1 100 0)       (0 0 60 .1000 80 .2000 90 .4000 95 1 100 0)       (0 0 10 1 16 0 32 .1000 50 1 56 0 60 0 90 .3000 100 0)       (0 0 30 1 56 0 60 0 90 .3000 100 0)       (0 0 50 1 80 .3000 100 0)       (0 0 40 .1000 60 .2000 75 .4000 82 1 90 1 100 0)       (0 0 10 1 32 .1000 50 1 90 .3000 100 0)       (0 0 60 .1000 80 .3000 95 1 100 0)       (0 0 80 .1000 90 1 100 0)))      (with-sound (:reverb jc-reverb :scaled-to .7)     (fm-bell-synth dur freq vel                    :amp-env (rnd-sample count env)                    :index-env (rnd-sample count env)                    :index (rnd-number count 0.3 0.9)                    :reverb-amount 0.30                    :distance dist))   )
    fm-insect-synth
    (progn   (defparameter par (library 'tbn-cs3-partials 'partials nil :random 12))   (defparameter dur '(rnd-sample 12 '(-q q. h -h. -w w. d -d.)))   (defparameter freq '(rnd-sample 12 (flatten (partial :freq par))))   (defparameter amp '(rnd-sample 12 '(pppp ppp p mp)))   (defparameter mod-freq-env '(0 0 40 1 95 1 100 .5))   (defparameter mod-index-env '(0 1 25 .7 75 .78 100 1))   (defparameter amp-env '(0 0 25 1 75 .7 100 0))   (defparameter fm-index '(rnd-number 12 .01 .6))   (defparameter mod-skew '(rnd-number 12 -20.0 -1.0))   (defparameter mod-freq '(rnd-number 12 20 60))      (with-sound '()     (fm-insect-synth (eval dur) (eval freq) (eval amp) amp-env                      (eval mod-freq) (eval mod-skew) mod-freq-env                      500.866 mod-index-env (eval fm-index) .500)          (fm-insect-synth (eval dur) (eval freq) (eval amp) amp-env                      (eval mod-freq) (eval mod-skew) mod-freq-env                      649.490 mod-index-env (eval fm-index) .500)          (fm-insect-synth (eval dur) (eval freq) (eval amp) amp-env                      (eval mod-freq) (eval mod-skew) mod-freq-env                      562.087 mod-index-env (eval fm-index) .500)          (fm-insect-synth (eval dur) (eval freq) (eval amp) amp-env                      (eval mod-freq) (eval mod-skew) mod-freq-env                      300.866 mod-index-env (eval fm-index) .500)     )   )
    grani-synth
    (progn   (defparameter dur '(q h w d -q -h))   (defparameter amp '(pppp p pp f mp))      (with-sound (:reverb jc-reverb :reverb-channels 2)     (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-envelope '(0 0 .2 .2 .5 1 .8 .2 1 0))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grains 10)          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-start '(0 .1 .3 .1 1 .6)                  :amp-envelope '(0 1 1 1)                  :grain-density 8                  :grain-envelope '(0 0 .2 .2 .5 1 .8 .2 1 0)                  :grain-envelope-end '(0 0 .01 1 .99 1 1 0)                  :grain-envelope-transition '(0 0 .4 1 .8 0 1 0))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                   :grain-start '(0 0 1 1)                  :amp-envelope '(0 1 1 1)                  :grain-density 20                  :grain-duration '(0 .003 .2 .01 1 .3))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-start '(0 0 1 1)                   :amp-envelope '(0 1 1 1)                  :grain-density 20                  :grain-duration '(0 .003 .2 .01 1 .3)                  :grain-duration-limit .02)          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :amp-envelope '(0 1 1 1)                  :grain-density 40                  :grain-start '(0 .1 .3 .1 1 .6))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :amp-envelope '(0 1 1 1)                  :grain-density 40                  :grain-start '(0 .1 .3 .1 1 .6)                  :grain-start-spread .01)          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-start '(0 0 1 1)                  :grain-start-spread 0.01                  :amp-envelope '(0 1 1 1)                  :grain-density 40                  :srate '(0 0 .2 0 .6 5 1 5))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-start '(0 0 1 1)                  :grain-start-spread .01                  :amp-envelope '(0 1 1 1)                  :grain-density (rnd-sample 12 '(40 30 20))                  :srate-base 2                  :srate '(0 0 .2 0 .6 -1 1 -1))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-start '(0 0 1 1)                  :grain-start-spread .01                  :amp-envelope '(0 1 1 1)                  :grain-density (rnd-sample 12 '(40 30 20))                  :srate-linear t                  :srate (list 0 1 .2 1 .6 (expt 2 5/12) 1 (expt 2 5/12)))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-start '(0 0 1 1)                  :grain-start-spread .01                  :amp-envelope '(0 1 1 1)                  :grain-envelope '(0 0 .2 .2 .5 1 .8 .2 1 0)                  :grain-density (rnd-sample 12 '(40 30 20))                  :grain-duration '(0 .02 1 0.1)                   :grain-duration-spread '(0 0 .5 .1 1 0))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-start '(0 0 1 1)                  :grain-start-spread 0.01                  :amp-envelope '(0 1 1 1)                  :grain-density (rnd-sample 12 '(40 30 20))                  :grain-degree '(0 0 1 90)                  :grain-degree-spread 10)          (grani-synth (rnd-sample 12 dur)                   (rnd-sample 12 amp) "oboe"                  :grain-duration .06                  :grain-density 20                  :grain-density-spread 2                  :srate 0)          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-duration .08                  :grain-density (rnd-sample 12 '(40 30 20))                  :grain-density-spread 2                  :srate 5                    :grain-degree 0                  :grain-envelope '(0 0 .2 .2 .5 1 .8 .2 1 0)                  :grain-envelope-end '(0 0 .01 1 .99 1 1 0))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-duration .05                  :grain-density 35                  :grain-density-spread 3                  :srate -5                  :grain-degree 90                  :srate (list 0 1 .3 1 .3 (expt 2 5/12) 1 (expt 2 5/12))))   )
    piano-synth
    (progn   (setf frames1 (library 'marangona-partials 'partials nil :random 48))   (setf frames2 (library 'marangona-frames 'partials nil :random 48))   (setf par1 (remove-partial frames1 :type :freq :min 27.5 :max 4186))   (setf par2 (remove-partial frames2 :type :freq :min 27.5 :max 4186))      (defparameter freq1     (rnd-order      (gen-collect       (rnd-sample 24 '(3 5 6 7 8)) (partial :freq par1))))      (defparameter freq2     (rnd-order      (gen-collect       (rnd-sample 38  '(2 3 4)) (partial :freq par2))))      (with-sound (:reverb jc-reverb)     (piano-synth '(3e) (flatten freq1) '(.2 .3 .4)                  :bpm 72                  :drypedalresonancefactor .25                  :singlestringdecayrate-table                  '(21 -5 24.000 -5.000 36.000 -5.4                    41.953 -5.867 48.173 -7.113 53.818 -8.016                    59.693 -8.875 66.605 -9.434 73.056 -10.035                    78.931 -10.293 84.000 -12.185)                  :singlestringpole-table                  '(21 .8 24 0.7 36.000 .6 48 .5                    60 .3 84 .1 96 .03 108 .03)                  :stiffnesscoefficient-table                  '(21.000 -0.920 24.000 -0.900 36.000 -0.700                    48.000 -0.250 60.000 -0.100 75.179 -0.040                    82.986 -0.040 92.240 .3 96.000 .5                    99.000 .7 108.000 .7))     (piano-synth '(e) freq2 '(0.1 0.2 0.3)                  :bpm 72                  :drypedalresonancefactor .55                  :detuningfactor-table                  '(24 5 36 7.0 48 7.5 60 12.0 72                    20 84 30 96 100 108 300)))   )
    pvoc-synth
    (with-sound (:scaled-to .99)    (pvoc-synth (rnd-sample 12 '(q h e s w d -q -h))               '(pppp pp ppp f) "marangona"               :input-start 0               :input-end 12               :pitch-scaler (rnd-sample 12 '(.5 .1 .05 .8 .3 .16))               :pitch-offset (rnd-sample 20 '(20 100 200 300 440 150 730))               :pitch-offset-env '(0 0 20 0 50 100 70 100 80 0 100 0)               :pitch-scaler-env '(0 1 50 2 100 1)               :amp-env '(0 1 40 0 50 1 60 0 100 1)               :gate 70)   )
    singbowl-synth
    (progn   (defparameter size 120)   (defparameter partials (library 'marangona-partials 'partials nil :random 50))   (defparameter par (rnd-sample size (partial :freq (flatten partials))))   (defparameter freq (gen-divide (rnd-sample size '(2 3 4 5)) par))   (defparameter length (rnd-sample size '(w h q e)))   (defparameter velocity (rnd-number size .05 .43))      (defparameter env     '((0 0 40 .1000 60 .2000 75 .4000 82 1 90 1 100 0)       (0 0 60 .1000 80 .2000 90 .4000 95 1 100 0)       (0 0 10 1 16 0 32 .1000 50 1 56 0 60 0 90 .3000 100 0)       (0 0 30 1 56 0 60 0 90 .3000 100 0)       (0 0 50 1 80 .3000 100 0)       (0 0 40 .1000 60 .2000 75 .4000 82 1 90 1 100 0)       (0 0 10 1 32 .1000 50 1 90 .3000 100 0)       (0 0 60 .1000 80 .3000 95 1 100 0)       (0 0 80 .1000 90 1 100 0)))      (with-sound (:reverb jc-reverb :scaled-to .7 :output "ma-partials")     (singbowl-synth length freq velocity                     :amp-env (rnd-sample size env)                     :reverb-amount 0.30))   )
    fm-violin-synth
    (progn   (defparameter size 10)   (defparameter count 50)   (setf glc-v1         (gen-length-cartesian          1 3 'd '? 'w 3 (rnd-sample size '(13 11 10 8))          '(1 2 3 4 5)))      (setf glc-v2         (gen-length-cartesian          1 3 'd '? 'w 3 (rnd-sample size '(13 11 10 8))          '(1 2 3 4 5)))      (setf glc-va         (gen-length-cartesian          1 3 'd '? 'w 3 (rnd-sample size '(13 11 10 8))          '(1 2 3 4 5)))      (setf glc-vc         (gen-length-cartesian          1 3 'd '? 'w 3 (rnd-sample size '(13 11 10 8))          '(1 2 3 4 5)))      (setf gu-sq         (gen-unison (list glc-v1 glc-v2 glc-va glc-vc)))      (setf l-v1 (1~ gu-sq))   (setf l-v2 (2~ gu-sq))   (setf l-va (3~ gu-sq))   (setf l-vc (4~ gu-sq))      (setf l-max         (first          (sort-desc           (list (get-count l-v1 :length :note :sum t)                 (get-count l-v2 :length :note :sum t)                 (get-count l-va :length :note :sum t)                 (get-count l-vc :length :note :sum t)))))      (setf    intervals    '((0 7) (0 0) (11 5) (-4 5) (-5 5) (0 13) (-5 18)      (-36 13) (-13 13) (8) (-18 7) (-1 17) (-17 17)      (-26 13) (-27 23) (-19 19) (-23 23) (18) (0) (7)      (-14) (13) (-23 5) (-23 2) (-2 2) (6 2) (6 5)      (19) (-10) (-17 11) (-11 11) (-11 5) (-24 13)      (1 14) (-14 14) (-29 1) (-1 1) (7 0) (12 6)      (-21 7) (-7 7) (-18 0) (1 13) (0 1) (-14 13)      (-10 5) (-14 8) (0 6) (6) (-20 6) (-5 1) (17) (1)      (-17 5) (-1 5) (-10 16) (-12 8) (0 8) (1 11)      (-24 4) (-18 16) (-17) (-6 6) (-18 18) (-15 3)      (-6 31) (-2 5) (-29 6) (-6 13) (-13 6) (7 13)))      (setf pcount (gen-repeat 2 (get-count l-v1 :length :note)))   (setf gr (gen-repeat (length pcount) (list intervals)))   (setf gm-v1 (gen-markov gr :size pcount))   (setf gm-v2 (gen-markov gr :size pcount))   (setf gm-va (gen-markov gr :size pcount))   (setf gm-vc (gen-markov gr :size pcount))   (setf im-v1 (interval-map nil (append-sublist gm-v1)))   (setf im-v2 (interval-map nil (append-sublist gm-v2)))   (setf im-va (interval-map nil (append-sublist gm-va)))   (setf im-vc (interval-map nil (append-sublist gm-vc)))   (setf s-v1 (span l-v1 im-v1))   (setf s-v2 (span l-v2 im-v2))   (setf s-va (span l-va im-va))   (setf s-vc (span l-vc im-vc))   (setf ra-v1 (rnd-octaves 'violin s-v1))   (setf ra-v2 (rnd-octaves 'violin s-v2))   (setf ra-va (rnd-octaves 'viola  s-va))   (setf ra-vc (rnd-octaves 'cello  s-vc))   (setf p-v1 (ambitus 'violin ra-v1 :type :invert))   (setf p-v2 (ambitus 'violin ra-v2 :type :invert))   (setf p-va (ambitus 'viola ra-va :type :invert))   (setf p-vc (ambitus '(a2 c5) ra-vc :type :invert))   (setf weight '(29 19 8 8 17))   (setf vel '(0.07 0.1 0.15 0.2 0.25 0.35))   (setf v-v1 (gen-weight l-max (mapcar 'list vel weight)))   (setf v-v2 (gen-weight l-max (mapcar 'list vel weight)))   (setf v-va (gen-weight l-max (mapcar 'list vel weight)))   (setf v-vc (gen-weight l-max (mapcar 'list vel weight)))      (setf vln1 (make-omn :length l-v1 :pitch p-v1 :velocity v-v1))   (setf vln2 (make-omn :length l-v2 :pitch p-v2 :velocity v-v2))   (setf vla (make-omn :length l-va :pitch p-va :velocity v-va))   (setf vlc (make-omn :length l-vc :pitch p-vc :velocity v-vc))      (do-timeline    '(       vln1 (---x---x-- ---x-x-x-- --x--xx--- ---x------ x-)      vln2 (---x---x-- ---x---x-- --x--xx--- ---x------ x-)      vla  (---x---x-- ---x---x-- --x--xx--- ---x------ --)      vlc  (---x---x-- ---x---xx- --x--xx--- ---x------ --)      )    '(gen-pause x) :time '(h h. w))      (defparameter v1 vln1)   (defparameter v2 vln2)   (defparameter v3 vla)   (defparameter v4 vlc)   (defparameter env     '((0 0 40 .1000 60 .2000 75 .4000 82 1 90 1 100 0)       (0 0 60 .1000 80 .2000 90 .4000 95 1 100 0)       (0 0 10 1 16 0 32 .1000 50 1 56 0 60 0 90 .3000 100 0)       (0 0 30 1 56 0 60 0 90 .3000 100 0)       (0 0 50 1 80 .3000 100 0)       (0 0 40 .1000 60 .2000 75 .4000 82 1 90 1 100 0)       (0 0 10 1 32 .1000 50 1 90 .3000 100 0)       (0 0 60 .1000 80 .3000 95 1 100 0)       (0 0 80 .1000 90 1 100 0)))      (with-sound (:reverb jc-reverb :scaled-to .7)     (fm-violin-synth v1 v1 v1                      :bpm 30                      :degree (rnd-number count 45 85)                      :fm-index (rnd-number count 0.10 1.0)                      :reverb-amount 0.30                      :noise-amount (rnd-number count 0.00 0.004)                      :amp-env (rnd-sample count env)                      :glissando-amount (rnd-number count 0.00 0.8))          (fm-violin-synth v2 v2 v2                      :bpm 30                      :degree (rnd-number count 45 85)                      :fm-index (rnd-number count 0.03 1.0)                      :reverb-amount 0.30                      :noise-amount (rnd-number count 0.00 0.004)                      :amp-env (rnd-sample count env)                      :glissando-amount (rnd-number count 0.00 0.8))          (fm-violin-synth v3 v3 v3                      :bpm 30                      :degree (rnd-number count 45 85)                      :fm-index (rnd-number count 0.10 1.0)                      :reverb-amount 0.30                      :noise-amount (rnd-number count 0.00 0.004)                      :amp-env (rnd-sample count env)                      :glissando-amount (rnd-number count 0.00 0.8))          (fm-violin-synth v4 v4 v4                      :bpm 30                      :degree (rnd-number count 45 85)                      :fm-index (rnd-number count 0.70 1.0)                      :reverb-amount 0.30                      :noise-amount (rnd-number count 0.00 0.004)                      :amp-env (rnd-sample count env)                      :glissando-amount (rnd-number count 0.00 0.8)))   )
    scanned-synth
    (progn   (defparameter size 120)   (setf partials1 (library 'tbn-cs3-partials 'partials nil :random 64))   (setf partials2 (library 'tbn-cs3-partials 'partials nil :random 64))   (setf freq1 (rnd-sample size (partial :freq (flatten partials1))))   (setf freq2 (rnd-sample size (partial :freq (flatten partials2))))   (defparameter dur1 (rnd-sample size '(s s s s)))   (defparameter dur2 (rnd-sample size '(q e s s s -s)))   (defparameter amp1 (rnd-number size .005 .13))   (defparameter amp2 (rnd-number size .005 .13))   (defparameter waves '(1 2 3 4 5 6 7 8 9 10 11 12 13))      (with-sound (:reverb jc-reverb)     (scanned-synth      dur1 freq1 amp1      :wave (rnd-sample size waves) :bpm 96      :pts (rnd-sample size '(192 256 512)))          (scanned-synth      dur2 freq2 amp2      :wave (rnd-sample size waves) :bpm 96      :pts (rnd-sample size '(192 256 512)))     )   )
    circular-scanned-synth
    (progn   (defparameter size 24)   (setf partials1 (library 'tbn-cs3-partials 'partials nil :random 50))   (setf partials2 (library 'tbn-cs3-partials 'partials nil :random 50))   (setf par1 (rnd-sample size (partial :freq (flatten partials1))))   (setf par2 (rnd-sample size (partial :freq (flatten partials2))))   (defparameter dur1 (rnd-sample size '(1 2 3 4 5)))   (defparameter dur2 (rnd-sample size '(1 2 3 4 5)))   (defparameter freq1 (gen-divide (rnd-sample size '(2 3 4 5)) par1))   (defparameter freq2 (gen-divide (rnd-sample size '(2 3 4 5)) par2))   (defparameter amp1 (rnd-number size .05 .43))   (defparameter amp2 (rnd-number size .05 .43))   (defparameter env     '((0 0 40 .1000 60 .2000 75 1 90 1 100 0)       (0 0 60 .1000 80 .2000 90 1 100 0)       (0 0 10 1 16 0 32 .1000 50 1 100 0)       (0 0 30 1 56 0 60 0 90 .3000 100 0)       (0 0 50 1 80 .3000 100 0)       (0 0 40 .1000 60 .2000 82 1 100 0)       (0 0 10 1 32 .1000 50 1 100 0)       (0 0 60 .1000 80 .3000 95 1 100 0)       (0 0 80 .1000 90 1 100 0)))      (with-sound (:reverb jc-reverb)     (circular-scanned-synth      dur1 freq1 amp1      :wave (rnd-sample size '(1 2 3 4))      :recompute-samps (rnd-sample size '(14 222 32 162 211 72))      :pts (rnd-sample size '(192 256 512))      :cycles (rnd-sample size '(1 2 3))      :amp-env (rnd-sample size env))          (circular-scanned-synth      dur2 freq2 amp2      :wave (rnd-sample size '(1 2 3 4))      :recompute-samps (rnd-sample size '(14 222 32 162 211 72))      :pts (rnd-sample size '(192 256 512))      :cycles (rnd-sample size '(1 2 3))      :amp-env (rnd-sample size env))     )   )
    badd-synth
    (progn   (defparameter size 12)   (setf partials (library 'marangona-partials 'partials nil :random 64))   (setf mpar (remove-partial partials :type :freq :max 1800.0))   (setf par (partial :freq mpar))   (setf freq '(rnd-sample size (flatten par)))   (defparameter dur '(rnd-sample size '(1 2 3 4 5)))   (defparameter amp '(rnd-number size .12 .33))      (with-sound (:reverb jc-reverb)     (badd-synth (eval dur) (eval freq) (eval amp))     (badd-synth (eval dur) (eval freq) (eval amp))     (badd-synth (eval dur) (eval freq) (eval amp))     (badd-synth (eval dur) (eval freq) (eval amp))     (badd-synth (eval dur) (eval freq) (eval amp))     (badd-synth (eval dur) (eval freq) (eval amp))     )   )
    bandedwg-synth
    (progn   (setf row (library 'vienna 'berg 'r11))   (setf degree '(0 3 4 0 -2 -3 -1 0 -2))   (setf mat         (gen-eval 6 '(harmonic-progression                       (setf degree (gen-rotate 2 degree))                       row :relative t)))      (setf end1 (harmonic-progression '(-13 -13) row :relative t))   (setf end2 (harmonic-progression '(-12 -12) row :relative t))   (setf end3 (harmonic-progression '(-13 -13) row :relative t))   (setf end4 (harmonic-progression '(-12) row :relative t))      (defparameter omn (make-omn                      :length '((q) (-h))                      :pitch (assemble-seq mat end1 end2 end3 end4)                      :velocity '(mp)                      :span :pitch))      (with-sound (:reverb jc-reverb)     (bandedwg-synth omn omn omn :mode 1)     )   )  
    As you can see it is quite easy to use CLM in OM with OMN.
    More CLM instruments to come.
  11. Like
    opmo got a reaction from terekita in make-omn and ties   
    you could use tie-bars function:
    (setf lens '((e = = =) (e = = =))) (setf notes '((c4 d4 = =) (d4 g4 = =))) (tie-bars (make-omn :length lens :pitch notes)) => ((e c4 mf d4 d4 d4 tie) (e d4 mf g4 g4 g4)) section or exclude options allows you to control which bars you like to tie.
  12. Like
    opmo got a reaction from AM in Opusmodus 1.3.24409   
    Whats new:
    —'Check for Updates...' menu in Opusmodus app menu (no more manual downloads). 🙂
    —New CLM instruments with omn-form plist input and documentation.
     
      badd-synth   bandedwg-synth   circular-scanned-synth   fm-bell-synth   fm-insect-synth   fm-violin-synth   grani-synth   piano-synth   pvoc-synth   scanner-synth   singbowl-synth
    —Additional _About documents for various function groups (Wikipedia).
     —CLM bug fixes.
     
    Installation:
    There are some changes to the Opusmodus user system folder and CLM implementation.
    Before opening the new application you need to delete the old Opusmodus folder.
    Make sure you save your personal files (scores, docs etc...) before. A good solution is to rename the Opusmodus folder first and then compress it.
    After you have deleted the Opusmodus user folder you can start the new application.
    At the start Opusmodus will ask you for permission to create a new user folder in your home directory, if you don’t see a window for it, it means the old folder is still on your computer. Make sure the new Opusmodus folder is installed in your home directory.
     
    Hopefully this is the last time we need to delete the previous Opusmodus user folder from the home directory.
     
    Best wishes,
    Janusz

    P.S. Few CLM examples from the "3.Howto Score/CLM/Sound Synthesis.opmo" file:

    fm-bell-synth
    (progn   (defparameter count 50)   (setf partials (library 'marangona-partials 'partials nil :random 20))   (setf par (rnd-sample count (partial :freq (flatten partials))))   (defparameter freq (gen-divide (rnd-sample count '(1 2 3 4 5)) par))   (defparameter dur (list (length-span 42 (rnd-sample count '(w h q w)))))      (do-timeline    '(dur (---xx--xx- ---xx---x- --x--xx--- ---x------ x----x---))    '(gen-pause x) :time '(w))      (defparameter vel (rnd-number count 0.05 0.43))   (defparameter dist (rnd-number count 0.5 1.0))   (defparameter env     '((0 0 40 .1000 60 .2000 75 .4000 82 1 90 1 100 0)       (0 0 60 .1000 80 .2000 90 .4000 95 1 100 0)       (0 0 10 1 16 0 32 .1000 50 1 56 0 60 0 90 .3000 100 0)       (0 0 30 1 56 0 60 0 90 .3000 100 0)       (0 0 50 1 80 .3000 100 0)       (0 0 40 .1000 60 .2000 75 .4000 82 1 90 1 100 0)       (0 0 10 1 32 .1000 50 1 90 .3000 100 0)       (0 0 60 .1000 80 .3000 95 1 100 0)       (0 0 80 .1000 90 1 100 0)))      (with-sound (:reverb jc-reverb :scaled-to .7)     (fm-bell-synth dur freq vel                    :amp-env (rnd-sample count env)                    :index-env (rnd-sample count env)                    :index (rnd-number count 0.3 0.9)                    :reverb-amount 0.30                    :distance dist))   )
    fm-insect-synth
    (progn   (defparameter par (library 'tbn-cs3-partials 'partials nil :random 12))   (defparameter dur '(rnd-sample 12 '(-q q. h -h. -w w. d -d.)))   (defparameter freq '(rnd-sample 12 (flatten (partial :freq par))))   (defparameter amp '(rnd-sample 12 '(pppp ppp p mp)))   (defparameter mod-freq-env '(0 0 40 1 95 1 100 .5))   (defparameter mod-index-env '(0 1 25 .7 75 .78 100 1))   (defparameter amp-env '(0 0 25 1 75 .7 100 0))   (defparameter fm-index '(rnd-number 12 .01 .6))   (defparameter mod-skew '(rnd-number 12 -20.0 -1.0))   (defparameter mod-freq '(rnd-number 12 20 60))      (with-sound '()     (fm-insect-synth (eval dur) (eval freq) (eval amp) amp-env                      (eval mod-freq) (eval mod-skew) mod-freq-env                      500.866 mod-index-env (eval fm-index) .500)          (fm-insect-synth (eval dur) (eval freq) (eval amp) amp-env                      (eval mod-freq) (eval mod-skew) mod-freq-env                      649.490 mod-index-env (eval fm-index) .500)          (fm-insect-synth (eval dur) (eval freq) (eval amp) amp-env                      (eval mod-freq) (eval mod-skew) mod-freq-env                      562.087 mod-index-env (eval fm-index) .500)          (fm-insect-synth (eval dur) (eval freq) (eval amp) amp-env                      (eval mod-freq) (eval mod-skew) mod-freq-env                      300.866 mod-index-env (eval fm-index) .500)     )   )
    grani-synth
    (progn   (defparameter dur '(q h w d -q -h))   (defparameter amp '(pppp p pp f mp))      (with-sound (:reverb jc-reverb :reverb-channels 2)     (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-envelope '(0 0 .2 .2 .5 1 .8 .2 1 0))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grains 10)          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-start '(0 .1 .3 .1 1 .6)                  :amp-envelope '(0 1 1 1)                  :grain-density 8                  :grain-envelope '(0 0 .2 .2 .5 1 .8 .2 1 0)                  :grain-envelope-end '(0 0 .01 1 .99 1 1 0)                  :grain-envelope-transition '(0 0 .4 1 .8 0 1 0))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                   :grain-start '(0 0 1 1)                  :amp-envelope '(0 1 1 1)                  :grain-density 20                  :grain-duration '(0 .003 .2 .01 1 .3))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-start '(0 0 1 1)                   :amp-envelope '(0 1 1 1)                  :grain-density 20                  :grain-duration '(0 .003 .2 .01 1 .3)                  :grain-duration-limit .02)          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :amp-envelope '(0 1 1 1)                  :grain-density 40                  :grain-start '(0 .1 .3 .1 1 .6))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :amp-envelope '(0 1 1 1)                  :grain-density 40                  :grain-start '(0 .1 .3 .1 1 .6)                  :grain-start-spread .01)          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-start '(0 0 1 1)                  :grain-start-spread 0.01                  :amp-envelope '(0 1 1 1)                  :grain-density 40                  :srate '(0 0 .2 0 .6 5 1 5))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-start '(0 0 1 1)                  :grain-start-spread .01                  :amp-envelope '(0 1 1 1)                  :grain-density (rnd-sample 12 '(40 30 20))                  :srate-base 2                  :srate '(0 0 .2 0 .6 -1 1 -1))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-start '(0 0 1 1)                  :grain-start-spread .01                  :amp-envelope '(0 1 1 1)                  :grain-density (rnd-sample 12 '(40 30 20))                  :srate-linear t                  :srate (list 0 1 .2 1 .6 (expt 2 5/12) 1 (expt 2 5/12)))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-start '(0 0 1 1)                  :grain-start-spread .01                  :amp-envelope '(0 1 1 1)                  :grain-envelope '(0 0 .2 .2 .5 1 .8 .2 1 0)                  :grain-density (rnd-sample 12 '(40 30 20))                  :grain-duration '(0 .02 1 0.1)                   :grain-duration-spread '(0 0 .5 .1 1 0))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-start '(0 0 1 1)                  :grain-start-spread 0.01                  :amp-envelope '(0 1 1 1)                  :grain-density (rnd-sample 12 '(40 30 20))                  :grain-degree '(0 0 1 90)                  :grain-degree-spread 10)          (grani-synth (rnd-sample 12 dur)                   (rnd-sample 12 amp) "oboe"                  :grain-duration .06                  :grain-density 20                  :grain-density-spread 2                  :srate 0)          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-duration .08                  :grain-density (rnd-sample 12 '(40 30 20))                  :grain-density-spread 2                  :srate 5                    :grain-degree 0                  :grain-envelope '(0 0 .2 .2 .5 1 .8 .2 1 0)                  :grain-envelope-end '(0 0 .01 1 .99 1 1 0))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-duration .05                  :grain-density 35                  :grain-density-spread 3                  :srate -5                  :grain-degree 90                  :srate (list 0 1 .3 1 .3 (expt 2 5/12) 1 (expt 2 5/12))))   )
    piano-synth
    (progn   (setf frames1 (library 'marangona-partials 'partials nil :random 48))   (setf frames2 (library 'marangona-frames 'partials nil :random 48))   (setf par1 (remove-partial frames1 :type :freq :min 27.5 :max 4186))   (setf par2 (remove-partial frames2 :type :freq :min 27.5 :max 4186))      (defparameter freq1     (rnd-order      (gen-collect       (rnd-sample 24 '(3 5 6 7 8)) (partial :freq par1))))      (defparameter freq2     (rnd-order      (gen-collect       (rnd-sample 38  '(2 3 4)) (partial :freq par2))))      (with-sound (:reverb jc-reverb)     (piano-synth '(3e) (flatten freq1) '(.2 .3 .4)                  :bpm 72                  :drypedalresonancefactor .25                  :singlestringdecayrate-table                  '(21 -5 24.000 -5.000 36.000 -5.4                    41.953 -5.867 48.173 -7.113 53.818 -8.016                    59.693 -8.875 66.605 -9.434 73.056 -10.035                    78.931 -10.293 84.000 -12.185)                  :singlestringpole-table                  '(21 .8 24 0.7 36.000 .6 48 .5                    60 .3 84 .1 96 .03 108 .03)                  :stiffnesscoefficient-table                  '(21.000 -0.920 24.000 -0.900 36.000 -0.700                    48.000 -0.250 60.000 -0.100 75.179 -0.040                    82.986 -0.040 92.240 .3 96.000 .5                    99.000 .7 108.000 .7))     (piano-synth '(e) freq2 '(0.1 0.2 0.3)                  :bpm 72                  :drypedalresonancefactor .55                  :detuningfactor-table                  '(24 5 36 7.0 48 7.5 60 12.0 72                    20 84 30 96 100 108 300)))   )
    pvoc-synth
    (with-sound (:scaled-to .99)    (pvoc-synth (rnd-sample 12 '(q h e s w d -q -h))               '(pppp pp ppp f) "marangona"               :input-start 0               :input-end 12               :pitch-scaler (rnd-sample 12 '(.5 .1 .05 .8 .3 .16))               :pitch-offset (rnd-sample 20 '(20 100 200 300 440 150 730))               :pitch-offset-env '(0 0 20 0 50 100 70 100 80 0 100 0)               :pitch-scaler-env '(0 1 50 2 100 1)               :amp-env '(0 1 40 0 50 1 60 0 100 1)               :gate 70)   )
    singbowl-synth
    (progn   (defparameter size 120)   (defparameter partials (library 'marangona-partials 'partials nil :random 50))   (defparameter par (rnd-sample size (partial :freq (flatten partials))))   (defparameter freq (gen-divide (rnd-sample size '(2 3 4 5)) par))   (defparameter length (rnd-sample size '(w h q e)))   (defparameter velocity (rnd-number size .05 .43))      (defparameter env     '((0 0 40 .1000 60 .2000 75 .4000 82 1 90 1 100 0)       (0 0 60 .1000 80 .2000 90 .4000 95 1 100 0)       (0 0 10 1 16 0 32 .1000 50 1 56 0 60 0 90 .3000 100 0)       (0 0 30 1 56 0 60 0 90 .3000 100 0)       (0 0 50 1 80 .3000 100 0)       (0 0 40 .1000 60 .2000 75 .4000 82 1 90 1 100 0)       (0 0 10 1 32 .1000 50 1 90 .3000 100 0)       (0 0 60 .1000 80 .3000 95 1 100 0)       (0 0 80 .1000 90 1 100 0)))      (with-sound (:reverb jc-reverb :scaled-to .7 :output "ma-partials")     (singbowl-synth length freq velocity                     :amp-env (rnd-sample size env)                     :reverb-amount 0.30))   )
    fm-violin-synth
    (progn   (defparameter size 10)   (defparameter count 50)   (setf glc-v1         (gen-length-cartesian          1 3 'd '? 'w 3 (rnd-sample size '(13 11 10 8))          '(1 2 3 4 5)))      (setf glc-v2         (gen-length-cartesian          1 3 'd '? 'w 3 (rnd-sample size '(13 11 10 8))          '(1 2 3 4 5)))      (setf glc-va         (gen-length-cartesian          1 3 'd '? 'w 3 (rnd-sample size '(13 11 10 8))          '(1 2 3 4 5)))      (setf glc-vc         (gen-length-cartesian          1 3 'd '? 'w 3 (rnd-sample size '(13 11 10 8))          '(1 2 3 4 5)))      (setf gu-sq         (gen-unison (list glc-v1 glc-v2 glc-va glc-vc)))      (setf l-v1 (1~ gu-sq))   (setf l-v2 (2~ gu-sq))   (setf l-va (3~ gu-sq))   (setf l-vc (4~ gu-sq))      (setf l-max         (first          (sort-desc           (list (get-count l-v1 :length :note :sum t)                 (get-count l-v2 :length :note :sum t)                 (get-count l-va :length :note :sum t)                 (get-count l-vc :length :note :sum t)))))      (setf    intervals    '((0 7) (0 0) (11 5) (-4 5) (-5 5) (0 13) (-5 18)      (-36 13) (-13 13) (8) (-18 7) (-1 17) (-17 17)      (-26 13) (-27 23) (-19 19) (-23 23) (18) (0) (7)      (-14) (13) (-23 5) (-23 2) (-2 2) (6 2) (6 5)      (19) (-10) (-17 11) (-11 11) (-11 5) (-24 13)      (1 14) (-14 14) (-29 1) (-1 1) (7 0) (12 6)      (-21 7) (-7 7) (-18 0) (1 13) (0 1) (-14 13)      (-10 5) (-14 8) (0 6) (6) (-20 6) (-5 1) (17) (1)      (-17 5) (-1 5) (-10 16) (-12 8) (0 8) (1 11)      (-24 4) (-18 16) (-17) (-6 6) (-18 18) (-15 3)      (-6 31) (-2 5) (-29 6) (-6 13) (-13 6) (7 13)))      (setf pcount (gen-repeat 2 (get-count l-v1 :length :note)))   (setf gr (gen-repeat (length pcount) (list intervals)))   (setf gm-v1 (gen-markov gr :size pcount))   (setf gm-v2 (gen-markov gr :size pcount))   (setf gm-va (gen-markov gr :size pcount))   (setf gm-vc (gen-markov gr :size pcount))   (setf im-v1 (interval-map nil (append-sublist gm-v1)))   (setf im-v2 (interval-map nil (append-sublist gm-v2)))   (setf im-va (interval-map nil (append-sublist gm-va)))   (setf im-vc (interval-map nil (append-sublist gm-vc)))   (setf s-v1 (span l-v1 im-v1))   (setf s-v2 (span l-v2 im-v2))   (setf s-va (span l-va im-va))   (setf s-vc (span l-vc im-vc))   (setf ra-v1 (rnd-octaves 'violin s-v1))   (setf ra-v2 (rnd-octaves 'violin s-v2))   (setf ra-va (rnd-octaves 'viola  s-va))   (setf ra-vc (rnd-octaves 'cello  s-vc))   (setf p-v1 (ambitus 'violin ra-v1 :type :invert))   (setf p-v2 (ambitus 'violin ra-v2 :type :invert))   (setf p-va (ambitus 'viola ra-va :type :invert))   (setf p-vc (ambitus '(a2 c5) ra-vc :type :invert))   (setf weight '(29 19 8 8 17))   (setf vel '(0.07 0.1 0.15 0.2 0.25 0.35))   (setf v-v1 (gen-weight l-max (mapcar 'list vel weight)))   (setf v-v2 (gen-weight l-max (mapcar 'list vel weight)))   (setf v-va (gen-weight l-max (mapcar 'list vel weight)))   (setf v-vc (gen-weight l-max (mapcar 'list vel weight)))      (setf vln1 (make-omn :length l-v1 :pitch p-v1 :velocity v-v1))   (setf vln2 (make-omn :length l-v2 :pitch p-v2 :velocity v-v2))   (setf vla (make-omn :length l-va :pitch p-va :velocity v-va))   (setf vlc (make-omn :length l-vc :pitch p-vc :velocity v-vc))      (do-timeline    '(       vln1 (---x---x-- ---x-x-x-- --x--xx--- ---x------ x-)      vln2 (---x---x-- ---x---x-- --x--xx--- ---x------ x-)      vla  (---x---x-- ---x---x-- --x--xx--- ---x------ --)      vlc  (---x---x-- ---x---xx- --x--xx--- ---x------ --)      )    '(gen-pause x) :time '(h h. w))      (defparameter v1 vln1)   (defparameter v2 vln2)   (defparameter v3 vla)   (defparameter v4 vlc)   (defparameter env     '((0 0 40 .1000 60 .2000 75 .4000 82 1 90 1 100 0)       (0 0 60 .1000 80 .2000 90 .4000 95 1 100 0)       (0 0 10 1 16 0 32 .1000 50 1 56 0 60 0 90 .3000 100 0)       (0 0 30 1 56 0 60 0 90 .3000 100 0)       (0 0 50 1 80 .3000 100 0)       (0 0 40 .1000 60 .2000 75 .4000 82 1 90 1 100 0)       (0 0 10 1 32 .1000 50 1 90 .3000 100 0)       (0 0 60 .1000 80 .3000 95 1 100 0)       (0 0 80 .1000 90 1 100 0)))      (with-sound (:reverb jc-reverb :scaled-to .7)     (fm-violin-synth v1 v1 v1                      :bpm 30                      :degree (rnd-number count 45 85)                      :fm-index (rnd-number count 0.10 1.0)                      :reverb-amount 0.30                      :noise-amount (rnd-number count 0.00 0.004)                      :amp-env (rnd-sample count env)                      :glissando-amount (rnd-number count 0.00 0.8))          (fm-violin-synth v2 v2 v2                      :bpm 30                      :degree (rnd-number count 45 85)                      :fm-index (rnd-number count 0.03 1.0)                      :reverb-amount 0.30                      :noise-amount (rnd-number count 0.00 0.004)                      :amp-env (rnd-sample count env)                      :glissando-amount (rnd-number count 0.00 0.8))          (fm-violin-synth v3 v3 v3                      :bpm 30                      :degree (rnd-number count 45 85)                      :fm-index (rnd-number count 0.10 1.0)                      :reverb-amount 0.30                      :noise-amount (rnd-number count 0.00 0.004)                      :amp-env (rnd-sample count env)                      :glissando-amount (rnd-number count 0.00 0.8))          (fm-violin-synth v4 v4 v4                      :bpm 30                      :degree (rnd-number count 45 85)                      :fm-index (rnd-number count 0.70 1.0)                      :reverb-amount 0.30                      :noise-amount (rnd-number count 0.00 0.004)                      :amp-env (rnd-sample count env)                      :glissando-amount (rnd-number count 0.00 0.8)))   )
    scanned-synth
    (progn   (defparameter size 120)   (setf partials1 (library 'tbn-cs3-partials 'partials nil :random 64))   (setf partials2 (library 'tbn-cs3-partials 'partials nil :random 64))   (setf freq1 (rnd-sample size (partial :freq (flatten partials1))))   (setf freq2 (rnd-sample size (partial :freq (flatten partials2))))   (defparameter dur1 (rnd-sample size '(s s s s)))   (defparameter dur2 (rnd-sample size '(q e s s s -s)))   (defparameter amp1 (rnd-number size .005 .13))   (defparameter amp2 (rnd-number size .005 .13))   (defparameter waves '(1 2 3 4 5 6 7 8 9 10 11 12 13))      (with-sound (:reverb jc-reverb)     (scanned-synth      dur1 freq1 amp1      :wave (rnd-sample size waves) :bpm 96      :pts (rnd-sample size '(192 256 512)))          (scanned-synth      dur2 freq2 amp2      :wave (rnd-sample size waves) :bpm 96      :pts (rnd-sample size '(192 256 512)))     )   )
    circular-scanned-synth
    (progn   (defparameter size 24)   (setf partials1 (library 'tbn-cs3-partials 'partials nil :random 50))   (setf partials2 (library 'tbn-cs3-partials 'partials nil :random 50))   (setf par1 (rnd-sample size (partial :freq (flatten partials1))))   (setf par2 (rnd-sample size (partial :freq (flatten partials2))))   (defparameter dur1 (rnd-sample size '(1 2 3 4 5)))   (defparameter dur2 (rnd-sample size '(1 2 3 4 5)))   (defparameter freq1 (gen-divide (rnd-sample size '(2 3 4 5)) par1))   (defparameter freq2 (gen-divide (rnd-sample size '(2 3 4 5)) par2))   (defparameter amp1 (rnd-number size .05 .43))   (defparameter amp2 (rnd-number size .05 .43))   (defparameter env     '((0 0 40 .1000 60 .2000 75 1 90 1 100 0)       (0 0 60 .1000 80 .2000 90 1 100 0)       (0 0 10 1 16 0 32 .1000 50 1 100 0)       (0 0 30 1 56 0 60 0 90 .3000 100 0)       (0 0 50 1 80 .3000 100 0)       (0 0 40 .1000 60 .2000 82 1 100 0)       (0 0 10 1 32 .1000 50 1 100 0)       (0 0 60 .1000 80 .3000 95 1 100 0)       (0 0 80 .1000 90 1 100 0)))      (with-sound (:reverb jc-reverb)     (circular-scanned-synth      dur1 freq1 amp1      :wave (rnd-sample size '(1 2 3 4))      :recompute-samps (rnd-sample size '(14 222 32 162 211 72))      :pts (rnd-sample size '(192 256 512))      :cycles (rnd-sample size '(1 2 3))      :amp-env (rnd-sample size env))          (circular-scanned-synth      dur2 freq2 amp2      :wave (rnd-sample size '(1 2 3 4))      :recompute-samps (rnd-sample size '(14 222 32 162 211 72))      :pts (rnd-sample size '(192 256 512))      :cycles (rnd-sample size '(1 2 3))      :amp-env (rnd-sample size env))     )   )
    badd-synth
    (progn   (defparameter size 12)   (setf partials (library 'marangona-partials 'partials nil :random 64))   (setf mpar (remove-partial partials :type :freq :max 1800.0))   (setf par (partial :freq mpar))   (setf freq '(rnd-sample size (flatten par)))   (defparameter dur '(rnd-sample size '(1 2 3 4 5)))   (defparameter amp '(rnd-number size .12 .33))      (with-sound (:reverb jc-reverb)     (badd-synth (eval dur) (eval freq) (eval amp))     (badd-synth (eval dur) (eval freq) (eval amp))     (badd-synth (eval dur) (eval freq) (eval amp))     (badd-synth (eval dur) (eval freq) (eval amp))     (badd-synth (eval dur) (eval freq) (eval amp))     (badd-synth (eval dur) (eval freq) (eval amp))     )   )
    bandedwg-synth
    (progn   (setf row (library 'vienna 'berg 'r11))   (setf degree '(0 3 4 0 -2 -3 -1 0 -2))   (setf mat         (gen-eval 6 '(harmonic-progression                       (setf degree (gen-rotate 2 degree))                       row :relative t)))      (setf end1 (harmonic-progression '(-13 -13) row :relative t))   (setf end2 (harmonic-progression '(-12 -12) row :relative t))   (setf end3 (harmonic-progression '(-13 -13) row :relative t))   (setf end4 (harmonic-progression '(-12) row :relative t))      (defparameter omn (make-omn                      :length '((q) (-h))                      :pitch (assemble-seq mat end1 end2 end3 end4)                      :velocity '(mp)                      :span :pitch))      (with-sound (:reverb jc-reverb)     (bandedwg-synth omn omn omn :mode 1)     )   )  
    As you can see it is quite easy to use CLM in OM with OMN.
    More CLM instruments to come.
  13. Like
    opmo got a reaction from ydepps in Opusmodus 1.3.24409   
    Whats new:
    —'Check for Updates...' menu in Opusmodus app menu (no more manual downloads). 🙂
    —New CLM instruments with omn-form plist input and documentation.
     
      badd-synth   bandedwg-synth   circular-scanned-synth   fm-bell-synth   fm-insect-synth   fm-violin-synth   grani-synth   piano-synth   pvoc-synth   scanner-synth   singbowl-synth
    —Additional _About documents for various function groups (Wikipedia).
     —CLM bug fixes.
     
    Installation:
    There are some changes to the Opusmodus user system folder and CLM implementation.
    Before opening the new application you need to delete the old Opusmodus folder.
    Make sure you save your personal files (scores, docs etc...) before. A good solution is to rename the Opusmodus folder first and then compress it.
    After you have deleted the Opusmodus user folder you can start the new application.
    At the start Opusmodus will ask you for permission to create a new user folder in your home directory, if you don’t see a window for it, it means the old folder is still on your computer. Make sure the new Opusmodus folder is installed in your home directory.
     
    Hopefully this is the last time we need to delete the previous Opusmodus user folder from the home directory.
     
    Best wishes,
    Janusz

    P.S. Few CLM examples from the "3.Howto Score/CLM/Sound Synthesis.opmo" file:

    fm-bell-synth
    (progn   (defparameter count 50)   (setf partials (library 'marangona-partials 'partials nil :random 20))   (setf par (rnd-sample count (partial :freq (flatten partials))))   (defparameter freq (gen-divide (rnd-sample count '(1 2 3 4 5)) par))   (defparameter dur (list (length-span 42 (rnd-sample count '(w h q w)))))      (do-timeline    '(dur (---xx--xx- ---xx---x- --x--xx--- ---x------ x----x---))    '(gen-pause x) :time '(w))      (defparameter vel (rnd-number count 0.05 0.43))   (defparameter dist (rnd-number count 0.5 1.0))   (defparameter env     '((0 0 40 .1000 60 .2000 75 .4000 82 1 90 1 100 0)       (0 0 60 .1000 80 .2000 90 .4000 95 1 100 0)       (0 0 10 1 16 0 32 .1000 50 1 56 0 60 0 90 .3000 100 0)       (0 0 30 1 56 0 60 0 90 .3000 100 0)       (0 0 50 1 80 .3000 100 0)       (0 0 40 .1000 60 .2000 75 .4000 82 1 90 1 100 0)       (0 0 10 1 32 .1000 50 1 90 .3000 100 0)       (0 0 60 .1000 80 .3000 95 1 100 0)       (0 0 80 .1000 90 1 100 0)))      (with-sound (:reverb jc-reverb :scaled-to .7)     (fm-bell-synth dur freq vel                    :amp-env (rnd-sample count env)                    :index-env (rnd-sample count env)                    :index (rnd-number count 0.3 0.9)                    :reverb-amount 0.30                    :distance dist))   )
    fm-insect-synth
    (progn   (defparameter par (library 'tbn-cs3-partials 'partials nil :random 12))   (defparameter dur '(rnd-sample 12 '(-q q. h -h. -w w. d -d.)))   (defparameter freq '(rnd-sample 12 (flatten (partial :freq par))))   (defparameter amp '(rnd-sample 12 '(pppp ppp p mp)))   (defparameter mod-freq-env '(0 0 40 1 95 1 100 .5))   (defparameter mod-index-env '(0 1 25 .7 75 .78 100 1))   (defparameter amp-env '(0 0 25 1 75 .7 100 0))   (defparameter fm-index '(rnd-number 12 .01 .6))   (defparameter mod-skew '(rnd-number 12 -20.0 -1.0))   (defparameter mod-freq '(rnd-number 12 20 60))      (with-sound '()     (fm-insect-synth (eval dur) (eval freq) (eval amp) amp-env                      (eval mod-freq) (eval mod-skew) mod-freq-env                      500.866 mod-index-env (eval fm-index) .500)          (fm-insect-synth (eval dur) (eval freq) (eval amp) amp-env                      (eval mod-freq) (eval mod-skew) mod-freq-env                      649.490 mod-index-env (eval fm-index) .500)          (fm-insect-synth (eval dur) (eval freq) (eval amp) amp-env                      (eval mod-freq) (eval mod-skew) mod-freq-env                      562.087 mod-index-env (eval fm-index) .500)          (fm-insect-synth (eval dur) (eval freq) (eval amp) amp-env                      (eval mod-freq) (eval mod-skew) mod-freq-env                      300.866 mod-index-env (eval fm-index) .500)     )   )
    grani-synth
    (progn   (defparameter dur '(q h w d -q -h))   (defparameter amp '(pppp p pp f mp))      (with-sound (:reverb jc-reverb :reverb-channels 2)     (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-envelope '(0 0 .2 .2 .5 1 .8 .2 1 0))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grains 10)          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-start '(0 .1 .3 .1 1 .6)                  :amp-envelope '(0 1 1 1)                  :grain-density 8                  :grain-envelope '(0 0 .2 .2 .5 1 .8 .2 1 0)                  :grain-envelope-end '(0 0 .01 1 .99 1 1 0)                  :grain-envelope-transition '(0 0 .4 1 .8 0 1 0))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                   :grain-start '(0 0 1 1)                  :amp-envelope '(0 1 1 1)                  :grain-density 20                  :grain-duration '(0 .003 .2 .01 1 .3))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-start '(0 0 1 1)                   :amp-envelope '(0 1 1 1)                  :grain-density 20                  :grain-duration '(0 .003 .2 .01 1 .3)                  :grain-duration-limit .02)          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :amp-envelope '(0 1 1 1)                  :grain-density 40                  :grain-start '(0 .1 .3 .1 1 .6))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :amp-envelope '(0 1 1 1)                  :grain-density 40                  :grain-start '(0 .1 .3 .1 1 .6)                  :grain-start-spread .01)          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-start '(0 0 1 1)                  :grain-start-spread 0.01                  :amp-envelope '(0 1 1 1)                  :grain-density 40                  :srate '(0 0 .2 0 .6 5 1 5))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-start '(0 0 1 1)                  :grain-start-spread .01                  :amp-envelope '(0 1 1 1)                  :grain-density (rnd-sample 12 '(40 30 20))                  :srate-base 2                  :srate '(0 0 .2 0 .6 -1 1 -1))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-start '(0 0 1 1)                  :grain-start-spread .01                  :amp-envelope '(0 1 1 1)                  :grain-density (rnd-sample 12 '(40 30 20))                  :srate-linear t                  :srate (list 0 1 .2 1 .6 (expt 2 5/12) 1 (expt 2 5/12)))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-start '(0 0 1 1)                  :grain-start-spread .01                  :amp-envelope '(0 1 1 1)                  :grain-envelope '(0 0 .2 .2 .5 1 .8 .2 1 0)                  :grain-density (rnd-sample 12 '(40 30 20))                  :grain-duration '(0 .02 1 0.1)                   :grain-duration-spread '(0 0 .5 .1 1 0))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-start '(0 0 1 1)                  :grain-start-spread 0.01                  :amp-envelope '(0 1 1 1)                  :grain-density (rnd-sample 12 '(40 30 20))                  :grain-degree '(0 0 1 90)                  :grain-degree-spread 10)          (grani-synth (rnd-sample 12 dur)                   (rnd-sample 12 amp) "oboe"                  :grain-duration .06                  :grain-density 20                  :grain-density-spread 2                  :srate 0)          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-duration .08                  :grain-density (rnd-sample 12 '(40 30 20))                  :grain-density-spread 2                  :srate 5                    :grain-degree 0                  :grain-envelope '(0 0 .2 .2 .5 1 .8 .2 1 0)                  :grain-envelope-end '(0 0 .01 1 .99 1 1 0))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-duration .05                  :grain-density 35                  :grain-density-spread 3                  :srate -5                  :grain-degree 90                  :srate (list 0 1 .3 1 .3 (expt 2 5/12) 1 (expt 2 5/12))))   )
    piano-synth
    (progn   (setf frames1 (library 'marangona-partials 'partials nil :random 48))   (setf frames2 (library 'marangona-frames 'partials nil :random 48))   (setf par1 (remove-partial frames1 :type :freq :min 27.5 :max 4186))   (setf par2 (remove-partial frames2 :type :freq :min 27.5 :max 4186))      (defparameter freq1     (rnd-order      (gen-collect       (rnd-sample 24 '(3 5 6 7 8)) (partial :freq par1))))      (defparameter freq2     (rnd-order      (gen-collect       (rnd-sample 38  '(2 3 4)) (partial :freq par2))))      (with-sound (:reverb jc-reverb)     (piano-synth '(3e) (flatten freq1) '(.2 .3 .4)                  :bpm 72                  :drypedalresonancefactor .25                  :singlestringdecayrate-table                  '(21 -5 24.000 -5.000 36.000 -5.4                    41.953 -5.867 48.173 -7.113 53.818 -8.016                    59.693 -8.875 66.605 -9.434 73.056 -10.035                    78.931 -10.293 84.000 -12.185)                  :singlestringpole-table                  '(21 .8 24 0.7 36.000 .6 48 .5                    60 .3 84 .1 96 .03 108 .03)                  :stiffnesscoefficient-table                  '(21.000 -0.920 24.000 -0.900 36.000 -0.700                    48.000 -0.250 60.000 -0.100 75.179 -0.040                    82.986 -0.040 92.240 .3 96.000 .5                    99.000 .7 108.000 .7))     (piano-synth '(e) freq2 '(0.1 0.2 0.3)                  :bpm 72                  :drypedalresonancefactor .55                  :detuningfactor-table                  '(24 5 36 7.0 48 7.5 60 12.0 72                    20 84 30 96 100 108 300)))   )
    pvoc-synth
    (with-sound (:scaled-to .99)    (pvoc-synth (rnd-sample 12 '(q h e s w d -q -h))               '(pppp pp ppp f) "marangona"               :input-start 0               :input-end 12               :pitch-scaler (rnd-sample 12 '(.5 .1 .05 .8 .3 .16))               :pitch-offset (rnd-sample 20 '(20 100 200 300 440 150 730))               :pitch-offset-env '(0 0 20 0 50 100 70 100 80 0 100 0)               :pitch-scaler-env '(0 1 50 2 100 1)               :amp-env '(0 1 40 0 50 1 60 0 100 1)               :gate 70)   )
    singbowl-synth
    (progn   (defparameter size 120)   (defparameter partials (library 'marangona-partials 'partials nil :random 50))   (defparameter par (rnd-sample size (partial :freq (flatten partials))))   (defparameter freq (gen-divide (rnd-sample size '(2 3 4 5)) par))   (defparameter length (rnd-sample size '(w h q e)))   (defparameter velocity (rnd-number size .05 .43))      (defparameter env     '((0 0 40 .1000 60 .2000 75 .4000 82 1 90 1 100 0)       (0 0 60 .1000 80 .2000 90 .4000 95 1 100 0)       (0 0 10 1 16 0 32 .1000 50 1 56 0 60 0 90 .3000 100 0)       (0 0 30 1 56 0 60 0 90 .3000 100 0)       (0 0 50 1 80 .3000 100 0)       (0 0 40 .1000 60 .2000 75 .4000 82 1 90 1 100 0)       (0 0 10 1 32 .1000 50 1 90 .3000 100 0)       (0 0 60 .1000 80 .3000 95 1 100 0)       (0 0 80 .1000 90 1 100 0)))      (with-sound (:reverb jc-reverb :scaled-to .7 :output "ma-partials")     (singbowl-synth length freq velocity                     :amp-env (rnd-sample size env)                     :reverb-amount 0.30))   )
    fm-violin-synth
    (progn   (defparameter size 10)   (defparameter count 50)   (setf glc-v1         (gen-length-cartesian          1 3 'd '? 'w 3 (rnd-sample size '(13 11 10 8))          '(1 2 3 4 5)))      (setf glc-v2         (gen-length-cartesian          1 3 'd '? 'w 3 (rnd-sample size '(13 11 10 8))          '(1 2 3 4 5)))      (setf glc-va         (gen-length-cartesian          1 3 'd '? 'w 3 (rnd-sample size '(13 11 10 8))          '(1 2 3 4 5)))      (setf glc-vc         (gen-length-cartesian          1 3 'd '? 'w 3 (rnd-sample size '(13 11 10 8))          '(1 2 3 4 5)))      (setf gu-sq         (gen-unison (list glc-v1 glc-v2 glc-va glc-vc)))      (setf l-v1 (1~ gu-sq))   (setf l-v2 (2~ gu-sq))   (setf l-va (3~ gu-sq))   (setf l-vc (4~ gu-sq))      (setf l-max         (first          (sort-desc           (list (get-count l-v1 :length :note :sum t)                 (get-count l-v2 :length :note :sum t)                 (get-count l-va :length :note :sum t)                 (get-count l-vc :length :note :sum t)))))      (setf    intervals    '((0 7) (0 0) (11 5) (-4 5) (-5 5) (0 13) (-5 18)      (-36 13) (-13 13) (8) (-18 7) (-1 17) (-17 17)      (-26 13) (-27 23) (-19 19) (-23 23) (18) (0) (7)      (-14) (13) (-23 5) (-23 2) (-2 2) (6 2) (6 5)      (19) (-10) (-17 11) (-11 11) (-11 5) (-24 13)      (1 14) (-14 14) (-29 1) (-1 1) (7 0) (12 6)      (-21 7) (-7 7) (-18 0) (1 13) (0 1) (-14 13)      (-10 5) (-14 8) (0 6) (6) (-20 6) (-5 1) (17) (1)      (-17 5) (-1 5) (-10 16) (-12 8) (0 8) (1 11)      (-24 4) (-18 16) (-17) (-6 6) (-18 18) (-15 3)      (-6 31) (-2 5) (-29 6) (-6 13) (-13 6) (7 13)))      (setf pcount (gen-repeat 2 (get-count l-v1 :length :note)))   (setf gr (gen-repeat (length pcount) (list intervals)))   (setf gm-v1 (gen-markov gr :size pcount))   (setf gm-v2 (gen-markov gr :size pcount))   (setf gm-va (gen-markov gr :size pcount))   (setf gm-vc (gen-markov gr :size pcount))   (setf im-v1 (interval-map nil (append-sublist gm-v1)))   (setf im-v2 (interval-map nil (append-sublist gm-v2)))   (setf im-va (interval-map nil (append-sublist gm-va)))   (setf im-vc (interval-map nil (append-sublist gm-vc)))   (setf s-v1 (span l-v1 im-v1))   (setf s-v2 (span l-v2 im-v2))   (setf s-va (span l-va im-va))   (setf s-vc (span l-vc im-vc))   (setf ra-v1 (rnd-octaves 'violin s-v1))   (setf ra-v2 (rnd-octaves 'violin s-v2))   (setf ra-va (rnd-octaves 'viola  s-va))   (setf ra-vc (rnd-octaves 'cello  s-vc))   (setf p-v1 (ambitus 'violin ra-v1 :type :invert))   (setf p-v2 (ambitus 'violin ra-v2 :type :invert))   (setf p-va (ambitus 'viola ra-va :type :invert))   (setf p-vc (ambitus '(a2 c5) ra-vc :type :invert))   (setf weight '(29 19 8 8 17))   (setf vel '(0.07 0.1 0.15 0.2 0.25 0.35))   (setf v-v1 (gen-weight l-max (mapcar 'list vel weight)))   (setf v-v2 (gen-weight l-max (mapcar 'list vel weight)))   (setf v-va (gen-weight l-max (mapcar 'list vel weight)))   (setf v-vc (gen-weight l-max (mapcar 'list vel weight)))      (setf vln1 (make-omn :length l-v1 :pitch p-v1 :velocity v-v1))   (setf vln2 (make-omn :length l-v2 :pitch p-v2 :velocity v-v2))   (setf vla (make-omn :length l-va :pitch p-va :velocity v-va))   (setf vlc (make-omn :length l-vc :pitch p-vc :velocity v-vc))      (do-timeline    '(       vln1 (---x---x-- ---x-x-x-- --x--xx--- ---x------ x-)      vln2 (---x---x-- ---x---x-- --x--xx--- ---x------ x-)      vla  (---x---x-- ---x---x-- --x--xx--- ---x------ --)      vlc  (---x---x-- ---x---xx- --x--xx--- ---x------ --)      )    '(gen-pause x) :time '(h h. w))      (defparameter v1 vln1)   (defparameter v2 vln2)   (defparameter v3 vla)   (defparameter v4 vlc)   (defparameter env     '((0 0 40 .1000 60 .2000 75 .4000 82 1 90 1 100 0)       (0 0 60 .1000 80 .2000 90 .4000 95 1 100 0)       (0 0 10 1 16 0 32 .1000 50 1 56 0 60 0 90 .3000 100 0)       (0 0 30 1 56 0 60 0 90 .3000 100 0)       (0 0 50 1 80 .3000 100 0)       (0 0 40 .1000 60 .2000 75 .4000 82 1 90 1 100 0)       (0 0 10 1 32 .1000 50 1 90 .3000 100 0)       (0 0 60 .1000 80 .3000 95 1 100 0)       (0 0 80 .1000 90 1 100 0)))      (with-sound (:reverb jc-reverb :scaled-to .7)     (fm-violin-synth v1 v1 v1                      :bpm 30                      :degree (rnd-number count 45 85)                      :fm-index (rnd-number count 0.10 1.0)                      :reverb-amount 0.30                      :noise-amount (rnd-number count 0.00 0.004)                      :amp-env (rnd-sample count env)                      :glissando-amount (rnd-number count 0.00 0.8))          (fm-violin-synth v2 v2 v2                      :bpm 30                      :degree (rnd-number count 45 85)                      :fm-index (rnd-number count 0.03 1.0)                      :reverb-amount 0.30                      :noise-amount (rnd-number count 0.00 0.004)                      :amp-env (rnd-sample count env)                      :glissando-amount (rnd-number count 0.00 0.8))          (fm-violin-synth v3 v3 v3                      :bpm 30                      :degree (rnd-number count 45 85)                      :fm-index (rnd-number count 0.10 1.0)                      :reverb-amount 0.30                      :noise-amount (rnd-number count 0.00 0.004)                      :amp-env (rnd-sample count env)                      :glissando-amount (rnd-number count 0.00 0.8))          (fm-violin-synth v4 v4 v4                      :bpm 30                      :degree (rnd-number count 45 85)                      :fm-index (rnd-number count 0.70 1.0)                      :reverb-amount 0.30                      :noise-amount (rnd-number count 0.00 0.004)                      :amp-env (rnd-sample count env)                      :glissando-amount (rnd-number count 0.00 0.8)))   )
    scanned-synth
    (progn   (defparameter size 120)   (setf partials1 (library 'tbn-cs3-partials 'partials nil :random 64))   (setf partials2 (library 'tbn-cs3-partials 'partials nil :random 64))   (setf freq1 (rnd-sample size (partial :freq (flatten partials1))))   (setf freq2 (rnd-sample size (partial :freq (flatten partials2))))   (defparameter dur1 (rnd-sample size '(s s s s)))   (defparameter dur2 (rnd-sample size '(q e s s s -s)))   (defparameter amp1 (rnd-number size .005 .13))   (defparameter amp2 (rnd-number size .005 .13))   (defparameter waves '(1 2 3 4 5 6 7 8 9 10 11 12 13))      (with-sound (:reverb jc-reverb)     (scanned-synth      dur1 freq1 amp1      :wave (rnd-sample size waves) :bpm 96      :pts (rnd-sample size '(192 256 512)))          (scanned-synth      dur2 freq2 amp2      :wave (rnd-sample size waves) :bpm 96      :pts (rnd-sample size '(192 256 512)))     )   )
    circular-scanned-synth
    (progn   (defparameter size 24)   (setf partials1 (library 'tbn-cs3-partials 'partials nil :random 50))   (setf partials2 (library 'tbn-cs3-partials 'partials nil :random 50))   (setf par1 (rnd-sample size (partial :freq (flatten partials1))))   (setf par2 (rnd-sample size (partial :freq (flatten partials2))))   (defparameter dur1 (rnd-sample size '(1 2 3 4 5)))   (defparameter dur2 (rnd-sample size '(1 2 3 4 5)))   (defparameter freq1 (gen-divide (rnd-sample size '(2 3 4 5)) par1))   (defparameter freq2 (gen-divide (rnd-sample size '(2 3 4 5)) par2))   (defparameter amp1 (rnd-number size .05 .43))   (defparameter amp2 (rnd-number size .05 .43))   (defparameter env     '((0 0 40 .1000 60 .2000 75 1 90 1 100 0)       (0 0 60 .1000 80 .2000 90 1 100 0)       (0 0 10 1 16 0 32 .1000 50 1 100 0)       (0 0 30 1 56 0 60 0 90 .3000 100 0)       (0 0 50 1 80 .3000 100 0)       (0 0 40 .1000 60 .2000 82 1 100 0)       (0 0 10 1 32 .1000 50 1 100 0)       (0 0 60 .1000 80 .3000 95 1 100 0)       (0 0 80 .1000 90 1 100 0)))      (with-sound (:reverb jc-reverb)     (circular-scanned-synth      dur1 freq1 amp1      :wave (rnd-sample size '(1 2 3 4))      :recompute-samps (rnd-sample size '(14 222 32 162 211 72))      :pts (rnd-sample size '(192 256 512))      :cycles (rnd-sample size '(1 2 3))      :amp-env (rnd-sample size env))          (circular-scanned-synth      dur2 freq2 amp2      :wave (rnd-sample size '(1 2 3 4))      :recompute-samps (rnd-sample size '(14 222 32 162 211 72))      :pts (rnd-sample size '(192 256 512))      :cycles (rnd-sample size '(1 2 3))      :amp-env (rnd-sample size env))     )   )
    badd-synth
    (progn   (defparameter size 12)   (setf partials (library 'marangona-partials 'partials nil :random 64))   (setf mpar (remove-partial partials :type :freq :max 1800.0))   (setf par (partial :freq mpar))   (setf freq '(rnd-sample size (flatten par)))   (defparameter dur '(rnd-sample size '(1 2 3 4 5)))   (defparameter amp '(rnd-number size .12 .33))      (with-sound (:reverb jc-reverb)     (badd-synth (eval dur) (eval freq) (eval amp))     (badd-synth (eval dur) (eval freq) (eval amp))     (badd-synth (eval dur) (eval freq) (eval amp))     (badd-synth (eval dur) (eval freq) (eval amp))     (badd-synth (eval dur) (eval freq) (eval amp))     (badd-synth (eval dur) (eval freq) (eval amp))     )   )
    bandedwg-synth
    (progn   (setf row (library 'vienna 'berg 'r11))   (setf degree '(0 3 4 0 -2 -3 -1 0 -2))   (setf mat         (gen-eval 6 '(harmonic-progression                       (setf degree (gen-rotate 2 degree))                       row :relative t)))      (setf end1 (harmonic-progression '(-13 -13) row :relative t))   (setf end2 (harmonic-progression '(-12 -12) row :relative t))   (setf end3 (harmonic-progression '(-13 -13) row :relative t))   (setf end4 (harmonic-progression '(-12) row :relative t))      (defparameter omn (make-omn                      :length '((q) (-h))                      :pitch (assemble-seq mat end1 end2 end3 end4)                      :velocity '(mp)                      :span :pitch))      (with-sound (:reverb jc-reverb)     (bandedwg-synth omn omn omn :mode 1)     )   )  
    As you can see it is quite easy to use CLM in OM with OMN.
    More CLM instruments to come.
  14. Thanks
    opmo got a reaction from JulioHerrlein in Opusmodus 1.3.24409   
    Whats new:
    —'Check for Updates...' menu in Opusmodus app menu (no more manual downloads). 🙂
    —New CLM instruments with omn-form plist input and documentation.
     
      badd-synth   bandedwg-synth   circular-scanned-synth   fm-bell-synth   fm-insect-synth   fm-violin-synth   grani-synth   piano-synth   pvoc-synth   scanner-synth   singbowl-synth
    —Additional _About documents for various function groups (Wikipedia).
     —CLM bug fixes.
     
    Installation:
    There are some changes to the Opusmodus user system folder and CLM implementation.
    Before opening the new application you need to delete the old Opusmodus folder.
    Make sure you save your personal files (scores, docs etc...) before. A good solution is to rename the Opusmodus folder first and then compress it.
    After you have deleted the Opusmodus user folder you can start the new application.
    At the start Opusmodus will ask you for permission to create a new user folder in your home directory, if you don’t see a window for it, it means the old folder is still on your computer. Make sure the new Opusmodus folder is installed in your home directory.
     
    Hopefully this is the last time we need to delete the previous Opusmodus user folder from the home directory.
     
    Best wishes,
    Janusz

    P.S. Few CLM examples from the "3.Howto Score/CLM/Sound Synthesis.opmo" file:

    fm-bell-synth
    (progn   (defparameter count 50)   (setf partials (library 'marangona-partials 'partials nil :random 20))   (setf par (rnd-sample count (partial :freq (flatten partials))))   (defparameter freq (gen-divide (rnd-sample count '(1 2 3 4 5)) par))   (defparameter dur (list (length-span 42 (rnd-sample count '(w h q w)))))      (do-timeline    '(dur (---xx--xx- ---xx---x- --x--xx--- ---x------ x----x---))    '(gen-pause x) :time '(w))      (defparameter vel (rnd-number count 0.05 0.43))   (defparameter dist (rnd-number count 0.5 1.0))   (defparameter env     '((0 0 40 .1000 60 .2000 75 .4000 82 1 90 1 100 0)       (0 0 60 .1000 80 .2000 90 .4000 95 1 100 0)       (0 0 10 1 16 0 32 .1000 50 1 56 0 60 0 90 .3000 100 0)       (0 0 30 1 56 0 60 0 90 .3000 100 0)       (0 0 50 1 80 .3000 100 0)       (0 0 40 .1000 60 .2000 75 .4000 82 1 90 1 100 0)       (0 0 10 1 32 .1000 50 1 90 .3000 100 0)       (0 0 60 .1000 80 .3000 95 1 100 0)       (0 0 80 .1000 90 1 100 0)))      (with-sound (:reverb jc-reverb :scaled-to .7)     (fm-bell-synth dur freq vel                    :amp-env (rnd-sample count env)                    :index-env (rnd-sample count env)                    :index (rnd-number count 0.3 0.9)                    :reverb-amount 0.30                    :distance dist))   )
    fm-insect-synth
    (progn   (defparameter par (library 'tbn-cs3-partials 'partials nil :random 12))   (defparameter dur '(rnd-sample 12 '(-q q. h -h. -w w. d -d.)))   (defparameter freq '(rnd-sample 12 (flatten (partial :freq par))))   (defparameter amp '(rnd-sample 12 '(pppp ppp p mp)))   (defparameter mod-freq-env '(0 0 40 1 95 1 100 .5))   (defparameter mod-index-env '(0 1 25 .7 75 .78 100 1))   (defparameter amp-env '(0 0 25 1 75 .7 100 0))   (defparameter fm-index '(rnd-number 12 .01 .6))   (defparameter mod-skew '(rnd-number 12 -20.0 -1.0))   (defparameter mod-freq '(rnd-number 12 20 60))      (with-sound '()     (fm-insect-synth (eval dur) (eval freq) (eval amp) amp-env                      (eval mod-freq) (eval mod-skew) mod-freq-env                      500.866 mod-index-env (eval fm-index) .500)          (fm-insect-synth (eval dur) (eval freq) (eval amp) amp-env                      (eval mod-freq) (eval mod-skew) mod-freq-env                      649.490 mod-index-env (eval fm-index) .500)          (fm-insect-synth (eval dur) (eval freq) (eval amp) amp-env                      (eval mod-freq) (eval mod-skew) mod-freq-env                      562.087 mod-index-env (eval fm-index) .500)          (fm-insect-synth (eval dur) (eval freq) (eval amp) amp-env                      (eval mod-freq) (eval mod-skew) mod-freq-env                      300.866 mod-index-env (eval fm-index) .500)     )   )
    grani-synth
    (progn   (defparameter dur '(q h w d -q -h))   (defparameter amp '(pppp p pp f mp))      (with-sound (:reverb jc-reverb :reverb-channels 2)     (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-envelope '(0 0 .2 .2 .5 1 .8 .2 1 0))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grains 10)          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-start '(0 .1 .3 .1 1 .6)                  :amp-envelope '(0 1 1 1)                  :grain-density 8                  :grain-envelope '(0 0 .2 .2 .5 1 .8 .2 1 0)                  :grain-envelope-end '(0 0 .01 1 .99 1 1 0)                  :grain-envelope-transition '(0 0 .4 1 .8 0 1 0))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                   :grain-start '(0 0 1 1)                  :amp-envelope '(0 1 1 1)                  :grain-density 20                  :grain-duration '(0 .003 .2 .01 1 .3))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-start '(0 0 1 1)                   :amp-envelope '(0 1 1 1)                  :grain-density 20                  :grain-duration '(0 .003 .2 .01 1 .3)                  :grain-duration-limit .02)          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :amp-envelope '(0 1 1 1)                  :grain-density 40                  :grain-start '(0 .1 .3 .1 1 .6))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :amp-envelope '(0 1 1 1)                  :grain-density 40                  :grain-start '(0 .1 .3 .1 1 .6)                  :grain-start-spread .01)          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-start '(0 0 1 1)                  :grain-start-spread 0.01                  :amp-envelope '(0 1 1 1)                  :grain-density 40                  :srate '(0 0 .2 0 .6 5 1 5))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-start '(0 0 1 1)                  :grain-start-spread .01                  :amp-envelope '(0 1 1 1)                  :grain-density (rnd-sample 12 '(40 30 20))                  :srate-base 2                  :srate '(0 0 .2 0 .6 -1 1 -1))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-start '(0 0 1 1)                  :grain-start-spread .01                  :amp-envelope '(0 1 1 1)                  :grain-density (rnd-sample 12 '(40 30 20))                  :srate-linear t                  :srate (list 0 1 .2 1 .6 (expt 2 5/12) 1 (expt 2 5/12)))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-start '(0 0 1 1)                  :grain-start-spread .01                  :amp-envelope '(0 1 1 1)                  :grain-envelope '(0 0 .2 .2 .5 1 .8 .2 1 0)                  :grain-density (rnd-sample 12 '(40 30 20))                  :grain-duration '(0 .02 1 0.1)                   :grain-duration-spread '(0 0 .5 .1 1 0))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-start '(0 0 1 1)                  :grain-start-spread 0.01                  :amp-envelope '(0 1 1 1)                  :grain-density (rnd-sample 12 '(40 30 20))                  :grain-degree '(0 0 1 90)                  :grain-degree-spread 10)          (grani-synth (rnd-sample 12 dur)                   (rnd-sample 12 amp) "oboe"                  :grain-duration .06                  :grain-density 20                  :grain-density-spread 2                  :srate 0)          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-duration .08                  :grain-density (rnd-sample 12 '(40 30 20))                  :grain-density-spread 2                  :srate 5                    :grain-degree 0                  :grain-envelope '(0 0 .2 .2 .5 1 .8 .2 1 0)                  :grain-envelope-end '(0 0 .01 1 .99 1 1 0))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-duration .05                  :grain-density 35                  :grain-density-spread 3                  :srate -5                  :grain-degree 90                  :srate (list 0 1 .3 1 .3 (expt 2 5/12) 1 (expt 2 5/12))))   )
    piano-synth
    (progn   (setf frames1 (library 'marangona-partials 'partials nil :random 48))   (setf frames2 (library 'marangona-frames 'partials nil :random 48))   (setf par1 (remove-partial frames1 :type :freq :min 27.5 :max 4186))   (setf par2 (remove-partial frames2 :type :freq :min 27.5 :max 4186))      (defparameter freq1     (rnd-order      (gen-collect       (rnd-sample 24 '(3 5 6 7 8)) (partial :freq par1))))      (defparameter freq2     (rnd-order      (gen-collect       (rnd-sample 38  '(2 3 4)) (partial :freq par2))))      (with-sound (:reverb jc-reverb)     (piano-synth '(3e) (flatten freq1) '(.2 .3 .4)                  :bpm 72                  :drypedalresonancefactor .25                  :singlestringdecayrate-table                  '(21 -5 24.000 -5.000 36.000 -5.4                    41.953 -5.867 48.173 -7.113 53.818 -8.016                    59.693 -8.875 66.605 -9.434 73.056 -10.035                    78.931 -10.293 84.000 -12.185)                  :singlestringpole-table                  '(21 .8 24 0.7 36.000 .6 48 .5                    60 .3 84 .1 96 .03 108 .03)                  :stiffnesscoefficient-table                  '(21.000 -0.920 24.000 -0.900 36.000 -0.700                    48.000 -0.250 60.000 -0.100 75.179 -0.040                    82.986 -0.040 92.240 .3 96.000 .5                    99.000 .7 108.000 .7))     (piano-synth '(e) freq2 '(0.1 0.2 0.3)                  :bpm 72                  :drypedalresonancefactor .55                  :detuningfactor-table                  '(24 5 36 7.0 48 7.5 60 12.0 72                    20 84 30 96 100 108 300)))   )
    pvoc-synth
    (with-sound (:scaled-to .99)    (pvoc-synth (rnd-sample 12 '(q h e s w d -q -h))               '(pppp pp ppp f) "marangona"               :input-start 0               :input-end 12               :pitch-scaler (rnd-sample 12 '(.5 .1 .05 .8 .3 .16))               :pitch-offset (rnd-sample 20 '(20 100 200 300 440 150 730))               :pitch-offset-env '(0 0 20 0 50 100 70 100 80 0 100 0)               :pitch-scaler-env '(0 1 50 2 100 1)               :amp-env '(0 1 40 0 50 1 60 0 100 1)               :gate 70)   )
    singbowl-synth
    (progn   (defparameter size 120)   (defparameter partials (library 'marangona-partials 'partials nil :random 50))   (defparameter par (rnd-sample size (partial :freq (flatten partials))))   (defparameter freq (gen-divide (rnd-sample size '(2 3 4 5)) par))   (defparameter length (rnd-sample size '(w h q e)))   (defparameter velocity (rnd-number size .05 .43))      (defparameter env     '((0 0 40 .1000 60 .2000 75 .4000 82 1 90 1 100 0)       (0 0 60 .1000 80 .2000 90 .4000 95 1 100 0)       (0 0 10 1 16 0 32 .1000 50 1 56 0 60 0 90 .3000 100 0)       (0 0 30 1 56 0 60 0 90 .3000 100 0)       (0 0 50 1 80 .3000 100 0)       (0 0 40 .1000 60 .2000 75 .4000 82 1 90 1 100 0)       (0 0 10 1 32 .1000 50 1 90 .3000 100 0)       (0 0 60 .1000 80 .3000 95 1 100 0)       (0 0 80 .1000 90 1 100 0)))      (with-sound (:reverb jc-reverb :scaled-to .7 :output "ma-partials")     (singbowl-synth length freq velocity                     :amp-env (rnd-sample size env)                     :reverb-amount 0.30))   )
    fm-violin-synth
    (progn   (defparameter size 10)   (defparameter count 50)   (setf glc-v1         (gen-length-cartesian          1 3 'd '? 'w 3 (rnd-sample size '(13 11 10 8))          '(1 2 3 4 5)))      (setf glc-v2         (gen-length-cartesian          1 3 'd '? 'w 3 (rnd-sample size '(13 11 10 8))          '(1 2 3 4 5)))      (setf glc-va         (gen-length-cartesian          1 3 'd '? 'w 3 (rnd-sample size '(13 11 10 8))          '(1 2 3 4 5)))      (setf glc-vc         (gen-length-cartesian          1 3 'd '? 'w 3 (rnd-sample size '(13 11 10 8))          '(1 2 3 4 5)))      (setf gu-sq         (gen-unison (list glc-v1 glc-v2 glc-va glc-vc)))      (setf l-v1 (1~ gu-sq))   (setf l-v2 (2~ gu-sq))   (setf l-va (3~ gu-sq))   (setf l-vc (4~ gu-sq))      (setf l-max         (first          (sort-desc           (list (get-count l-v1 :length :note :sum t)                 (get-count l-v2 :length :note :sum t)                 (get-count l-va :length :note :sum t)                 (get-count l-vc :length :note :sum t)))))      (setf    intervals    '((0 7) (0 0) (11 5) (-4 5) (-5 5) (0 13) (-5 18)      (-36 13) (-13 13) (8) (-18 7) (-1 17) (-17 17)      (-26 13) (-27 23) (-19 19) (-23 23) (18) (0) (7)      (-14) (13) (-23 5) (-23 2) (-2 2) (6 2) (6 5)      (19) (-10) (-17 11) (-11 11) (-11 5) (-24 13)      (1 14) (-14 14) (-29 1) (-1 1) (7 0) (12 6)      (-21 7) (-7 7) (-18 0) (1 13) (0 1) (-14 13)      (-10 5) (-14 8) (0 6) (6) (-20 6) (-5 1) (17) (1)      (-17 5) (-1 5) (-10 16) (-12 8) (0 8) (1 11)      (-24 4) (-18 16) (-17) (-6 6) (-18 18) (-15 3)      (-6 31) (-2 5) (-29 6) (-6 13) (-13 6) (7 13)))      (setf pcount (gen-repeat 2 (get-count l-v1 :length :note)))   (setf gr (gen-repeat (length pcount) (list intervals)))   (setf gm-v1 (gen-markov gr :size pcount))   (setf gm-v2 (gen-markov gr :size pcount))   (setf gm-va (gen-markov gr :size pcount))   (setf gm-vc (gen-markov gr :size pcount))   (setf im-v1 (interval-map nil (append-sublist gm-v1)))   (setf im-v2 (interval-map nil (append-sublist gm-v2)))   (setf im-va (interval-map nil (append-sublist gm-va)))   (setf im-vc (interval-map nil (append-sublist gm-vc)))   (setf s-v1 (span l-v1 im-v1))   (setf s-v2 (span l-v2 im-v2))   (setf s-va (span l-va im-va))   (setf s-vc (span l-vc im-vc))   (setf ra-v1 (rnd-octaves 'violin s-v1))   (setf ra-v2 (rnd-octaves 'violin s-v2))   (setf ra-va (rnd-octaves 'viola  s-va))   (setf ra-vc (rnd-octaves 'cello  s-vc))   (setf p-v1 (ambitus 'violin ra-v1 :type :invert))   (setf p-v2 (ambitus 'violin ra-v2 :type :invert))   (setf p-va (ambitus 'viola ra-va :type :invert))   (setf p-vc (ambitus '(a2 c5) ra-vc :type :invert))   (setf weight '(29 19 8 8 17))   (setf vel '(0.07 0.1 0.15 0.2 0.25 0.35))   (setf v-v1 (gen-weight l-max (mapcar 'list vel weight)))   (setf v-v2 (gen-weight l-max (mapcar 'list vel weight)))   (setf v-va (gen-weight l-max (mapcar 'list vel weight)))   (setf v-vc (gen-weight l-max (mapcar 'list vel weight)))      (setf vln1 (make-omn :length l-v1 :pitch p-v1 :velocity v-v1))   (setf vln2 (make-omn :length l-v2 :pitch p-v2 :velocity v-v2))   (setf vla (make-omn :length l-va :pitch p-va :velocity v-va))   (setf vlc (make-omn :length l-vc :pitch p-vc :velocity v-vc))      (do-timeline    '(       vln1 (---x---x-- ---x-x-x-- --x--xx--- ---x------ x-)      vln2 (---x---x-- ---x---x-- --x--xx--- ---x------ x-)      vla  (---x---x-- ---x---x-- --x--xx--- ---x------ --)      vlc  (---x---x-- ---x---xx- --x--xx--- ---x------ --)      )    '(gen-pause x) :time '(h h. w))      (defparameter v1 vln1)   (defparameter v2 vln2)   (defparameter v3 vla)   (defparameter v4 vlc)   (defparameter env     '((0 0 40 .1000 60 .2000 75 .4000 82 1 90 1 100 0)       (0 0 60 .1000 80 .2000 90 .4000 95 1 100 0)       (0 0 10 1 16 0 32 .1000 50 1 56 0 60 0 90 .3000 100 0)       (0 0 30 1 56 0 60 0 90 .3000 100 0)       (0 0 50 1 80 .3000 100 0)       (0 0 40 .1000 60 .2000 75 .4000 82 1 90 1 100 0)       (0 0 10 1 32 .1000 50 1 90 .3000 100 0)       (0 0 60 .1000 80 .3000 95 1 100 0)       (0 0 80 .1000 90 1 100 0)))      (with-sound (:reverb jc-reverb :scaled-to .7)     (fm-violin-synth v1 v1 v1                      :bpm 30                      :degree (rnd-number count 45 85)                      :fm-index (rnd-number count 0.10 1.0)                      :reverb-amount 0.30                      :noise-amount (rnd-number count 0.00 0.004)                      :amp-env (rnd-sample count env)                      :glissando-amount (rnd-number count 0.00 0.8))          (fm-violin-synth v2 v2 v2                      :bpm 30                      :degree (rnd-number count 45 85)                      :fm-index (rnd-number count 0.03 1.0)                      :reverb-amount 0.30                      :noise-amount (rnd-number count 0.00 0.004)                      :amp-env (rnd-sample count env)                      :glissando-amount (rnd-number count 0.00 0.8))          (fm-violin-synth v3 v3 v3                      :bpm 30                      :degree (rnd-number count 45 85)                      :fm-index (rnd-number count 0.10 1.0)                      :reverb-amount 0.30                      :noise-amount (rnd-number count 0.00 0.004)                      :amp-env (rnd-sample count env)                      :glissando-amount (rnd-number count 0.00 0.8))          (fm-violin-synth v4 v4 v4                      :bpm 30                      :degree (rnd-number count 45 85)                      :fm-index (rnd-number count 0.70 1.0)                      :reverb-amount 0.30                      :noise-amount (rnd-number count 0.00 0.004)                      :amp-env (rnd-sample count env)                      :glissando-amount (rnd-number count 0.00 0.8)))   )
    scanned-synth
    (progn   (defparameter size 120)   (setf partials1 (library 'tbn-cs3-partials 'partials nil :random 64))   (setf partials2 (library 'tbn-cs3-partials 'partials nil :random 64))   (setf freq1 (rnd-sample size (partial :freq (flatten partials1))))   (setf freq2 (rnd-sample size (partial :freq (flatten partials2))))   (defparameter dur1 (rnd-sample size '(s s s s)))   (defparameter dur2 (rnd-sample size '(q e s s s -s)))   (defparameter amp1 (rnd-number size .005 .13))   (defparameter amp2 (rnd-number size .005 .13))   (defparameter waves '(1 2 3 4 5 6 7 8 9 10 11 12 13))      (with-sound (:reverb jc-reverb)     (scanned-synth      dur1 freq1 amp1      :wave (rnd-sample size waves) :bpm 96      :pts (rnd-sample size '(192 256 512)))          (scanned-synth      dur2 freq2 amp2      :wave (rnd-sample size waves) :bpm 96      :pts (rnd-sample size '(192 256 512)))     )   )
    circular-scanned-synth
    (progn   (defparameter size 24)   (setf partials1 (library 'tbn-cs3-partials 'partials nil :random 50))   (setf partials2 (library 'tbn-cs3-partials 'partials nil :random 50))   (setf par1 (rnd-sample size (partial :freq (flatten partials1))))   (setf par2 (rnd-sample size (partial :freq (flatten partials2))))   (defparameter dur1 (rnd-sample size '(1 2 3 4 5)))   (defparameter dur2 (rnd-sample size '(1 2 3 4 5)))   (defparameter freq1 (gen-divide (rnd-sample size '(2 3 4 5)) par1))   (defparameter freq2 (gen-divide (rnd-sample size '(2 3 4 5)) par2))   (defparameter amp1 (rnd-number size .05 .43))   (defparameter amp2 (rnd-number size .05 .43))   (defparameter env     '((0 0 40 .1000 60 .2000 75 1 90 1 100 0)       (0 0 60 .1000 80 .2000 90 1 100 0)       (0 0 10 1 16 0 32 .1000 50 1 100 0)       (0 0 30 1 56 0 60 0 90 .3000 100 0)       (0 0 50 1 80 .3000 100 0)       (0 0 40 .1000 60 .2000 82 1 100 0)       (0 0 10 1 32 .1000 50 1 100 0)       (0 0 60 .1000 80 .3000 95 1 100 0)       (0 0 80 .1000 90 1 100 0)))      (with-sound (:reverb jc-reverb)     (circular-scanned-synth      dur1 freq1 amp1      :wave (rnd-sample size '(1 2 3 4))      :recompute-samps (rnd-sample size '(14 222 32 162 211 72))      :pts (rnd-sample size '(192 256 512))      :cycles (rnd-sample size '(1 2 3))      :amp-env (rnd-sample size env))          (circular-scanned-synth      dur2 freq2 amp2      :wave (rnd-sample size '(1 2 3 4))      :recompute-samps (rnd-sample size '(14 222 32 162 211 72))      :pts (rnd-sample size '(192 256 512))      :cycles (rnd-sample size '(1 2 3))      :amp-env (rnd-sample size env))     )   )
    badd-synth
    (progn   (defparameter size 12)   (setf partials (library 'marangona-partials 'partials nil :random 64))   (setf mpar (remove-partial partials :type :freq :max 1800.0))   (setf par (partial :freq mpar))   (setf freq '(rnd-sample size (flatten par)))   (defparameter dur '(rnd-sample size '(1 2 3 4 5)))   (defparameter amp '(rnd-number size .12 .33))      (with-sound (:reverb jc-reverb)     (badd-synth (eval dur) (eval freq) (eval amp))     (badd-synth (eval dur) (eval freq) (eval amp))     (badd-synth (eval dur) (eval freq) (eval amp))     (badd-synth (eval dur) (eval freq) (eval amp))     (badd-synth (eval dur) (eval freq) (eval amp))     (badd-synth (eval dur) (eval freq) (eval amp))     )   )
    bandedwg-synth
    (progn   (setf row (library 'vienna 'berg 'r11))   (setf degree '(0 3 4 0 -2 -3 -1 0 -2))   (setf mat         (gen-eval 6 '(harmonic-progression                       (setf degree (gen-rotate 2 degree))                       row :relative t)))      (setf end1 (harmonic-progression '(-13 -13) row :relative t))   (setf end2 (harmonic-progression '(-12 -12) row :relative t))   (setf end3 (harmonic-progression '(-13 -13) row :relative t))   (setf end4 (harmonic-progression '(-12) row :relative t))      (defparameter omn (make-omn                      :length '((q) (-h))                      :pitch (assemble-seq mat end1 end2 end3 end4)                      :velocity '(mp)                      :span :pitch))      (with-sound (:reverb jc-reverb)     (bandedwg-synth omn omn omn :mode 1)     )   )  
    As you can see it is quite easy to use CLM in OM with OMN.
    More CLM instruments to come.
  15. Like
    opmo got a reaction from JulioHerrlein in Removing white spaces from a list ?   
    Done in version 1.3.24409.
  16. Thanks
    opmo got a reaction from hujairi in Opusmodus 1.3.24409   
    Whats new:
    —'Check for Updates...' menu in Opusmodus app menu (no more manual downloads). 🙂
    —New CLM instruments with omn-form plist input and documentation.
     
      badd-synth   bandedwg-synth   circular-scanned-synth   fm-bell-synth   fm-insect-synth   fm-violin-synth   grani-synth   piano-synth   pvoc-synth   scanner-synth   singbowl-synth
    —Additional _About documents for various function groups (Wikipedia).
     —CLM bug fixes.
     
    Installation:
    There are some changes to the Opusmodus user system folder and CLM implementation.
    Before opening the new application you need to delete the old Opusmodus folder.
    Make sure you save your personal files (scores, docs etc...) before. A good solution is to rename the Opusmodus folder first and then compress it.
    After you have deleted the Opusmodus user folder you can start the new application.
    At the start Opusmodus will ask you for permission to create a new user folder in your home directory, if you don’t see a window for it, it means the old folder is still on your computer. Make sure the new Opusmodus folder is installed in your home directory.
     
    Hopefully this is the last time we need to delete the previous Opusmodus user folder from the home directory.
     
    Best wishes,
    Janusz

    P.S. Few CLM examples from the "3.Howto Score/CLM/Sound Synthesis.opmo" file:

    fm-bell-synth
    (progn   (defparameter count 50)   (setf partials (library 'marangona-partials 'partials nil :random 20))   (setf par (rnd-sample count (partial :freq (flatten partials))))   (defparameter freq (gen-divide (rnd-sample count '(1 2 3 4 5)) par))   (defparameter dur (list (length-span 42 (rnd-sample count '(w h q w)))))      (do-timeline    '(dur (---xx--xx- ---xx---x- --x--xx--- ---x------ x----x---))    '(gen-pause x) :time '(w))      (defparameter vel (rnd-number count 0.05 0.43))   (defparameter dist (rnd-number count 0.5 1.0))   (defparameter env     '((0 0 40 .1000 60 .2000 75 .4000 82 1 90 1 100 0)       (0 0 60 .1000 80 .2000 90 .4000 95 1 100 0)       (0 0 10 1 16 0 32 .1000 50 1 56 0 60 0 90 .3000 100 0)       (0 0 30 1 56 0 60 0 90 .3000 100 0)       (0 0 50 1 80 .3000 100 0)       (0 0 40 .1000 60 .2000 75 .4000 82 1 90 1 100 0)       (0 0 10 1 32 .1000 50 1 90 .3000 100 0)       (0 0 60 .1000 80 .3000 95 1 100 0)       (0 0 80 .1000 90 1 100 0)))      (with-sound (:reverb jc-reverb :scaled-to .7)     (fm-bell-synth dur freq vel                    :amp-env (rnd-sample count env)                    :index-env (rnd-sample count env)                    :index (rnd-number count 0.3 0.9)                    :reverb-amount 0.30                    :distance dist))   )
    fm-insect-synth
    (progn   (defparameter par (library 'tbn-cs3-partials 'partials nil :random 12))   (defparameter dur '(rnd-sample 12 '(-q q. h -h. -w w. d -d.)))   (defparameter freq '(rnd-sample 12 (flatten (partial :freq par))))   (defparameter amp '(rnd-sample 12 '(pppp ppp p mp)))   (defparameter mod-freq-env '(0 0 40 1 95 1 100 .5))   (defparameter mod-index-env '(0 1 25 .7 75 .78 100 1))   (defparameter amp-env '(0 0 25 1 75 .7 100 0))   (defparameter fm-index '(rnd-number 12 .01 .6))   (defparameter mod-skew '(rnd-number 12 -20.0 -1.0))   (defparameter mod-freq '(rnd-number 12 20 60))      (with-sound '()     (fm-insect-synth (eval dur) (eval freq) (eval amp) amp-env                      (eval mod-freq) (eval mod-skew) mod-freq-env                      500.866 mod-index-env (eval fm-index) .500)          (fm-insect-synth (eval dur) (eval freq) (eval amp) amp-env                      (eval mod-freq) (eval mod-skew) mod-freq-env                      649.490 mod-index-env (eval fm-index) .500)          (fm-insect-synth (eval dur) (eval freq) (eval amp) amp-env                      (eval mod-freq) (eval mod-skew) mod-freq-env                      562.087 mod-index-env (eval fm-index) .500)          (fm-insect-synth (eval dur) (eval freq) (eval amp) amp-env                      (eval mod-freq) (eval mod-skew) mod-freq-env                      300.866 mod-index-env (eval fm-index) .500)     )   )
    grani-synth
    (progn   (defparameter dur '(q h w d -q -h))   (defparameter amp '(pppp p pp f mp))      (with-sound (:reverb jc-reverb :reverb-channels 2)     (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-envelope '(0 0 .2 .2 .5 1 .8 .2 1 0))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grains 10)          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-start '(0 .1 .3 .1 1 .6)                  :amp-envelope '(0 1 1 1)                  :grain-density 8                  :grain-envelope '(0 0 .2 .2 .5 1 .8 .2 1 0)                  :grain-envelope-end '(0 0 .01 1 .99 1 1 0)                  :grain-envelope-transition '(0 0 .4 1 .8 0 1 0))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                   :grain-start '(0 0 1 1)                  :amp-envelope '(0 1 1 1)                  :grain-density 20                  :grain-duration '(0 .003 .2 .01 1 .3))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-start '(0 0 1 1)                   :amp-envelope '(0 1 1 1)                  :grain-density 20                  :grain-duration '(0 .003 .2 .01 1 .3)                  :grain-duration-limit .02)          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :amp-envelope '(0 1 1 1)                  :grain-density 40                  :grain-start '(0 .1 .3 .1 1 .6))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :amp-envelope '(0 1 1 1)                  :grain-density 40                  :grain-start '(0 .1 .3 .1 1 .6)                  :grain-start-spread .01)          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-start '(0 0 1 1)                  :grain-start-spread 0.01                  :amp-envelope '(0 1 1 1)                  :grain-density 40                  :srate '(0 0 .2 0 .6 5 1 5))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-start '(0 0 1 1)                  :grain-start-spread .01                  :amp-envelope '(0 1 1 1)                  :grain-density (rnd-sample 12 '(40 30 20))                  :srate-base 2                  :srate '(0 0 .2 0 .6 -1 1 -1))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-start '(0 0 1 1)                  :grain-start-spread .01                  :amp-envelope '(0 1 1 1)                  :grain-density (rnd-sample 12 '(40 30 20))                  :srate-linear t                  :srate (list 0 1 .2 1 .6 (expt 2 5/12) 1 (expt 2 5/12)))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-start '(0 0 1 1)                  :grain-start-spread .01                  :amp-envelope '(0 1 1 1)                  :grain-envelope '(0 0 .2 .2 .5 1 .8 .2 1 0)                  :grain-density (rnd-sample 12 '(40 30 20))                  :grain-duration '(0 .02 1 0.1)                   :grain-duration-spread '(0 0 .5 .1 1 0))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-start '(0 0 1 1)                  :grain-start-spread 0.01                  :amp-envelope '(0 1 1 1)                  :grain-density (rnd-sample 12 '(40 30 20))                  :grain-degree '(0 0 1 90)                  :grain-degree-spread 10)          (grani-synth (rnd-sample 12 dur)                   (rnd-sample 12 amp) "oboe"                  :grain-duration .06                  :grain-density 20                  :grain-density-spread 2                  :srate 0)          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-duration .08                  :grain-density (rnd-sample 12 '(40 30 20))                  :grain-density-spread 2                  :srate 5                    :grain-degree 0                  :grain-envelope '(0 0 .2 .2 .5 1 .8 .2 1 0)                  :grain-envelope-end '(0 0 .01 1 .99 1 1 0))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-duration .05                  :grain-density 35                  :grain-density-spread 3                  :srate -5                  :grain-degree 90                  :srate (list 0 1 .3 1 .3 (expt 2 5/12) 1 (expt 2 5/12))))   )
    piano-synth
    (progn   (setf frames1 (library 'marangona-partials 'partials nil :random 48))   (setf frames2 (library 'marangona-frames 'partials nil :random 48))   (setf par1 (remove-partial frames1 :type :freq :min 27.5 :max 4186))   (setf par2 (remove-partial frames2 :type :freq :min 27.5 :max 4186))      (defparameter freq1     (rnd-order      (gen-collect       (rnd-sample 24 '(3 5 6 7 8)) (partial :freq par1))))      (defparameter freq2     (rnd-order      (gen-collect       (rnd-sample 38  '(2 3 4)) (partial :freq par2))))      (with-sound (:reverb jc-reverb)     (piano-synth '(3e) (flatten freq1) '(.2 .3 .4)                  :bpm 72                  :drypedalresonancefactor .25                  :singlestringdecayrate-table                  '(21 -5 24.000 -5.000 36.000 -5.4                    41.953 -5.867 48.173 -7.113 53.818 -8.016                    59.693 -8.875 66.605 -9.434 73.056 -10.035                    78.931 -10.293 84.000 -12.185)                  :singlestringpole-table                  '(21 .8 24 0.7 36.000 .6 48 .5                    60 .3 84 .1 96 .03 108 .03)                  :stiffnesscoefficient-table                  '(21.000 -0.920 24.000 -0.900 36.000 -0.700                    48.000 -0.250 60.000 -0.100 75.179 -0.040                    82.986 -0.040 92.240 .3 96.000 .5                    99.000 .7 108.000 .7))     (piano-synth '(e) freq2 '(0.1 0.2 0.3)                  :bpm 72                  :drypedalresonancefactor .55                  :detuningfactor-table                  '(24 5 36 7.0 48 7.5 60 12.0 72                    20 84 30 96 100 108 300)))   )
    pvoc-synth
    (with-sound (:scaled-to .99)    (pvoc-synth (rnd-sample 12 '(q h e s w d -q -h))               '(pppp pp ppp f) "marangona"               :input-start 0               :input-end 12               :pitch-scaler (rnd-sample 12 '(.5 .1 .05 .8 .3 .16))               :pitch-offset (rnd-sample 20 '(20 100 200 300 440 150 730))               :pitch-offset-env '(0 0 20 0 50 100 70 100 80 0 100 0)               :pitch-scaler-env '(0 1 50 2 100 1)               :amp-env '(0 1 40 0 50 1 60 0 100 1)               :gate 70)   )
    singbowl-synth
    (progn   (defparameter size 120)   (defparameter partials (library 'marangona-partials 'partials nil :random 50))   (defparameter par (rnd-sample size (partial :freq (flatten partials))))   (defparameter freq (gen-divide (rnd-sample size '(2 3 4 5)) par))   (defparameter length (rnd-sample size '(w h q e)))   (defparameter velocity (rnd-number size .05 .43))      (defparameter env     '((0 0 40 .1000 60 .2000 75 .4000 82 1 90 1 100 0)       (0 0 60 .1000 80 .2000 90 .4000 95 1 100 0)       (0 0 10 1 16 0 32 .1000 50 1 56 0 60 0 90 .3000 100 0)       (0 0 30 1 56 0 60 0 90 .3000 100 0)       (0 0 50 1 80 .3000 100 0)       (0 0 40 .1000 60 .2000 75 .4000 82 1 90 1 100 0)       (0 0 10 1 32 .1000 50 1 90 .3000 100 0)       (0 0 60 .1000 80 .3000 95 1 100 0)       (0 0 80 .1000 90 1 100 0)))      (with-sound (:reverb jc-reverb :scaled-to .7 :output "ma-partials")     (singbowl-synth length freq velocity                     :amp-env (rnd-sample size env)                     :reverb-amount 0.30))   )
    fm-violin-synth
    (progn   (defparameter size 10)   (defparameter count 50)   (setf glc-v1         (gen-length-cartesian          1 3 'd '? 'w 3 (rnd-sample size '(13 11 10 8))          '(1 2 3 4 5)))      (setf glc-v2         (gen-length-cartesian          1 3 'd '? 'w 3 (rnd-sample size '(13 11 10 8))          '(1 2 3 4 5)))      (setf glc-va         (gen-length-cartesian          1 3 'd '? 'w 3 (rnd-sample size '(13 11 10 8))          '(1 2 3 4 5)))      (setf glc-vc         (gen-length-cartesian          1 3 'd '? 'w 3 (rnd-sample size '(13 11 10 8))          '(1 2 3 4 5)))      (setf gu-sq         (gen-unison (list glc-v1 glc-v2 glc-va glc-vc)))      (setf l-v1 (1~ gu-sq))   (setf l-v2 (2~ gu-sq))   (setf l-va (3~ gu-sq))   (setf l-vc (4~ gu-sq))      (setf l-max         (first          (sort-desc           (list (get-count l-v1 :length :note :sum t)                 (get-count l-v2 :length :note :sum t)                 (get-count l-va :length :note :sum t)                 (get-count l-vc :length :note :sum t)))))      (setf    intervals    '((0 7) (0 0) (11 5) (-4 5) (-5 5) (0 13) (-5 18)      (-36 13) (-13 13) (8) (-18 7) (-1 17) (-17 17)      (-26 13) (-27 23) (-19 19) (-23 23) (18) (0) (7)      (-14) (13) (-23 5) (-23 2) (-2 2) (6 2) (6 5)      (19) (-10) (-17 11) (-11 11) (-11 5) (-24 13)      (1 14) (-14 14) (-29 1) (-1 1) (7 0) (12 6)      (-21 7) (-7 7) (-18 0) (1 13) (0 1) (-14 13)      (-10 5) (-14 8) (0 6) (6) (-20 6) (-5 1) (17) (1)      (-17 5) (-1 5) (-10 16) (-12 8) (0 8) (1 11)      (-24 4) (-18 16) (-17) (-6 6) (-18 18) (-15 3)      (-6 31) (-2 5) (-29 6) (-6 13) (-13 6) (7 13)))      (setf pcount (gen-repeat 2 (get-count l-v1 :length :note)))   (setf gr (gen-repeat (length pcount) (list intervals)))   (setf gm-v1 (gen-markov gr :size pcount))   (setf gm-v2 (gen-markov gr :size pcount))   (setf gm-va (gen-markov gr :size pcount))   (setf gm-vc (gen-markov gr :size pcount))   (setf im-v1 (interval-map nil (append-sublist gm-v1)))   (setf im-v2 (interval-map nil (append-sublist gm-v2)))   (setf im-va (interval-map nil (append-sublist gm-va)))   (setf im-vc (interval-map nil (append-sublist gm-vc)))   (setf s-v1 (span l-v1 im-v1))   (setf s-v2 (span l-v2 im-v2))   (setf s-va (span l-va im-va))   (setf s-vc (span l-vc im-vc))   (setf ra-v1 (rnd-octaves 'violin s-v1))   (setf ra-v2 (rnd-octaves 'violin s-v2))   (setf ra-va (rnd-octaves 'viola  s-va))   (setf ra-vc (rnd-octaves 'cello  s-vc))   (setf p-v1 (ambitus 'violin ra-v1 :type :invert))   (setf p-v2 (ambitus 'violin ra-v2 :type :invert))   (setf p-va (ambitus 'viola ra-va :type :invert))   (setf p-vc (ambitus '(a2 c5) ra-vc :type :invert))   (setf weight '(29 19 8 8 17))   (setf vel '(0.07 0.1 0.15 0.2 0.25 0.35))   (setf v-v1 (gen-weight l-max (mapcar 'list vel weight)))   (setf v-v2 (gen-weight l-max (mapcar 'list vel weight)))   (setf v-va (gen-weight l-max (mapcar 'list vel weight)))   (setf v-vc (gen-weight l-max (mapcar 'list vel weight)))      (setf vln1 (make-omn :length l-v1 :pitch p-v1 :velocity v-v1))   (setf vln2 (make-omn :length l-v2 :pitch p-v2 :velocity v-v2))   (setf vla (make-omn :length l-va :pitch p-va :velocity v-va))   (setf vlc (make-omn :length l-vc :pitch p-vc :velocity v-vc))      (do-timeline    '(       vln1 (---x---x-- ---x-x-x-- --x--xx--- ---x------ x-)      vln2 (---x---x-- ---x---x-- --x--xx--- ---x------ x-)      vla  (---x---x-- ---x---x-- --x--xx--- ---x------ --)      vlc  (---x---x-- ---x---xx- --x--xx--- ---x------ --)      )    '(gen-pause x) :time '(h h. w))      (defparameter v1 vln1)   (defparameter v2 vln2)   (defparameter v3 vla)   (defparameter v4 vlc)   (defparameter env     '((0 0 40 .1000 60 .2000 75 .4000 82 1 90 1 100 0)       (0 0 60 .1000 80 .2000 90 .4000 95 1 100 0)       (0 0 10 1 16 0 32 .1000 50 1 56 0 60 0 90 .3000 100 0)       (0 0 30 1 56 0 60 0 90 .3000 100 0)       (0 0 50 1 80 .3000 100 0)       (0 0 40 .1000 60 .2000 75 .4000 82 1 90 1 100 0)       (0 0 10 1 32 .1000 50 1 90 .3000 100 0)       (0 0 60 .1000 80 .3000 95 1 100 0)       (0 0 80 .1000 90 1 100 0)))      (with-sound (:reverb jc-reverb :scaled-to .7)     (fm-violin-synth v1 v1 v1                      :bpm 30                      :degree (rnd-number count 45 85)                      :fm-index (rnd-number count 0.10 1.0)                      :reverb-amount 0.30                      :noise-amount (rnd-number count 0.00 0.004)                      :amp-env (rnd-sample count env)                      :glissando-amount (rnd-number count 0.00 0.8))          (fm-violin-synth v2 v2 v2                      :bpm 30                      :degree (rnd-number count 45 85)                      :fm-index (rnd-number count 0.03 1.0)                      :reverb-amount 0.30                      :noise-amount (rnd-number count 0.00 0.004)                      :amp-env (rnd-sample count env)                      :glissando-amount (rnd-number count 0.00 0.8))          (fm-violin-synth v3 v3 v3                      :bpm 30                      :degree (rnd-number count 45 85)                      :fm-index (rnd-number count 0.10 1.0)                      :reverb-amount 0.30                      :noise-amount (rnd-number count 0.00 0.004)                      :amp-env (rnd-sample count env)                      :glissando-amount (rnd-number count 0.00 0.8))          (fm-violin-synth v4 v4 v4                      :bpm 30                      :degree (rnd-number count 45 85)                      :fm-index (rnd-number count 0.70 1.0)                      :reverb-amount 0.30                      :noise-amount (rnd-number count 0.00 0.004)                      :amp-env (rnd-sample count env)                      :glissando-amount (rnd-number count 0.00 0.8)))   )
    scanned-synth
    (progn   (defparameter size 120)   (setf partials1 (library 'tbn-cs3-partials 'partials nil :random 64))   (setf partials2 (library 'tbn-cs3-partials 'partials nil :random 64))   (setf freq1 (rnd-sample size (partial :freq (flatten partials1))))   (setf freq2 (rnd-sample size (partial :freq (flatten partials2))))   (defparameter dur1 (rnd-sample size '(s s s s)))   (defparameter dur2 (rnd-sample size '(q e s s s -s)))   (defparameter amp1 (rnd-number size .005 .13))   (defparameter amp2 (rnd-number size .005 .13))   (defparameter waves '(1 2 3 4 5 6 7 8 9 10 11 12 13))      (with-sound (:reverb jc-reverb)     (scanned-synth      dur1 freq1 amp1      :wave (rnd-sample size waves) :bpm 96      :pts (rnd-sample size '(192 256 512)))          (scanned-synth      dur2 freq2 amp2      :wave (rnd-sample size waves) :bpm 96      :pts (rnd-sample size '(192 256 512)))     )   )
    circular-scanned-synth
    (progn   (defparameter size 24)   (setf partials1 (library 'tbn-cs3-partials 'partials nil :random 50))   (setf partials2 (library 'tbn-cs3-partials 'partials nil :random 50))   (setf par1 (rnd-sample size (partial :freq (flatten partials1))))   (setf par2 (rnd-sample size (partial :freq (flatten partials2))))   (defparameter dur1 (rnd-sample size '(1 2 3 4 5)))   (defparameter dur2 (rnd-sample size '(1 2 3 4 5)))   (defparameter freq1 (gen-divide (rnd-sample size '(2 3 4 5)) par1))   (defparameter freq2 (gen-divide (rnd-sample size '(2 3 4 5)) par2))   (defparameter amp1 (rnd-number size .05 .43))   (defparameter amp2 (rnd-number size .05 .43))   (defparameter env     '((0 0 40 .1000 60 .2000 75 1 90 1 100 0)       (0 0 60 .1000 80 .2000 90 1 100 0)       (0 0 10 1 16 0 32 .1000 50 1 100 0)       (0 0 30 1 56 0 60 0 90 .3000 100 0)       (0 0 50 1 80 .3000 100 0)       (0 0 40 .1000 60 .2000 82 1 100 0)       (0 0 10 1 32 .1000 50 1 100 0)       (0 0 60 .1000 80 .3000 95 1 100 0)       (0 0 80 .1000 90 1 100 0)))      (with-sound (:reverb jc-reverb)     (circular-scanned-synth      dur1 freq1 amp1      :wave (rnd-sample size '(1 2 3 4))      :recompute-samps (rnd-sample size '(14 222 32 162 211 72))      :pts (rnd-sample size '(192 256 512))      :cycles (rnd-sample size '(1 2 3))      :amp-env (rnd-sample size env))          (circular-scanned-synth      dur2 freq2 amp2      :wave (rnd-sample size '(1 2 3 4))      :recompute-samps (rnd-sample size '(14 222 32 162 211 72))      :pts (rnd-sample size '(192 256 512))      :cycles (rnd-sample size '(1 2 3))      :amp-env (rnd-sample size env))     )   )
    badd-synth
    (progn   (defparameter size 12)   (setf partials (library 'marangona-partials 'partials nil :random 64))   (setf mpar (remove-partial partials :type :freq :max 1800.0))   (setf par (partial :freq mpar))   (setf freq '(rnd-sample size (flatten par)))   (defparameter dur '(rnd-sample size '(1 2 3 4 5)))   (defparameter amp '(rnd-number size .12 .33))      (with-sound (:reverb jc-reverb)     (badd-synth (eval dur) (eval freq) (eval amp))     (badd-synth (eval dur) (eval freq) (eval amp))     (badd-synth (eval dur) (eval freq) (eval amp))     (badd-synth (eval dur) (eval freq) (eval amp))     (badd-synth (eval dur) (eval freq) (eval amp))     (badd-synth (eval dur) (eval freq) (eval amp))     )   )
    bandedwg-synth
    (progn   (setf row (library 'vienna 'berg 'r11))   (setf degree '(0 3 4 0 -2 -3 -1 0 -2))   (setf mat         (gen-eval 6 '(harmonic-progression                       (setf degree (gen-rotate 2 degree))                       row :relative t)))      (setf end1 (harmonic-progression '(-13 -13) row :relative t))   (setf end2 (harmonic-progression '(-12 -12) row :relative t))   (setf end3 (harmonic-progression '(-13 -13) row :relative t))   (setf end4 (harmonic-progression '(-12) row :relative t))      (defparameter omn (make-omn                      :length '((q) (-h))                      :pitch (assemble-seq mat end1 end2 end3 end4)                      :velocity '(mp)                      :span :pitch))      (with-sound (:reverb jc-reverb)     (bandedwg-synth omn omn omn :mode 1)     )   )  
    As you can see it is quite easy to use CLM in OM with OMN.
    More CLM instruments to come.
  17. Thanks
    opmo got a reaction from JulioHerrlein in Removing white spaces from a list ?   
    This is how all functions work - with span or trim build in. 🙂
  18. Thanks
    opmo got a reaction from JulioHerrlein in Removing white spaces from a list ?   
    I will make the octave-map function work with octaves numbers as well.
    (octave-map '(c3 cs3 e5 f5 fs6 g5 gs4 a4 as3 b3) '(c3 d3 e3 f3 g4 f4 e4 d4 c4 cs4)) => (c3 d3 e5 f5 g6 f5 e4 d4 c3 cs3) (octave-map '(3 3 5 5 6 5 4 4 3 3) '(c3 d3 e3 f3 g4 f4 e4 d4 c4 cs4)) => (c3 d3 e5 f5 g6 f5 e4 d4 c3 cs3)  
  19. Like
    opmo got a reaction from lviklund in Music xml import, convert to Score?   
    At the moment you can't convert musicxml file into omn score.
    But it is in our TODO list.
  20. Like
    opmo got a reaction from torstenanders in Music xml import, convert to Score?   
    At the moment you can't convert musicxml file into omn score.
    But it is in our TODO list.
  21. Like
    opmo got a reaction from marqrdt in Variations on Variations (2019)   
    Variations on "Webern Variationen Fuer Klavier Op.27, I" (2019) by JP
     
       
     
     
    Instrument: VSL Steinway D
  22. Like
    opmo got a reaction from RST in Variations on Variations (2019)   
    It is a new function which generate a variations of a given score or section. The function has around 20 keywords and is not yet ready for release.
  23. Thanks
    opmo got a reaction from JulioHerrlein in Request: make-omn   
    I have some idea how we could do that - possibly next week.
  24. Thanks
    opmo reacted to Stephane Boussuge in Pluton for Orchestra   
    In memoriam Narcis Bonet who was one of my teachers.
     

    Opusmodus score attached.
    SB.
    PlutonV1-02.opmo
  25. Like
    opmo got a reaction from RST in Variations on Variations (2019)   
    Variations on "Webern Variationen Fuer Klavier Op.27, I" (2019) by JP
     
       
     
     
    Instrument: VSL Steinway D
×
×
  • Create New...

Important Information

Terms of Use Privacy Policy