-
Posts
2,894 -
Joined
-
Last visited
Content Type
Forums
Events
Store
Video Gallery
Everything posted by opmo
-
You have two licences which allows you to run OM on two 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.
-
Why is type :duration, :leg :ped not supported in omn-replace
opmo replied to erka's topic in Support & Troubleshooting
The new version works with :duration in omn-replace. :duration values are ratios and must be positive. -
Why is type :duration, :leg :ped not supported in omn-replace
opmo replied to erka's topic in Support & Troubleshooting
There is no need for :duration here but can be added. For edit etc... we use the dictum function. The omn-replace should be removed from the system. Possibily in the future the function will stop be documented. -
(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
-
DEF-SC-SCORE additional keywords: output - Specifies the name of the saved audio file (provided as a string). By default, the file is saved in the Waveform Audio (WAVE) format. sr - Defines the sample rate of the saved audio file. The default setting is 48000 with a bit depth of 24 bits per sample. The :output "name" option enables you to save the score file in the Opusmodus/Media/Audio directory. (def-sc-score example2 (:tempo 120 :layout ((ins . len)) :output "exp2") (ins :synth saw-synth :note midi :dur len :vel vel) )
-
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
-
3.0.28031 New Comment shortcuts control-; -- add the #| |# around the selection. control-: -- look for surrounding #| |# and remove them. Happy coding, Janusz
-
you should use one def-score with 4 instrument. The score-player is function made for a user and it dose not have any documentation and is not supported.
-
First get-span (to find the max length from your patters: (setf max (find-max (list (get-span pattern1) (get-span pattern2) (get-span pattern3) (get-span pattern4)))) After: (length-span max pattern1) etc... or you need to add pauses.
-
The span of each pattern needs to be the same length.
-
3.0.29016 – Fixed: OMN notation - group of attributes with error message. Repeat of tie attribute in OMN-TO-TIME-SIGNATURE function. Variabiles Warnings – Documents: Documents edit.
-
(defun gen-brownian-bridge (n startend &key (all-gen nil) (output 'integer) (span 5)) (let ((seq) (liste startend)) (progn (setf seq (append (list startend) (loop repeat n do (setf liste (filter-repeat 1 (loop repeat (1- (length liste)) for cnt = 0 then (incf cnt) append (append (list (nth cnt liste) (pick (nth cnt liste) (nth (1+ cnt) liste) :span span) (nth (1+ cnt) liste)))))) collect liste))) (setf seq (if (equal all-gen t) seq (car (last seq)))) (if (equal output 'pitch) (integer-to-pitch seq) seq)))) Small change otherwise you get: Warning: Local Variable Initialization clause (the binding of liste) follows iteration clause(s) but will only be evaluated once.
-
3.0.29004 – New functions: REMOVE-ATTRIBUTE REPEAT-ATTRIBUTE NTH-EVENT OMN-LAST-EVENT OMN-BUTLAST-EVENT Happy coding, Janusz
-
(setf var (gen-accumulate (gen-repeat 20 '(0.1)))) (mapcar (lambda (x) (rnd-variance 60 x)) var) or (setf var (gen-accumulate (gen-repeat 20 '(0.1)))) (loop for i in var collect (rnd-variance 60 i))
-
(pitch-repeat2 3 6 '(c4 d4 e4 f4)) => ((c4 = = =) (d4 = =) (e4 = = = =) (f4 = = = = =)) (pitch-repeat3 3 '(c4 d4 e4 f4)) => (f4 d4 c4)
-
Absolute great example. Your students will love it.
-
After you created a snippet you call 'Last Score -> Live Coding' Snippet is a score - defined internally.
-
For that you can use LCI.
-
You can open as many Workspaces you like. Each one has its own LCI. Check the video here to see how this works: The video is made with the previous OM but it works the same way. The sync is not implemented in LCI. I will have a look what can I do.
-
(setf pitches (rnd-sample 12 (midi-to-pitch '(65 64 63 62 61 60)))) If the tempo is 60 then the span is 5/4 etc... (setf lengths (length-span 5/4 (rnd-sample 6 '(s -s e. q)))) (make-omn :length lengths :pitch pitches)