Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation since 12/22/2018 in all areas

  1. 7 points
    opmo

    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.
  2. 6 points
    opmo

    Variations on Variations (2019)

    Variations on "Webern Variationen Fuer Klavier Op.27, I" (2019) by JP Instrument: VSL Steinway D
  3. 5 points
    opmo

    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
  4. 4 points
    opmo

    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.
  5. 4 points
    Stephane Boussuge

    Pluton for Orchestra

    In memoriam Narcis Bonet who was one of my teachers. Opusmodus score attached. SB. PlutonV1-02.opmo
  6. 2 points
    opmo

    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.
  7. 2 points
    torstenanders

    Request: make-omn

    > Sometimes is interesting for hearing snippets with different sounds without having to compile the entire score My Opmo score data structure already allows for that, though you always have to render snippets with an explicit function call, as we cannot define custom shortcuts so far. It is part of my tools at https://github.com/tanders/tot. Check out the function preview-score (https://tanders.github.io/tot/sources/score.html#_g232191). Various other functions allow to transform polyphonic score snippets for one or more instruments in various ways. Best, Torsten
  8. 2 points
    opmo

    Opusmodus 1.3 crashing

    Dear Timothy, Lets delete some folders and files from the Library folder. 1. Quit app. 2. Go to Library/Preferences folder and delete the com.opusmodus.Opusmodus.plist file: 3. Go to Library/Caches folder and delete the com.opusmodus.Opusmodus folder: 4. Start Opusmodus app 5. Create a new workspace Let me know if the app is still crashing. best, Janusz P.S. To play with the CLM please use the CLM.opmo file which you find in the Library panel '3. HowTo Score/Sound Synthesis' folder: As well the 3 files in '5. Sound Synthesis' folder: The CLM folder should not be used. There are some clm instruments which may course crash. With the time we will add more clm instruments with OMN form.
  9. 1 point
    Done in version 1.3.24409.
  10. 1 point
    This is how all functions work - with span or trim build in. 🙂
  11. 1 point
    Personally, i like very much to use the loop macro facilities, much clear and easy for me than recursion. Also, I am a big fan of it because it is very powerful. SB.
  12. 1 point
    i know, LOOPS are not very LISPian! but for me the most simple way "to think such processes" (more intuitive then recursion/iteration). and when the function/code is not to large it's not that important...
  13. 1 point
    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)
  14. 1 point
    (loop for i in (gen-divide 2 '(c 4 d 5 e 3 c 6 eb 4)) collect (compress i)) => (c4 d5 e3 c6 eb4) i didn't read you posts precisely. only the last ONE ...but you could use COMPRESS...?
  15. 1 point
    opmo

    Request: make-omn

    I have some idea how we could do that - possibly next week.
  16. 1 point
    Deb76

    Request: make-omn

    Dear Julio Thank you for your reply, but that's not what I want. I know the integer-to-pitch function well, I use it in my musical analysis with the tools of the Set Theory. And precisely, at my request, in order to be able to add the notation mod12 on a partition, Janusz created the insertion of integers via num0 ... num11. What I want is for make-omn to recognize the num parameter, either directly or by being able to add to :length, :pitch, :articulation, :velocity, the parameter :num or other name. I made an example from a row extracted from the Library Vienna. By adding in the series the notation in integers with the parameter num one realizes that this notation does not appear in the score from make-omn : (setf dur (gen-repeat 12 'q) ) (setf op29webernLib (expand-libraries '(library vienna webern r19))) (setf op29webernNumMO '(ds4 num3 b4 num11 d4 num2 cs4 num1 f4 num5 e4 num4 g4 num7 fs4 num6 as4 num10 a4 num9 c4 num0 gs4 num8)) (setf webernop29_OMN (make-omn :length dur :pitch op29webernNumMO )) Unlike the notation as follows: (setf op29webernNum1 '(q ds4 num3 b4 num11 d4 num2 cs4 num1 f4 num5 e4 num4 g4 num7 fs4 num6 as4 num10 a4 num9 c4 num0 gs4 num8)) Best. Didier Stéphane bonsoir, Réponses croisées. Merci. Je n'avais pas pensé à l'intégrer en tant qu'articulation. Merci donc. Et je viens de vérifier en ajoutant aussi des articulations (num0+marc, num11+stacc...) ça fonctionne. C'est impeccable. Cross responses. Thank you. I had not thought of integrating it as an articulation. Thank you so. And I just checked by adding also joints (num0 + marc, num11 + stacc ...) it works. It's impeccable. Best. Didier
  17. 1 point
    Opusmodus offer a powerful way for inputting notes into Sibelius. Here's a "how to", presenting some possible ways of use.
  18. 1 point
    Deb76

    Opusmodus 1.3 crashing

    Hello, The update was carried out without problem following the instructions in particular by deleting the file Opusmodus in Documents. The upgrade has been installed on the Mojave OS 10.14.2. and it runs without any problem.I particularly appreciate in this new version the functions circle-pitch-plot, circle-rhythm-plot, xy-plot, and the pcs-rhythm. Very useful tools for musical analysis. The ivory background for rendering the scores is very nice too. Best, Didier
  19. 1 point
    Since some time we are working on implementing Bill's Schottstaedt 'Synthesis package CLM' into Opusmodus. As expected we make the CLM working with OMN form sequence or with single parameters - example below. The score is using partials from The Bells of the Campanile: La Marangona. Below you will find an audio file of the score which is rendered each time you make evaluation. Best wishes to all, Janusz ;; --------------------------------------------------------- ;; MARANGONA ;; --------------------------------------------------------- ;; Parameters (defparameter count 50) (setf partials1 (library 'marangona-partials 'partials nil :random 50)) (setf partials2 (library 'marangona-partials 'partials nil :random 50)) (setf partials3 (library 'marangona-partials 'partials nil :random 50)) (setf partials4 (library 'marangona-partials 'partials nil :random 50)) (setf par1 (rnd-sample count (partial :freq (flatten partials1)))) (setf par2 (rnd-sample count (partial :freq (flatten partials2)))) (setf par3 (rnd-sample count (partial :freq (flatten partials3)))) (setf par4 (rnd-sample count (partial :freq (flatten partials4)))) (defparameter freq1 (gen-divide (rnd-sample count '(2 3 4 5)) par1)) (defparameter freq2 (gen-divide (rnd-sample count '(1 2 3 4 5)) par2)) (defparameter freq3 (gen-divide (rnd-sample count '(1 2 3 1 4 5)) par3)) (defparameter freq4 (gen-divide (rnd-sample count '(1 2 3 1 4 5)) par3)) (defparameter len1 (list (length-span 42 (rnd-sample count '(w h q w))))) (defparameter len2 (list (length-span 42 (rnd-sample count '(d h h))))) (defparameter len3 (list (length-span 42 (rnd-sample count '(h. w q))))) (defparameter len4 (list (length-span 42 (rnd-sample count '(d d h))))) (do-timeline '( len1 (---xxx-xx- ---xxx---- --x--xx--- ---x------ x-) len2 (---xxx-xx- ---xx-x--- --x--xx--- ---x------ x-) len3 (---xxx-xx- ---xx--x-- --x--xx--- ---x------ --) len4 (---xxx-xx- ---xx---x- --x--xx--- ---x------ --) ) '(gen-pause x) :time '(w)) (defparameter dur1 (omn :length (flatten len1))) (defparameter dur2 (omn :length (flatten len2))) (defparameter dur3 (omn :length (flatten len3))) (defparameter dur4 (omn :length (flatten len4))) (defparameter amp1 (rnd-number count 0.05 0.43)) (defparameter amp2 (rnd-number count 0.05 0.43)) (defparameter amp3 (rnd-number count 0.05 0.43)) (defparameter amp4 (rnd-number count 0.05 0.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))) ;; --------------------------------------------------------- ;; Score (with-sound (:play nil :reverb jc-reverb :scaled-to .7 :statistics t :channels 2 :output "marangona-series") (fmviolin-synth dur1 freq1 amp1 :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) :fm1-rat (rnd-number count 0.00 6.718) :fm2-rat (rnd-number count 0.00 4.414) :fm3-rat (rnd-number count 0.00 1.141) :glissando-amount (rnd-number count 0.00 0.8) ) (fmviolin-synth dur2 freq2 amp2 :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) :fm1-rat (rnd-number count 0.00 4.718) :fm2-rat (rnd-number count 0.00 6.414) :fm3-rat (rnd-number count 0.00 1.141) :glissando-amount (rnd-number count 0.00 0.8) ) (fmviolin-synth dur3 freq3 amp3 :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) :fm1-rat (rnd-number count 0.00 1.718) :fm2-rat (rnd-number count 0.00 4.414) :fm3-rat (rnd-number count 0.00 6.141) :glissando-amount (rnd-number count 0.00 0.8) ) (fmviolin-synth dur4 freq4 amp4 :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) :fm1-rat (rnd-number count 0.00 4.718) :fm2-rat (rnd-number count 0.00 6.414) :fm3-rat (rnd-number count 0.00 1.141) :glissando-amount (rnd-number count 0.00 0.8) ) ) Score with omn-form sequence: (with-sound (:play nil :channels 2 :reverb jc-reverb :scaled-to .6 :statistics t :output "quartet") (fmviolin-omn vn1 :reverb-amount 0.20 :bpm 44) (fmviolin-omn vn2 :reverb-amount 0.20 :bpm 44) (fmviolin-omn va :reverb-amount 0.20 :bpm 44) (fmviolin-omn vc :reverb-amount 0.20 :bpm 44) )
  20. 1 point
    Stephane Boussuge

    Brin d'Or

    Here's a short piece for violin solo and Strings ensemble with Fibonacci based harmony. Full score attached to this post fully commented but in French 🙂 SB. BrinD'or-V04.opmo
  21. 1 point
    Dear All, HAPPY 2018 !! With the new PCS organization in Opusmodus is possible to implement a concept of my book, called Combinatorial Voiceleading of Hexachords. From a Hexachord Set, is possible to find 10 different ways to combine the notes in the for of voice-leading sets. Each hexachord is divided in (3 + 3) way. This expression: (setf hexavl (mclist (chordize-list (integer-to-pitch (remove-duplicates (sort-asc (gen-divide 3 (flatten (permute (pcs '6-32))))) :test #'equal))))) Will result in this combination of the 6-32 hexachord, similar to the idea in the book. In the book, the material is organized in 70 pages of melodic and harmonic exercises. Here is a litte sample: CH_HERRLEIN.pdf The entire book: https://www.melbay.com/Products/Default.aspx?bookid=30042BCDEB Best ! Julio Herrlein
  22. 1 point
    rme

    using Emacs and SLIME with Opusmodus

    If you want to use Emacs and SLIME with Opusmodus, that is possible. Here are steps that work: If you haven't already done so, install Quicklisp. Evaluate (ql:quickload "quicklisp-slime-helper"). Follow its instructions and put (load (expand-file-name "~/quicklisp/slime-helper.el")) into your ~/.emacs file. Start Opusmodus, and evaluate (cl-user::start-swank). This should print something like ";; Swank started at port: 4005". Now, start your Emacs. Type M-x slime-connect and you'll be prompted for a host (use the default, which is 127.0.0.1) and then a port. The port needs to match the port (default 4005) that was printed out earlier. You are now connected to Opusmodus. You should be able to say stuff like (list-plot '(1 2 3)) from the SLIME repl and have it work. The function cl-user::start-swank basically does (load "home:quicklisp;setup") and then (ql:quickload :swank) and then (swank:create-server :port 4005 :dont-close t), so there's no magic going on there. If you run into trouble, let me know and I'll try to help out.
  23. 1 point
    opmo

    Opusmodus 1.2.21330

    MIDI controller function: gen-dynamic-controller omn-sequence &key scale loop [Function] Arguments and Values: omn-sequence omn-form sequence. scale a floating point number from 0.1 to 2.0. The default is 1.0. loop Nil or T. The T (true) will loop the scale list to the count of the lists in the sequence. The default is Nil. Description: The GEN-DYNAMIC-CONTROLLER function generates controller values from the omn-sequence dynamic symbols. (setf omn '((h. eb4 pp tasto q g3 0<pp>0 ponte) (-e) (q gs4 fp tasto) (-s) (q a5 ffp) (-e) (q bb4 fffp) (-s) (q cs5 pf) (-s q. e5 fp -e.) (q cs5 p h. d5 pfp) (-q h. c5 pp) (h. gs3 0<ppp>0 ponte -e a4 p< tasto) (h. fs5 mp q bb3 0<pp>0 ponte) (q c5 p tasto h. e4 pfp) (-e) (q cs4 fp h d5 pp>pppp) (h. f4 pp>pppp))) (gen-dynamic-controller omn) => ((36 3/4) (:asc-desc 0 36 1/256 1/4) (0 1/8) (80 1/64) (:desc 30 25 1/256 15/64) (0 1/16) (91 1/64) (:desc 47 25 1/256 15/64) (0 1/8) (102 1/64) (:desc 56 25 1/256 15/64) (0 1/16) (25 1/64) (:asc 30 80 1/256 15/64) (0 1/16) (80 1/64) (:desc 30 25 1/256 23/64) (0 3/16) (47 1/4) (:asc-desc 23 80 1/256 3/4) (0 1/4) (36 3/4) (:asc-desc 0 25 1/256 3/4) (0 1/8) (:asc 47 58 1/256 1/8) (58 3/4) (:asc-desc 0 36 1/256 1/4) (47 1/4) (:asc-desc 23 80 1/256 3/4) (0 1/8) (80 1/64) (:desc 30 25 1/256 15/64) (:desc 36 14 1/256 1/2) (:desc 36 14 1/256 3/4)) This is the notation of the sequence, see above: Audio: Virtual Instrument: VSL: Violin Solo. The dynamic controller values are sent to CC11: Expression Examples: To scale up the controller values we set the :scale value higher than 1.0. To scale down the controller values we set the :scale value lower than 1.0. Here the scale value is 1.2: (gen-dynamic-controller omn :scale 1.2) => ((43 3/4) (:asc-desc 0 43 1/256 1/4) (0 1/8) (96 1/64) (:desc 36 30 1/256 15/64) (0 1/16) (109 1/64) (:desc 56 30 1/256 15/64) (0 1/8) (122 1/64) (:desc 67 30 1/256 15/64) (0 1/16) (30 1/64) (:asc 36 96 1/256 15/64) (0 1/16) (96 1/64) (:desc 36 30 1/256 23/64) (0 3/16) (56 1/4) (:asc-desc 24 96 1/256 3/4) (0 1/4) (43 3/4) (:asc-desc 0 30 1/256 3/4) (0 1/8) (:asc 56 70 1/256 1/8) (70 3/4) (:asc-desc 0 43 1/256 1/4) (56 1/4) (:asc-desc 24 96 1/256 3/4) (0 1/8) (96 1/64) (:desc 36 30 1/256 15/64) (:desc 43 17 1/256 1/2) (:desc 43 17 1/256 3/4)) To add more control to the dynamic of the sequence we can set each bar (a list) with their own scale value. In the example below the 4th value 1.0 will stay for all of the remaining bars (lists). (gen-dynamic-controller omn :scale '(1.0 1.1 1.2 1.0)) Adding loop to the scale keyword we are looping the scale values to the count of the lists in the sequence: (gen-dynamic-controller omn :scale '(1.0 1.1 1.2 1.0) :loop t) ;;;--------------------------------------------------------- ;;; SCORE EXAMPLE ;;;--------------------------------------------------------- It is important to use the same omn-sequence data that you are using in the DEF-SCORE instrument instance. (setf omn '((h. eb4 pp tasto q g3 0<pp>0 ponte) (-e) (q gs4 fp tasto) (-s) (q a5 ffp) (-e) (q bb4 fffp) (-s) (q cs5 pf) (-s q. e5 fp -e.) (q cs5 p h. d5 pfp) (-q h. c5 pp) (h. gs3 0<ppp>0 ponte -e a4 p< tasto) (h. fs5 mp q bb3 0<pp>0 ponte) (q c5 p tasto h. e4 pfp) (-e) (q cs4 fp h d5 pp>pppp) (h. f4 pp>pppp))) GM sound set: (def-score dynamic (:key-signature 'chromatic :time-signature (get-time-signature omn) :tempo 32 :layout (violin-layout 'vln)) (vln :omn omn :channel 1 :sound 'gm :volume 127 :program 'violin :controllers (11 (gen-dynamic-controller omn))) ) VSL sound set: (def-score dynamic (:key-signature 'chromatic :time-signature (get-time-signature omn) :tempo 32 :layout (violin-layout 'vln)) (vln :omn omn :port 0 :channel 1 :sound 'vsl-violin-solo :volume 127 :controllers (11 (gen-dynamic-controller omn))) ) --- best wishes, Janusz
×