-
Posts
2,889 -
Joined
-
Last visited
Content Type
Forums
Events
Store
Video Gallery
Everything posted by opmo
-
I will ask James if he can help.
-
Thanks to composer Jesper Elén's excellent contributions, Opusmodus is now incorporating a suite of functions focused on the compositional techniques developed by Per Nørgård. New functions: INFINIT-SERIES (extended) TONE-LAKES LAKE-START-POSITION LAKE-EVERYOTHER GEN-LAKE-SIZE CHECK-TONE-LAKES-SYMMETRY Happy coding, Janusz
-
update Function to change an event in an omn sequence into a rest
opmo replied to rcadiz's topic in Function Examples
Revised rnd-rest in version 3.0.29080 The function RND-REST convert a subset of the length notes in the list to length rests, such that the sum of all length rests (including any existing ones) becomes equal to the given percentage of the sum (span) of the absolute values of all lengths in the list. (setf lengths (gen-repeat 8 1/16)) => (1/16 1/16 1/16 1/16 1/16 1/16 1/16 1/16) (rnd-rest 0.3 lengths) => (1/16 1/16 1/16 1/16 1/16 -1/16 1/16 -1/16) (rnd-rest 0.5 lengths) => (1/16 1/16 -1/16 1/16 -1/16 -1/16 1/16 -1/16) (rnd-rest '(0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9) (gen-repeat 9 (list lengths)) :seed 76) (setf percent (vector-round 0.2 0.8 (gen-sine 16 1 0.8))) => (0.5 0.61480505 0.71213204 0.77716387 0.8 0.77716387 0.71213204 0.614805 0.5 0.38519496 0.28786793 0.2228361 0.2 0.22283617 0.28786805 0.38519496) (setf seq '((1/10 1/10 1/10 1/10 1/10) (1/6 1/6 1/6) (1/16 1/16 1/16 1/16 1/16 1/16 1/16 1/16) (1/16 1/16 1/16 1/16) (1/20 1/20 1/20 1/20 1/20) (1/6 1/6 1/6) (1/10 1/10 1/10 1/10 1/10) (1/10 1/10 1/10 1/10 1/10) (1/6 1/6 1/6) (1/6 1/6 1/6) (1/10 1/10 1/10 1/10 1/10) (1/16 1/16 1/16 1/16) (1/16 1/16 1/16 1/16) (1/6 1/6 1/6) (1/6 1/6 1/6) (1/10 1/10 1/10 1/10 1/10) (1/10 1/10 1/10 1/10 1/10))) (rnd-rest percent seq :omn t :seed 32) => ((5h - = = -) (3h - =) (s - - - = - = -) (-s - = -) (-5q - - - =) (-3h = -) (-5h = - - =) (-5h = = - -) (3h - =) (-3h = =) (-5h = = = =) (s = = =) (s = = =) (3h = =) (3h = =) (5h = = = -) (5h = = - -)) (setf omn1 '((q c5gs4f4 e f5c5gs4 e gs5f5c5 s c6gs5f5) (e c6eb5 c5eb4 e eb4c4 eb5c5) (q b4g4d4 e g4d4b3 s d4b3g3 b3g3d3 q g3d3b2))) (rnd-rest 0.5 omn1 :seed 11) (setf omn2 '((e cs4 mf cs4 cs4 d4) (s d4 mf cs4 ds4 d4 d4 e4 d4 d4) (e f4 mf ds4 d4 fs4) (e ds4 mf d4 fs4 ds4) (e d4 mf s g4 e ds4 s d4 e g4) (s ds4 mf d4 g4 ds4 d4 g4 ds4 d4) (e g4 mf s ds4 d4 e g4 s ds4 d4) (q g4 mf ds4))) (rnd-rest '(0.0 0.2 0.3 0.4 0.5 0.7 0.9 1.0) omn2 :seed 34) Happy coding. -
update Function to change an event in an omn sequence into a rest
opmo replied to rcadiz's topic in Function Examples
New function rnd-rest in version 3.0.29077 (setf lengths (gen-repeat 8 1/16)) => (1/16 1/16 1/16 1/16 1/16 1/16 1/16 1/16) (rnd-rest 2 lengths) => (1/16 1/16 1/16 -1/16 1/16 -1/16 1/16 1/16) (rnd-rest 5 lengths) => (-1/16 -1/16 1/16 -1/16 -1/16 -1/16 1/16 1/16) (rnd-rest '(2 3 1 2 1 3 2 1) '((1/10 1/10 1/10 1/10 1/10) (1/6 1/6 1/6) (1/16 1/16 1/16 1/16 1/16 1/16 1/16 1/16) (1/16 1/16 1/16 1/16) (1/20 1/20 1/20 1/20 1/20) (1/6 1/6 1/6) (1/10 1/10 1/10 1/10 1/10) (1/10 1/10 1/10 1/10 1/10) (1/6 1/6 1/6) (1/6 1/6 1/6) (1/10 1/10 1/10 1/10 1/10) (1/16 1/16 1/16 1/16) (1/16 1/16 1/16 1/16) (1/6 1/6 1/6) (1/6 1/6 1/6) (1/10 1/10 1/10 1/10 1/10) (1/10 1/10 1/10 1/10 1/10)) :omn t) => ((-5h - = = =) (-3h - -) (s - = = = = = =) (-s = - =) (5q - = = =) (-3h - -) (-5h = = = -) (5h - = = =) (-3h = -) (-3h - -) (5h - = = =) (s - = -) (s = - =) (-3h - -) (-3h = -) (-5h = = = =) (5h - = - =)) (setf omn '((q c5gs4f4 e f5c5gs4 e gs5f5c5 s c6gs5f5) (e c6eb5 c5eb4 e eb4c4 eb5c5) (q b4g4d4 e g4d4b3 s d4b3g3 b3g3d3 q g3d3b2))) (rnd-rest 2 omn :seed 11) => ((-q -e gs5f5c5 mf s c6gs5f5) (-e - eb4c4 mf eb5c5) (q b4g4d4 mf e g4d4b3 s d4b3g3 - -q)) -
I asked chatGPT to write a Bach chorale for Opusmodus
opmo replied to etu's topic in Suggestions & Ideas
The ChatGPT 4 is coding lisp quite well. -
Video by Brad Decker: Algorithmically generated score (Opusmodus) through Max to a set of four unique wine glasses, each with a unique resonant frequency. Each glass gets the same audio signal, but only responds to their unique pitch/frequency when it "hears" it. The output from max is a series of sine waves, tuned to the four resonant frequencies of the glasses. (excerpt/prototype/experiment).
-
Short improvisation with three patterns, UNFOLD, PS, function Live Coding Instrument and VSL instruments: alto flute, clarinet, bass clarinet, viennese horn and cello.
-
Live Coding Instrument improvisation, for FM8, Reaktor, Absynth, Vienna Imperial and Prepared Pianos with five scores.
-
Fixed in 3.0.29069
-
Of course, I will put the function back into the system with the next update.
-
rnd-sample-seq and rnd-sample were equal.
-
If you use this library please replace the content of the "Load CL-Collider library.lisp" file with the code below: ;;; ----------------------------------------------------------- ;;; Load CL-Collider library ;;; ----------------------------------------------------------- (in-package :om) ;;; ----------------------------------------------------------- ;;; Please note, the 'Super Collider' application needs ;;; to be installed (present in your Application folder) ;;; before activating the library. ;;; ----------------------------------------------------------- ;;; To load the CL-Collider library at startup you need ;;; to uncomment the expressions below. ;;; ----------------------------------------------------------- (load-cl-collider) ;;; ----------------------------------------------------------- ;;; Start SC and server (in-package :sc) (defparameter *my-server-options* (make-server-options :num-output-bus 32 :block-size 32)) (setf *s* (make-external-server "localhost" :port 4444 :server-options *my-server-options*)) (server-boot *s*) (setf *synth-definition-mode* :load)
-
Great example.
-
The bug is fixed in ver. 3.0.29059 Thank you for the report.
-
I need the v1b data, otherwise difficult to help.
-
function to rnd-order length, pitch,velocity etc of a omn-list
opmo replied to erka's topic in User Extensions Source Code
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. -
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