Jump to content

opmo

Administrators
  • Posts

    2,894
  • Joined

  • Last visited

Everything posted by opmo

  1. You have two licences which allows you to run OM on two computers.
  2. 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.
  3. The new version works with :duration in omn-replace. :duration values are ratios and must be positive.
  4. 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.
  5. (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
  6. 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) )
  7. 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
  8. 3.0.28031 New Comment shortcuts control-; -- add the #| |# around the selection. control-: -- look for surrounding #| |# and remove them. Happy coding, Janusz
  9. 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.
  10. 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.
  11. The span of each pattern needs to be the same length.
  12. Update to score examples from "Fundamentals of Composition with Opusmodus - Book 1".
  13. 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.
  14. (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.
  15. 3.0.29004 – New functions: REMOVE-ATTRIBUTE REPEAT-ATTRIBUTE NTH-EVENT OMN-LAST-EVENT OMN-BUTLAST-EVENT Happy coding, Janusz
  16. (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))
  17. (pitch-repeat2 3 6 '(c4 d4 e4 f4)) => ((c4 = = =) (d4 = =) (e4 = = = =) (f4 = = = = =)) (pitch-repeat3 3 '(c4 d4 e4 f4)) => (f4 d4 c4)
  18. Absolute great example. Your students will love it.
  19. After you created a snippet you call 'Last Score -> Live Coding' Snippet is a score - defined internally.
  20. 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.
  21. (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)
×
×
  • Create New...

Important Information

Terms of Use Privacy Policy