Skip to content
View in the app

A better way to browse. Learn more.

Opusmodus

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Opusmodus 3.0.29046 Update

Featured Replies

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


Copyright © 2014-2026 Opusmodus™ Ltd. All rights reserved.
Product features, specifications, system requirements and availability are subject to change without notice.
Opusmodus, the Opusmodus logo, and other Opusmodus trademarks are either registered trademarks or trademarks of Opusmodus Ltd.
All other trademarks contained herein are the property of their respective owners.

Powered by Invision Community

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.