Jump to content

opmo

Administrators
  • Posts

    2,869
  • Joined

  • Last visited

Reputation Activity

  1. Like
    opmo reacted to AM in OSC to PolytempoNetwork   
    just a snippet... how i/you can use OPMO for some other things (TIME LAPS test mode, just to see if my code is working correctly). 
    i like the openness of the system.
     

    Bildschirmaufnahme 2023-08-30 um 23.09.15.mov    
  2. Like
    opmo reacted to AM in I asked chatGPT to write a Bach chorale for Opusmodus   
    okay, then i will try again 😁
  3. Like
    opmo reacted to AM in How do I reference multiple variables?   
    Practical Common Lisp
    GIGAMONKEYS.COM
  4. Like
    opmo got a reaction from Veit in Irrational tuplet pieces   
    The bug is fixed in ver. 3.0.29059
    Thank you for the report.
  5. Thanks
    opmo reacted to AM in rnd-sample-seq   
    thanx! this software is such a great tool!!! 
  6. Like
    opmo got a reaction from AM in rnd-sample-seq   
    Fixed in 3.0.29069
  7. Like
    opmo got a reaction from Stephane Boussuge in rnd-sample-seq   
    Of course, I will put the function back into the system with the next update.
  8. Like
    opmo got a reaction from AM in rnd-sample-seq   
    Of course, I will put the function back into the system with the next update.
  9. Thanks
    opmo got a reaction from Stephane Boussuge in Instant No.7 pour Piano   
    Great example.
  10. Thanks
    opmo reacted to Stephane Boussuge in Instant No.7 pour Piano   
    Here's a good example of manual writing combining the use of piano-grand-layout and OM voices system to get a decent draft score.
     
    S.
    Instant 7 render1.mp3
    Instant No7 - OM-Print.pdf
    Instant 7 pour Piano.opmo
  11. Like
    opmo got a reaction from Stephane Boussuge in Irrational tuplet pieces   
    The bug is fixed in ver. 3.0.29059
    Thank you for the report.
  12. Like
    opmo reacted to Stephane Boussuge in Shift for String Quartet   
    I've updated the render on Soundcloud, now rendered with Noteperformer4 and CSSS.
     
    Best !
     
    SB.
  13. Like
    opmo got a reaction from Stephane Boussuge in function to rnd-order length, pitch,velocity etc of a omn-list   
    You should omit the use of 'flat' or 'exclude', the keywords are often used with a different functionality in OM.
     
    Here is the correct use of seed in a function:
    (defun rk-rnd-order-omn (omn &key omit flatten seed)   (let (state)     (setf state *init-seed*)     (setf seed (rnd-seed seed))     (do-verbose ("rk-rnd-order-omn ~s" seed)       (let* ((omnl (if flatten (flatten omn) omn))              (len (if (member 'l omit) (omn :length omnl) (rnd-order (omn :length omnl) :seed (seed))))              (pit (if (member 'p omit) (omn :pitch omnl) (rnd-order (omn :pitch omnl) :seed (seed))))              (vel (if (member 'v omit) (omn :velocity omnl) (rnd-order (omn :velocity omnl) :seed (seed))))              (dur (if (member 'd omit) (omn :duration omnl) (rnd-order (omn :duration omnl) :seed (seed))))              (arti (if (member 'a omit) (get-articulation omnl) (rnd-order (get-articulation omnl) :seed (seed))))              (out (make-omn :length len :pitch pit :velocity vel :duration dur :articulation arti)))         (init-state state)         out))))
     Examples:
    (setf mat2 '((q e5 leg e fs5 leg gs5 q a5 ten cs6 ten)              (h cs6 leg q b5 e d6 leg cs6 leg)              (q a5 cs6 marc+leg gs5 cs6 leg)              (h. fs5))) (gen-loop 10 (rk-rnd-order-omn mat2 :seed 10)) (gen-loop 10 (rk-rnd-order-omn mat2 :flatten t :seed 10)) (gen-loop 10 (rk-rnd-order-omn mat2 :omit '(p) :flatten t :seed 10)) (gen-loop 10 (rk-rnd-order-omn mat2)) (gen-loop 10 (rk-rnd-order-omn mat2 :omit '(p))) (gen-loop 10 (rk-rnd-order-omn mat2 :omit '(l a leg) :seed 60)) (gen-loop 10 (rk-rnd-order-omn mat2 :flatten t))  
    This is how the function could be written. Playing with duration will destroy the original events - as you can see in the result of your function.
  14. Thanks
    opmo got a reaction from erka in function to rnd-order length, pitch,velocity etc of a omn-list   
    You should omit the use of 'flat' or 'exclude', the keywords are often used with a different functionality in OM.
     
    Here is the correct use of seed in a function:
    (defun rk-rnd-order-omn (omn &key omit flatten seed)   (let (state)     (setf state *init-seed*)     (setf seed (rnd-seed seed))     (do-verbose ("rk-rnd-order-omn ~s" seed)       (let* ((omnl (if flatten (flatten omn) omn))              (len (if (member 'l omit) (omn :length omnl) (rnd-order (omn :length omnl) :seed (seed))))              (pit (if (member 'p omit) (omn :pitch omnl) (rnd-order (omn :pitch omnl) :seed (seed))))              (vel (if (member 'v omit) (omn :velocity omnl) (rnd-order (omn :velocity omnl) :seed (seed))))              (dur (if (member 'd omit) (omn :duration omnl) (rnd-order (omn :duration omnl) :seed (seed))))              (arti (if (member 'a omit) (get-articulation omnl) (rnd-order (get-articulation omnl) :seed (seed))))              (out (make-omn :length len :pitch pit :velocity vel :duration dur :articulation arti)))         (init-state state)         out))))
     Examples:
    (setf mat2 '((q e5 leg e fs5 leg gs5 q a5 ten cs6 ten)              (h cs6 leg q b5 e d6 leg cs6 leg)              (q a5 cs6 marc+leg gs5 cs6 leg)              (h. fs5))) (gen-loop 10 (rk-rnd-order-omn mat2 :seed 10)) (gen-loop 10 (rk-rnd-order-omn mat2 :flatten t :seed 10)) (gen-loop 10 (rk-rnd-order-omn mat2 :omit '(p) :flatten t :seed 10)) (gen-loop 10 (rk-rnd-order-omn mat2)) (gen-loop 10 (rk-rnd-order-omn mat2 :omit '(p))) (gen-loop 10 (rk-rnd-order-omn mat2 :omit '(l a leg) :seed 60)) (gen-loop 10 (rk-rnd-order-omn mat2 :flatten t))  
    This is how the function could be written. Playing with duration will destroy the original events - as you can see in the result of your function.
  15. Like
    opmo got a reaction from Veit in License on 2 computers   
    This is precisely what you need to do. If you're transitioning to a new computer, you must deauthorize the license on the current one. Users are responsible for managing their licenses, and the activation and deactivation mechanism facilitates this.
  16. Like
    opmo got a reaction from Stephane Boussuge in Why is type :duration, :leg :ped not supported in omn-replace   
    The new version works with :duration in omn-replace.
    :duration values are ratios and must be positive.
  17. Like
    opmo got a reaction from Stephane Boussuge in Short SC score   
    (progn ;; DEFSYNTH (sc:defsynth sine4 ((freq 200) (dur 2.0) (vel 1.0) (pan 0) (times 0.3) (pm 12)) (let* ((env (* 0.3 (sc:env-gen.kr (sc:perc .0 (* 4.0 dur)) :act :free) vel)) (out (* times (sc:sin-osc.ar freq 0 (max 0 (sc:lf-noise1.kr pm))))) (out (sc:pan2.ar out pan))) (sc:out.ar 0 out))) ;; OMN-SCORE (setf size 200) (setf vector (list-plot (add-triangle-waves 4 size 1 0.6 :modulation (gen-triangle size 1 '(0.5 0.4 0.3 0.6) :modulation (gen-triangle size 1 0.3 :phase 180))) :point-radius 2)) (setf pitches (gen-divide 4 (vector-to-pitch '(g2 g6) vector :quantize 1/4))) (setf transpose (pitch-transpose -12 pitches)) (setf variants (pitch-variant transpose :variant '?)) (setf length1 (rnd-sample 120 '(s e s -s))) (setf length2 (rnd-sample 120 '(s e s -s))) (setf time1 (span pitches length1)) (setf time2 (span variants length2)) (setf dynamics '(p mf ff)) (setf omn1 (make-omn :length time1 :pitch (pitch-transpose 12 pitches) :velocity (rnd-sample size dynamics))) (setf omn2 (make-omn :length time2 :pitch variants :velocity (rnd-sample size dynamics))) ;; CONVERSION (setf len1 (omn-to-sc :length omn1)) (setf len2 (omn-to-sc :length omn2)) (setf freq1 (omn-to-sc :hertz omn1)) (setf freq2 (omn-to-sc :hertz omn2)) (setf vel1 (omn-to-sc :velocity omn1)) (setf vel2 (omn-to-sc :velocity omn2)) ;; SC-SCORE (def-sc-score add-triangle (:tempo 128 :layout ((in1 . len1) (in2 . len2)) ;:output "add-triangle" ) (in1 :synth sine4 :freq freq1 :dur len1 :times (rnd size :low 0.1 :high 0.3) :vel vel1 :pan (rnd size :low -1.0 :high 1.0) :pm (rnd-sample size (gen-integer 6 30)) ) (in2 :synth sine4 :freq freq2 :dur len2 :times (rnd size :low 0.1 :high 0.3) :vel vel2 :pan (rnd size :low -1.0 :high 1.0) :pm (rnd-sample size (gen-integer 6 30)) ) ) )  

     
    add-triangle (Snippet).mp3  
     
     
  18. Like
    opmo got a reaction from Jorgalad in Short SC score   
    (progn ;; DEFSYNTH (sc:defsynth sine4 ((freq 200) (dur 2.0) (vel 1.0) (pan 0) (times 0.3) (pm 12)) (let* ((env (* 0.3 (sc:env-gen.kr (sc:perc .0 (* 4.0 dur)) :act :free) vel)) (out (* times (sc:sin-osc.ar freq 0 (max 0 (sc:lf-noise1.kr pm))))) (out (sc:pan2.ar out pan))) (sc:out.ar 0 out))) ;; OMN-SCORE (setf size 200) (setf vector (list-plot (add-triangle-waves 4 size 1 0.6 :modulation (gen-triangle size 1 '(0.5 0.4 0.3 0.6) :modulation (gen-triangle size 1 0.3 :phase 180))) :point-radius 2)) (setf pitches (gen-divide 4 (vector-to-pitch '(g2 g6) vector :quantize 1/4))) (setf transpose (pitch-transpose -12 pitches)) (setf variants (pitch-variant transpose :variant '?)) (setf length1 (rnd-sample 120 '(s e s -s))) (setf length2 (rnd-sample 120 '(s e s -s))) (setf time1 (span pitches length1)) (setf time2 (span variants length2)) (setf dynamics '(p mf ff)) (setf omn1 (make-omn :length time1 :pitch (pitch-transpose 12 pitches) :velocity (rnd-sample size dynamics))) (setf omn2 (make-omn :length time2 :pitch variants :velocity (rnd-sample size dynamics))) ;; CONVERSION (setf len1 (omn-to-sc :length omn1)) (setf len2 (omn-to-sc :length omn2)) (setf freq1 (omn-to-sc :hertz omn1)) (setf freq2 (omn-to-sc :hertz omn2)) (setf vel1 (omn-to-sc :velocity omn1)) (setf vel2 (omn-to-sc :velocity omn2)) ;; SC-SCORE (def-sc-score add-triangle (:tempo 128 :layout ((in1 . len1) (in2 . len2)) ;:output "add-triangle" ) (in1 :synth sine4 :freq freq1 :dur len1 :times (rnd size :low 0.1 :high 0.3) :vel vel1 :pan (rnd size :low -1.0 :high 1.0) :pm (rnd-sample size (gen-integer 6 30)) ) (in2 :synth sine4 :freq freq2 :dur len2 :times (rnd size :low 0.1 :high 0.3) :vel vel2 :pan (rnd size :low -1.0 :high 1.0) :pm (rnd-sample size (gen-integer 6 30)) ) ) )  

     
    add-triangle (Snippet).mp3  
     
     
  19. Like
    opmo got a reaction from erka in Opusmodus 3.0.29046 Update   
    Thanks to Sungmin's support and the introduction of the new DEF-SC-SCORE macro, Opusmodus users can now create a series of instruments similar to those created with the DEF-SCORE macro for traditional instrument scores.
     
    The primary objective of the DEF-SC-SCORE was to enable users to take Opusmodus scores (whether in omn-form or single-element omn forms) and convert them to the CL-Collider (SuperCollider) input format. To achieve this, we introduced the OMN-TO-SC function specifically for this task.
     
    Below are a few examples that illustrate the conversion process and the use of the DEF-SC-SCORE macro:
     
    Example 1:

    DEFSYNTH:
    (sc:defsynth snd2 ((dur 2.0) (vel 1.0) (left 10) (right 10) (index-low 4) (index-high 12)) (let* ((trigger (sc:impulse.kr (list left right))) (pitch (round (sc:t-rand.kr 36 72 trigger) 1)) (timbre (sc:lf-noise0.kr 1/20 0.2 2)) (env (* 1.0 (sc:env-gen.kr (sc:perc .0 (* 2.0 dur)) :act :free) (sc:linen.kr trigger 0.0 vel (/ 1 (list left right))))) (index (+ (* env index-high) index-low)) (pitch (sc:midicps pitch)) (out (sc:pm-osc.ar pitch (* pitch timbre) index 0 env))) (sc:out.ar 0 out))) (sc:defsynth pm-crotale ((note 60) (dur 2.0) (vel 1.0) (pan 0)) (declare (ignore amp)) (let* ((freq (sc:midicps (+ 0 note))) (envl (sc:perc 0 (* 4.0 dur))) (mod! (+ 5 (/ 1 (sc:i-rand.ir 2 6)))) (out (sc:pm-osc.ar freq (* mod! freq) (sc:env-gen.kr envl :time-scale (* 4.0 dur) :level-scale vel) 0 (sc:env-gen.kr envl :time-scale (* 4.0 dur) :level-scale 0.3))) (out (sc:pan2.ar out pan)) (out (* out (sc:env-gen.kr envl :time-scale (* 1.3 (* 4.0 dur)) :level-scale (sc:rand.ir 0.1 0.4) :act :free)))) (sc:out.ar 0 out)))
    OMN Score:
    (setf size 120) (setf vector       (list-plot        (gen-sine         size 1 '(0.5 0.4 0.3 0.6)         :modulation (gen-sine size 1 0.3 :phase 180))))          (setf pitch (vector-to-pitch '(g1 g6) vector)) (setf pitch1 (gen-divide 4 pitch)) (setf pitch-transp (pitch-transpose -12 pitch1)) (setf section (rnd-unique 15 (gen-integer 0 27))) (setf pitch2 (pitch-variant pitch-transp :variant '? :section section)) (setf length1 (rnd-sample size '(s e s s))) (setf span (get-span length1)) (setf length2 (length-span span (rnd-sample size '(s e s s)))) (setf len-sum (list (sum (abs! length1)))) (setf dynamic1 (rnd-sample size '(p mp mf f ff))) (setf dynamic2 (rnd-sample size '(p mp mf f ff))) (setf omn1 (make-omn :length length1 :pitch pitch1 :velocity dynamic1)) (setf omn2 (make-omn :length length2 :pitch pitch2 :velocity dynamic2))  
    DEF-SC-SCORE:
    (def-sc-score example1     (:tempo 120      :layout ((in1 . len1) (in2 . len2) (in3 . len-sum)))   (in1 :synth pm-crotale        :note midi1        :dur len1        :vel vel1        :pan (gen-loop size (rnd1)))   (in2 :synth pm-crotale        :note midi2        :dur len2        :vel vel2        :pan (gen-loop size (rnd1)))   (in3 :synth snd2        :note '(60)        :dur length-sum        :vel '(0.1))   )  
     
    Example 2:
     
    DEFSYNTH:
    (sc:defsynth pm-crotale ((note 60) (dur 2.0) (vel 1.0) (pan 0))   (declare (ignore amp))   (let* ((freq (sc:midicps (+ 0 note)))          (envl (sc:perc 0 (* 4.0 dur)))          (mod! (+ 5 (/ 1 (sc:i-rand.ir 2 6))))          (out (sc:pm-osc.ar freq                             (* mod! freq)                             (sc:env-gen.kr envl                                            :time-scale (* 4.0 dur)                                            :level-scale vel)                             0                             (sc:env-gen.kr envl                                            :time-scale (* 4.0 dur)                                            :level-scale 0.3)))          (out (sc:pan2.ar out pan))          (out (* out                  (sc:env-gen.kr envl                                 :time-scale (* 1.3 (* 4.0 dur))                                 :level-scale (sc:rand.ir 0.1 0.4)                                 :act :free))))     (sc:out.ar 0 out)))  
    OMN Score:
    (setf chrom '(c4 cs4 d4 ds4 e4 f4 fs4 g4 gs4 a4 bb4 b4)) (setf chords (gen-chord-series chrom chrom :method 1 :type '? :segment '?)) (setf size (length chords)) (setf length (rnd-sample size '(w h q -q)))  
    DEF-SC-SCORE:
    (def-sc-score example2 (:tempo 102 :layout ((ins . length))) (ins :synth pm-crotale :note (omn-to-sc :midi chords) :dur length :vel (gen-loop size (rnd1))) )  
    To see more CL-Collider (SuperCollider) examples and understand the usage of the DEF- SC-SCORE macro, please follow these steps:
     
    Navigate to the Assistant navigator.
    Press the (D) icon.
    Look for the 'CL-Collider Examples' folder. Open the 'CL-Collider.opmo' file.
     
    Happy coding,
    Janusz
  20. Like
    opmo got a reaction from Jorgalad in Opusmodus 3.0.29046 Update   
    Thanks to Sungmin's support and the introduction of the new DEF-SC-SCORE macro, Opusmodus users can now create a series of instruments similar to those created with the DEF-SCORE macro for traditional instrument scores.
     
    The primary objective of the DEF-SC-SCORE was to enable users to take Opusmodus scores (whether in omn-form or single-element omn forms) and convert them to the CL-Collider (SuperCollider) input format. To achieve this, we introduced the OMN-TO-SC function specifically for this task.
     
    Below are a few examples that illustrate the conversion process and the use of the DEF-SC-SCORE macro:
     
    Example 1:

    DEFSYNTH:
    (sc:defsynth snd2 ((dur 2.0) (vel 1.0) (left 10) (right 10) (index-low 4) (index-high 12)) (let* ((trigger (sc:impulse.kr (list left right))) (pitch (round (sc:t-rand.kr 36 72 trigger) 1)) (timbre (sc:lf-noise0.kr 1/20 0.2 2)) (env (* 1.0 (sc:env-gen.kr (sc:perc .0 (* 2.0 dur)) :act :free) (sc:linen.kr trigger 0.0 vel (/ 1 (list left right))))) (index (+ (* env index-high) index-low)) (pitch (sc:midicps pitch)) (out (sc:pm-osc.ar pitch (* pitch timbre) index 0 env))) (sc:out.ar 0 out))) (sc:defsynth pm-crotale ((note 60) (dur 2.0) (vel 1.0) (pan 0)) (declare (ignore amp)) (let* ((freq (sc:midicps (+ 0 note))) (envl (sc:perc 0 (* 4.0 dur))) (mod! (+ 5 (/ 1 (sc:i-rand.ir 2 6)))) (out (sc:pm-osc.ar freq (* mod! freq) (sc:env-gen.kr envl :time-scale (* 4.0 dur) :level-scale vel) 0 (sc:env-gen.kr envl :time-scale (* 4.0 dur) :level-scale 0.3))) (out (sc:pan2.ar out pan)) (out (* out (sc:env-gen.kr envl :time-scale (* 1.3 (* 4.0 dur)) :level-scale (sc:rand.ir 0.1 0.4) :act :free)))) (sc:out.ar 0 out)))
    OMN Score:
    (setf size 120) (setf vector       (list-plot        (gen-sine         size 1 '(0.5 0.4 0.3 0.6)         :modulation (gen-sine size 1 0.3 :phase 180))))          (setf pitch (vector-to-pitch '(g1 g6) vector)) (setf pitch1 (gen-divide 4 pitch)) (setf pitch-transp (pitch-transpose -12 pitch1)) (setf section (rnd-unique 15 (gen-integer 0 27))) (setf pitch2 (pitch-variant pitch-transp :variant '? :section section)) (setf length1 (rnd-sample size '(s e s s))) (setf span (get-span length1)) (setf length2 (length-span span (rnd-sample size '(s e s s)))) (setf len-sum (list (sum (abs! length1)))) (setf dynamic1 (rnd-sample size '(p mp mf f ff))) (setf dynamic2 (rnd-sample size '(p mp mf f ff))) (setf omn1 (make-omn :length length1 :pitch pitch1 :velocity dynamic1)) (setf omn2 (make-omn :length length2 :pitch pitch2 :velocity dynamic2))  
    DEF-SC-SCORE:
    (def-sc-score example1     (:tempo 120      :layout ((in1 . len1) (in2 . len2) (in3 . len-sum)))   (in1 :synth pm-crotale        :note midi1        :dur len1        :vel vel1        :pan (gen-loop size (rnd1)))   (in2 :synth pm-crotale        :note midi2        :dur len2        :vel vel2        :pan (gen-loop size (rnd1)))   (in3 :synth snd2        :note '(60)        :dur length-sum        :vel '(0.1))   )  
     
    Example 2:
     
    DEFSYNTH:
    (sc:defsynth pm-crotale ((note 60) (dur 2.0) (vel 1.0) (pan 0))   (declare (ignore amp))   (let* ((freq (sc:midicps (+ 0 note)))          (envl (sc:perc 0 (* 4.0 dur)))          (mod! (+ 5 (/ 1 (sc:i-rand.ir 2 6))))          (out (sc:pm-osc.ar freq                             (* mod! freq)                             (sc:env-gen.kr envl                                            :time-scale (* 4.0 dur)                                            :level-scale vel)                             0                             (sc:env-gen.kr envl                                            :time-scale (* 4.0 dur)                                            :level-scale 0.3)))          (out (sc:pan2.ar out pan))          (out (* out                  (sc:env-gen.kr envl                                 :time-scale (* 1.3 (* 4.0 dur))                                 :level-scale (sc:rand.ir 0.1 0.4)                                 :act :free))))     (sc:out.ar 0 out)))  
    OMN Score:
    (setf chrom '(c4 cs4 d4 ds4 e4 f4 fs4 g4 gs4 a4 bb4 b4)) (setf chords (gen-chord-series chrom chrom :method 1 :type '? :segment '?)) (setf size (length chords)) (setf length (rnd-sample size '(w h q -q)))  
    DEF-SC-SCORE:
    (def-sc-score example2 (:tempo 102 :layout ((ins . length))) (ins :synth pm-crotale :note (omn-to-sc :midi chords) :dur length :vel (gen-loop size (rnd1))) )  
    To see more CL-Collider (SuperCollider) examples and understand the usage of the DEF- SC-SCORE macro, please follow these steps:
     
    Navigate to the Assistant navigator.
    Press the (D) icon.
    Look for the 'CL-Collider Examples' folder. Open the 'CL-Collider.opmo' file.
     
    Happy coding,
    Janusz
  21. Thanks
    opmo got a reaction from hujairi in Opusmodus 3.0.29046 Update   
    Thanks to Sungmin's support and the introduction of the new DEF-SC-SCORE macro, Opusmodus users can now create a series of instruments similar to those created with the DEF-SCORE macro for traditional instrument scores.
     
    The primary objective of the DEF-SC-SCORE was to enable users to take Opusmodus scores (whether in omn-form or single-element omn forms) and convert them to the CL-Collider (SuperCollider) input format. To achieve this, we introduced the OMN-TO-SC function specifically for this task.
     
    Below are a few examples that illustrate the conversion process and the use of the DEF-SC-SCORE macro:
     
    Example 1:

    DEFSYNTH:
    (sc:defsynth snd2 ((dur 2.0) (vel 1.0) (left 10) (right 10) (index-low 4) (index-high 12)) (let* ((trigger (sc:impulse.kr (list left right))) (pitch (round (sc:t-rand.kr 36 72 trigger) 1)) (timbre (sc:lf-noise0.kr 1/20 0.2 2)) (env (* 1.0 (sc:env-gen.kr (sc:perc .0 (* 2.0 dur)) :act :free) (sc:linen.kr trigger 0.0 vel (/ 1 (list left right))))) (index (+ (* env index-high) index-low)) (pitch (sc:midicps pitch)) (out (sc:pm-osc.ar pitch (* pitch timbre) index 0 env))) (sc:out.ar 0 out))) (sc:defsynth pm-crotale ((note 60) (dur 2.0) (vel 1.0) (pan 0)) (declare (ignore amp)) (let* ((freq (sc:midicps (+ 0 note))) (envl (sc:perc 0 (* 4.0 dur))) (mod! (+ 5 (/ 1 (sc:i-rand.ir 2 6)))) (out (sc:pm-osc.ar freq (* mod! freq) (sc:env-gen.kr envl :time-scale (* 4.0 dur) :level-scale vel) 0 (sc:env-gen.kr envl :time-scale (* 4.0 dur) :level-scale 0.3))) (out (sc:pan2.ar out pan)) (out (* out (sc:env-gen.kr envl :time-scale (* 1.3 (* 4.0 dur)) :level-scale (sc:rand.ir 0.1 0.4) :act :free)))) (sc:out.ar 0 out)))
    OMN Score:
    (setf size 120) (setf vector       (list-plot        (gen-sine         size 1 '(0.5 0.4 0.3 0.6)         :modulation (gen-sine size 1 0.3 :phase 180))))          (setf pitch (vector-to-pitch '(g1 g6) vector)) (setf pitch1 (gen-divide 4 pitch)) (setf pitch-transp (pitch-transpose -12 pitch1)) (setf section (rnd-unique 15 (gen-integer 0 27))) (setf pitch2 (pitch-variant pitch-transp :variant '? :section section)) (setf length1 (rnd-sample size '(s e s s))) (setf span (get-span length1)) (setf length2 (length-span span (rnd-sample size '(s e s s)))) (setf len-sum (list (sum (abs! length1)))) (setf dynamic1 (rnd-sample size '(p mp mf f ff))) (setf dynamic2 (rnd-sample size '(p mp mf f ff))) (setf omn1 (make-omn :length length1 :pitch pitch1 :velocity dynamic1)) (setf omn2 (make-omn :length length2 :pitch pitch2 :velocity dynamic2))  
    DEF-SC-SCORE:
    (def-sc-score example1     (:tempo 120      :layout ((in1 . len1) (in2 . len2) (in3 . len-sum)))   (in1 :synth pm-crotale        :note midi1        :dur len1        :vel vel1        :pan (gen-loop size (rnd1)))   (in2 :synth pm-crotale        :note midi2        :dur len2        :vel vel2        :pan (gen-loop size (rnd1)))   (in3 :synth snd2        :note '(60)        :dur length-sum        :vel '(0.1))   )  
     
    Example 2:
     
    DEFSYNTH:
    (sc:defsynth pm-crotale ((note 60) (dur 2.0) (vel 1.0) (pan 0))   (declare (ignore amp))   (let* ((freq (sc:midicps (+ 0 note)))          (envl (sc:perc 0 (* 4.0 dur)))          (mod! (+ 5 (/ 1 (sc:i-rand.ir 2 6))))          (out (sc:pm-osc.ar freq                             (* mod! freq)                             (sc:env-gen.kr envl                                            :time-scale (* 4.0 dur)                                            :level-scale vel)                             0                             (sc:env-gen.kr envl                                            :time-scale (* 4.0 dur)                                            :level-scale 0.3)))          (out (sc:pan2.ar out pan))          (out (* out                  (sc:env-gen.kr envl                                 :time-scale (* 1.3 (* 4.0 dur))                                 :level-scale (sc:rand.ir 0.1 0.4)                                 :act :free))))     (sc:out.ar 0 out)))  
    OMN Score:
    (setf chrom '(c4 cs4 d4 ds4 e4 f4 fs4 g4 gs4 a4 bb4 b4)) (setf chords (gen-chord-series chrom chrom :method 1 :type '? :segment '?)) (setf size (length chords)) (setf length (rnd-sample size '(w h q -q)))  
    DEF-SC-SCORE:
    (def-sc-score example2 (:tempo 102 :layout ((ins . length))) (ins :synth pm-crotale :note (omn-to-sc :midi chords) :dur length :vel (gen-loop size (rnd1))) )  
    To see more CL-Collider (SuperCollider) examples and understand the usage of the DEF- SC-SCORE macro, please follow these steps:
     
    Navigate to the Assistant navigator.
    Press the (D) icon.
    Look for the 'CL-Collider Examples' folder. Open the 'CL-Collider.opmo' file.
     
    Happy coding,
    Janusz
  22. Like
    opmo got a reaction from Stephane Boussuge in Opusmodus 3.0.29046 Update   
    Thanks to Sungmin's support and the introduction of the new DEF-SC-SCORE macro, Opusmodus users can now create a series of instruments similar to those created with the DEF-SCORE macro for traditional instrument scores.
     
    The primary objective of the DEF-SC-SCORE was to enable users to take Opusmodus scores (whether in omn-form or single-element omn forms) and convert them to the CL-Collider (SuperCollider) input format. To achieve this, we introduced the OMN-TO-SC function specifically for this task.
     
    Below are a few examples that illustrate the conversion process and the use of the DEF-SC-SCORE macro:
     
    Example 1:

    DEFSYNTH:
    (sc:defsynth snd2 ((dur 2.0) (vel 1.0) (left 10) (right 10) (index-low 4) (index-high 12)) (let* ((trigger (sc:impulse.kr (list left right))) (pitch (round (sc:t-rand.kr 36 72 trigger) 1)) (timbre (sc:lf-noise0.kr 1/20 0.2 2)) (env (* 1.0 (sc:env-gen.kr (sc:perc .0 (* 2.0 dur)) :act :free) (sc:linen.kr trigger 0.0 vel (/ 1 (list left right))))) (index (+ (* env index-high) index-low)) (pitch (sc:midicps pitch)) (out (sc:pm-osc.ar pitch (* pitch timbre) index 0 env))) (sc:out.ar 0 out))) (sc:defsynth pm-crotale ((note 60) (dur 2.0) (vel 1.0) (pan 0)) (declare (ignore amp)) (let* ((freq (sc:midicps (+ 0 note))) (envl (sc:perc 0 (* 4.0 dur))) (mod! (+ 5 (/ 1 (sc:i-rand.ir 2 6)))) (out (sc:pm-osc.ar freq (* mod! freq) (sc:env-gen.kr envl :time-scale (* 4.0 dur) :level-scale vel) 0 (sc:env-gen.kr envl :time-scale (* 4.0 dur) :level-scale 0.3))) (out (sc:pan2.ar out pan)) (out (* out (sc:env-gen.kr envl :time-scale (* 1.3 (* 4.0 dur)) :level-scale (sc:rand.ir 0.1 0.4) :act :free)))) (sc:out.ar 0 out)))
    OMN Score:
    (setf size 120) (setf vector       (list-plot        (gen-sine         size 1 '(0.5 0.4 0.3 0.6)         :modulation (gen-sine size 1 0.3 :phase 180))))          (setf pitch (vector-to-pitch '(g1 g6) vector)) (setf pitch1 (gen-divide 4 pitch)) (setf pitch-transp (pitch-transpose -12 pitch1)) (setf section (rnd-unique 15 (gen-integer 0 27))) (setf pitch2 (pitch-variant pitch-transp :variant '? :section section)) (setf length1 (rnd-sample size '(s e s s))) (setf span (get-span length1)) (setf length2 (length-span span (rnd-sample size '(s e s s)))) (setf len-sum (list (sum (abs! length1)))) (setf dynamic1 (rnd-sample size '(p mp mf f ff))) (setf dynamic2 (rnd-sample size '(p mp mf f ff))) (setf omn1 (make-omn :length length1 :pitch pitch1 :velocity dynamic1)) (setf omn2 (make-omn :length length2 :pitch pitch2 :velocity dynamic2))  
    DEF-SC-SCORE:
    (def-sc-score example1     (:tempo 120      :layout ((in1 . len1) (in2 . len2) (in3 . len-sum)))   (in1 :synth pm-crotale        :note midi1        :dur len1        :vel vel1        :pan (gen-loop size (rnd1)))   (in2 :synth pm-crotale        :note midi2        :dur len2        :vel vel2        :pan (gen-loop size (rnd1)))   (in3 :synth snd2        :note '(60)        :dur length-sum        :vel '(0.1))   )  
     
    Example 2:
     
    DEFSYNTH:
    (sc:defsynth pm-crotale ((note 60) (dur 2.0) (vel 1.0) (pan 0))   (declare (ignore amp))   (let* ((freq (sc:midicps (+ 0 note)))          (envl (sc:perc 0 (* 4.0 dur)))          (mod! (+ 5 (/ 1 (sc:i-rand.ir 2 6))))          (out (sc:pm-osc.ar freq                             (* mod! freq)                             (sc:env-gen.kr envl                                            :time-scale (* 4.0 dur)                                            :level-scale vel)                             0                             (sc:env-gen.kr envl                                            :time-scale (* 4.0 dur)                                            :level-scale 0.3)))          (out (sc:pan2.ar out pan))          (out (* out                  (sc:env-gen.kr envl                                 :time-scale (* 1.3 (* 4.0 dur))                                 :level-scale (sc:rand.ir 0.1 0.4)                                 :act :free))))     (sc:out.ar 0 out)))  
    OMN Score:
    (setf chrom '(c4 cs4 d4 ds4 e4 f4 fs4 g4 gs4 a4 bb4 b4)) (setf chords (gen-chord-series chrom chrom :method 1 :type '? :segment '?)) (setf size (length chords)) (setf length (rnd-sample size '(w h q -q)))  
    DEF-SC-SCORE:
    (def-sc-score example2 (:tempo 102 :layout ((ins . length))) (ins :synth pm-crotale :note (omn-to-sc :midi chords) :dur length :vel (gen-loop size (rnd1))) )  
    To see more CL-Collider (SuperCollider) examples and understand the usage of the DEF- SC-SCORE macro, please follow these steps:
     
    Navigate to the Assistant navigator.
    Press the (D) icon.
    Look for the 'CL-Collider Examples' folder. Open the 'CL-Collider.opmo' file.
     
    Happy coding,
    Janusz
  23. Like
    opmo got a reaction from SungminPark in Opusmodus 3.0.29046 Update   
    Thanks to Sungmin's support and the introduction of the new DEF-SC-SCORE macro, Opusmodus users can now create a series of instruments similar to those created with the DEF-SCORE macro for traditional instrument scores.
     
    The primary objective of the DEF-SC-SCORE was to enable users to take Opusmodus scores (whether in omn-form or single-element omn forms) and convert them to the CL-Collider (SuperCollider) input format. To achieve this, we introduced the OMN-TO-SC function specifically for this task.
     
    Below are a few examples that illustrate the conversion process and the use of the DEF-SC-SCORE macro:
     
    Example 1:

    DEFSYNTH:
    (sc:defsynth snd2 ((dur 2.0) (vel 1.0) (left 10) (right 10) (index-low 4) (index-high 12)) (let* ((trigger (sc:impulse.kr (list left right))) (pitch (round (sc:t-rand.kr 36 72 trigger) 1)) (timbre (sc:lf-noise0.kr 1/20 0.2 2)) (env (* 1.0 (sc:env-gen.kr (sc:perc .0 (* 2.0 dur)) :act :free) (sc:linen.kr trigger 0.0 vel (/ 1 (list left right))))) (index (+ (* env index-high) index-low)) (pitch (sc:midicps pitch)) (out (sc:pm-osc.ar pitch (* pitch timbre) index 0 env))) (sc:out.ar 0 out))) (sc:defsynth pm-crotale ((note 60) (dur 2.0) (vel 1.0) (pan 0)) (declare (ignore amp)) (let* ((freq (sc:midicps (+ 0 note))) (envl (sc:perc 0 (* 4.0 dur))) (mod! (+ 5 (/ 1 (sc:i-rand.ir 2 6)))) (out (sc:pm-osc.ar freq (* mod! freq) (sc:env-gen.kr envl :time-scale (* 4.0 dur) :level-scale vel) 0 (sc:env-gen.kr envl :time-scale (* 4.0 dur) :level-scale 0.3))) (out (sc:pan2.ar out pan)) (out (* out (sc:env-gen.kr envl :time-scale (* 1.3 (* 4.0 dur)) :level-scale (sc:rand.ir 0.1 0.4) :act :free)))) (sc:out.ar 0 out)))
    OMN Score:
    (setf size 120) (setf vector       (list-plot        (gen-sine         size 1 '(0.5 0.4 0.3 0.6)         :modulation (gen-sine size 1 0.3 :phase 180))))          (setf pitch (vector-to-pitch '(g1 g6) vector)) (setf pitch1 (gen-divide 4 pitch)) (setf pitch-transp (pitch-transpose -12 pitch1)) (setf section (rnd-unique 15 (gen-integer 0 27))) (setf pitch2 (pitch-variant pitch-transp :variant '? :section section)) (setf length1 (rnd-sample size '(s e s s))) (setf span (get-span length1)) (setf length2 (length-span span (rnd-sample size '(s e s s)))) (setf len-sum (list (sum (abs! length1)))) (setf dynamic1 (rnd-sample size '(p mp mf f ff))) (setf dynamic2 (rnd-sample size '(p mp mf f ff))) (setf omn1 (make-omn :length length1 :pitch pitch1 :velocity dynamic1)) (setf omn2 (make-omn :length length2 :pitch pitch2 :velocity dynamic2))  
    DEF-SC-SCORE:
    (def-sc-score example1     (:tempo 120      :layout ((in1 . len1) (in2 . len2) (in3 . len-sum)))   (in1 :synth pm-crotale        :note midi1        :dur len1        :vel vel1        :pan (gen-loop size (rnd1)))   (in2 :synth pm-crotale        :note midi2        :dur len2        :vel vel2        :pan (gen-loop size (rnd1)))   (in3 :synth snd2        :note '(60)        :dur length-sum        :vel '(0.1))   )  
     
    Example 2:
     
    DEFSYNTH:
    (sc:defsynth pm-crotale ((note 60) (dur 2.0) (vel 1.0) (pan 0))   (declare (ignore amp))   (let* ((freq (sc:midicps (+ 0 note)))          (envl (sc:perc 0 (* 4.0 dur)))          (mod! (+ 5 (/ 1 (sc:i-rand.ir 2 6))))          (out (sc:pm-osc.ar freq                             (* mod! freq)                             (sc:env-gen.kr envl                                            :time-scale (* 4.0 dur)                                            :level-scale vel)                             0                             (sc:env-gen.kr envl                                            :time-scale (* 4.0 dur)                                            :level-scale 0.3)))          (out (sc:pan2.ar out pan))          (out (* out                  (sc:env-gen.kr envl                                 :time-scale (* 1.3 (* 4.0 dur))                                 :level-scale (sc:rand.ir 0.1 0.4)                                 :act :free))))     (sc:out.ar 0 out)))  
    OMN Score:
    (setf chrom '(c4 cs4 d4 ds4 e4 f4 fs4 g4 gs4 a4 bb4 b4)) (setf chords (gen-chord-series chrom chrom :method 1 :type '? :segment '?)) (setf size (length chords)) (setf length (rnd-sample size '(w h q -q)))  
    DEF-SC-SCORE:
    (def-sc-score example2 (:tempo 102 :layout ((ins . length))) (ins :synth pm-crotale :note (omn-to-sc :midi chords) :dur length :vel (gen-loop size (rnd1))) )  
    To see more CL-Collider (SuperCollider) examples and understand the usage of the DEF- SC-SCORE macro, please follow these steps:
     
    Navigate to the Assistant navigator.
    Press the (D) icon.
    Look for the 'CL-Collider Examples' folder. Open the 'CL-Collider.opmo' file.
     
    Happy coding,
    Janusz
  24. Like
    opmo got a reaction from erka in Opusmodus 3.0.29031 Update   
    3.0.28031
     
    New Comment shortcuts
    control-;   -- add the #| |# around the selection.
    control-:   -- look for surrounding #| |# and remove them.
     
    Happy coding,
    Janusz
  25. Thanks
    opmo reacted to erka in purchased OM 2.1 a while back. Now own M1 Mac running Ventura.   
    Do a forum-search for m1 or Mac or "Opusmodus 3" and you will find all the discussions and answers from the past year(s).
    Then you can understand the design choice and why the upgrade to V3 is not free.
×
×
  • Create New...

Important Information

Terms of Use Privacy Policy