Jump to content

AM

Members
  • Posts

    792
  • Joined

  • Last visited

Reputation Activity

  1. Like
    AM reacted to erka in merge several rhythms into one   
    There is a merge-voices function.
    (setf r1 '(q e e 3q 3q 3q -e. s)) (setf r2 '(e e e. s -e e s -s s -s)) (setf r3 (merge-voices r1 r2)) => '(z^q c4 e e z^e e^e. s^e s 3q 3e^3q 3e^e 3q s - c4 c4) (omn :length r3)  
    The output looks different from what you expect.  The z^ is not really documented in the omn-language-description but has to do with the :duration in make-omn. You see it in the merge-voices doc. Merge-voices is for omn-lists. It will add a c4 as default if only length are in the list.
     
    With:
    (omn :length r3)  
    you get this: 
    (0 1/8 1/8 0 1/8 1/16 1/16 1/12 1/24 1/24 1/12 1/16 -1/16 1/16 1/16)  
    What the 0 means I don't know.
     
  2. Like
    AM reacted to opmo in Opusmodus 3.0.28902 Update   
    New function in 3.0.28902
     
    rhythm-series num number-of-notes span &key length prob seed
     
    This function returns a list of successive rhythmic series derived from a span (overall duration), length values, and a number of length-notes per bar. The length- notes within each bar are positioned at random.
     
    Simple examples:
     
    (rhythm-series 4 3 3/8) => ((-1/16 1/8 -1/16 1/16 1/16) (1/16 3/16 1/8) (1/8 3/16 1/16) (3/16 1/16 1/8)) (rhythm-series 4 5 3/8) => ((1/16 1/16 1/16 1/8 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/16) (1/16 1/16 1/16 1/16 -1/16 1/16)) (rhythm-series 4 3 1/4) => ((1/16 1/8 1/16) (1/16 1/16 1/8) (1/16 1/8 1/16) (1/16 1/8 1/16))  
    Examples with given length values:
     
    (rhythm-series 4 3 1 :length '(q. e. s)) => ((-1/4 1/16 1/16 1/16 -9/16) (1/8 3/16 -5/16 3/8) (1/16 3/16 -3/8 3/8) (3/16 -1/16 3/8 3/8)) (rhythm-series 6 5 3/8 :length '(q. e. e s 3q) :prob 0.1) => ((1/16 1/16 1/16 1/16 1/8) (1/8 1/16 1/16 1/16 1/16) (1/16 1/8 1/16 1/16 1/16) (1/16 1/8 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/8 1/16)) (rhythm-series 6 5 3/8 :length '(q. e. e s 3q) :prob 0.9) => ((1/12 1/12 1/12 1/12 1/24) (1/24 1/12 1/12 1/12 1/12) (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/16 1/16 1/16 -1/16 1/16 1/16) (1/16 1/16 1/16 1/16 -1/16 1/16))  
    Example with list of unique values for each generated series:
     
    (rhythm-series '(1 4 3 2) '(7 5 7 7) '(3/8 3/8 1/2 3/4) :prob '(.4 .6 .7 .1) :length '(q. e. e s 5q 3q) :seed 34) => ((1/20 1/20 1/20 1/20 1/20 1/20 1/40 -1/20) (1/24 1/12 1/12 1/12 1/12) (1/20 -1/20 1/20 -1/20 1/20 1/20 1/40 -1/20) (1/16 1/16 1/16 1/16 1/8) (1/16 1/16 1/8 1/16 1/16) (1/20 1/20 1/20 1/20 1/20 -1/20 1/20 -1/20 1/20 -1/20) (-1/20 -1/20 1/20 1/20 -1/20 1/20 1/20 1/20 1/20 1/20) (-1/20 1/20 -1/20 1/20 1/20 1/20 1/20 1/20 -1/20 1/20) (-1/16 1/16 1/16 1/16 -1/8 1/16 -1/16 1/16 1/16 1/16 -1/16) (1/12 -1/12 -1/12 1/12 1/12 1/12 1/12 1/12 1/12))  
    OMN example:
     
    (make-omn :length (rhythm-series '(1 4 3 2) '(7 5 7 7) 1/2 :prob '(.4 .6 .7 .1) :length '(q. e. e s) :seed 34) :pitch (gen-chord3 '((cs4 g4 a5) (c4 gs3 a4) (b5 f5 gs5) (b4 fs4 bb5) (cs5 c6 gs4) (e5 g3 a5)) '((6 8 11) (3 5 13) (2 7 11)))) Best wishes, Janusz
  3. Like
    AM reacted to Stephane Boussuge in How to get time signature to repeat for each list in dictum?   
    In that case, you can use substitute-map.  Here's a short example for woodwind trio:
     
    ;;;--------------------------------------------------------- ;;; Parameters (setf material '(#|1|# (q. f4 f e fs4 q d4 s c4 f4 a4 fs4) #|2|# (e d4 f c4 f4 a4 fs4 b4 eb4 f4) #|3|# (h f4 a4) #|4|# (h fs4 f b4) #|5|# (h eb4 f4) #|6|# (q. gs4 mp e c4 q f4 s a4 a4 gs4 b4) #|7|# (h f4 mp a4) #|8|# (q. a4 mp e gs4 q b4 s gs4 c4 b4 fs4) )) (setf fl.index '(1 2 1 3 1 4 5 6 7 8)) (setf ob.index '(3 2 4 3 5 4 6 5 7 6)) (setf bn.index '(1 2 2 1 1 3 3 1 1 4)) (setf ref-list (gen-integer 1 (length material))) (setf flute (substitute-map material ref-list fl.index)) (setf oboe (substitute-map material ref-list ob.index)) (setf bassoon (pitch-transpose -24 (substitute-map material ref-list bn.index))) ;;;--------------------------------------------------------- ;;; Score and Layout (def-score woodwind-trio (:title "Title" :composer "Composer" :copyright "Copyright © " :key-signature 'chromatic :time-signature '((1 1 1 1) 4) :tempo 100 :layout (wind-trio-layout 'flute 'oboe 'bassoon)) (flute :omn flute :channel 1 :sound 'gm :program 'flute :volume 95 :pan 70 :controllers (91 '(52)) ) (oboe :omn oboe :channel 2 :sound 'gm :program 'oboe :volume 95 :pan 54 :controllers (91 '(55)) ) (bassoon :omn bassoon :channel 3 :sound 'gm :program 'bassoon :volume 95 :pan 70 :controllers (91 '(57)) ) ) SB.
  4. Like
    AM reacted to Stephane Boussuge in Etude pour Orchestre du 4.5.2023   
    I’m always amazed by the incredible power of Opusmodus and the inspiration it give to me to compose and explore new possibilities .
    Actually, I'm playing and experimenting a bit with OM and orchestra,
    preparing my next package of video lessons for ComposerWorkshop.com.
    Today, I've made this output from my experiences, nothing extraordinary but I wanted to share it as an example of what we can make with Opusmodus in about 1h.
    It's basically only Slonimsky patterns distributed to the orchestra on an heterophonic way with transpositions from Opusmodus bind-to-interval function (set to "0")
    Stéphane
     
    Etude pour Orchestre 040523.wav
  5. Like
    AM reacted to Wim Dijkgraaf in Converting MIDI or MusicXML to OMN   
    Is anyone working on this? Is it planned in the product roadmap? If not, I would be able to give it a try. But that will be .NET based tool to convert MusicXML to OMN.
     
    Would like to know if it's worth the effort (of value to the community, will not be a feature of OpusModus soon, ...) .
     
  6. Thanks
    AM reacted to Stephane Boussuge in Etude pour ensemble   
    Short study made with the code showed in Zoom into OM No.6.
    Audio output: Musescore 4.
    Etude pour Ensemble V.02 by stephaneboussuge
     
     
  7. Like
    AM got a reaction from Stephane Boussuge in ChatGPT and Coding   
    only trust your own code 😉
     
  8. Like
    AM got a reaction from JulioHerrlein in ChatGPT and Coding   
    only trust your own code 😉
     
  9. Like
    AM reacted to opmo in ChatGPT and Coding   
    Yes, it is full of bugs. I tried all kind of code with mix success. You need a lot of patience to get the correct code - try and try again 🙂
    But still the def-score is almost perfect.
     
  10. Thanks
    AM got a reaction from Pli in ChatGPT and Coding   
    Bildschirmaufnahme 2023-03-18 um 14.05.56.mov    
     
     
     

    OPMO
     
  11. Like
    AM got a reaction from Stephane Boussuge in all intervals in chord   
    just tried in 3min. ouput correct or perhaps some BUGs in thinking? 😁
    greetings
    andré
     
    (defun get-all-intervals (alist) (let ((alist (sort-asc (flatten (pitch-to-midi (if (chordp alist) (melodize alist) alist)))))) (rest (sort-asc (remove-duplicates (loop repeat (length alist) for cnt = 0 then (incf cnt) append (x-b (filter-last (- (length alist) cnt) alist) (nth cnt alist)))))))) (get-all-intervals '(c4 d4 e4)) => (2 4) (get-all-intervals '(c4d4e4f6)) => (2 4 25 27 29)  
  12. Thanks
    AM got a reaction from hujairi in sending OSC data to MAX   
    here is the solution to send any data by OSC!
    a big thanks to janusz who made it for me/us!! now a wide variety of externals can be controlled via OSC, in any format... (not only reaktor)
     
    (defun osc-send (&rest args) (let* ((host #(127 0 0 1)) ;; host (port 7500) ;; port (s (usocket:socket-connect host port :protocol :datagram :element-type '(unsigned-byte 8))) (b (apply' osc:encode-message args))) (format t "sending to ~a on port ~A~%~%" host port) (unwind-protect (usocket:socket-send s b (length b)) (when s (usocket:socket-close s))))) (osc-send "/player" "120" 1 1 1) (osc-send "/beat" "defer" 0 "duration" 1 "pattern" 12)  
  13. Like
  14. Like
    AM reacted to opmo in Micropolyphone series   
    The score - above - is working again - dictum.
  15. Like
    AM reacted to opmo in Micropolyphone series   
    More functionality in MICROPOLYPHONE to control the complexity:
     
    (progn (setf interval-series '((0) (1 -1 2 -2) (6 -6 11 -11) (13 -13))) (micropolyphony 4 40 1/16 1/4 :intervals interval-series :interval-prob '(.2 .2 .3 .3) :length-prob '(.1 .9 .5 .9) :proportional t :index 'a :seed 830134 :span 7 ) (micropolyphony 4 40 1/16 1/2 :intervals interval-series :interval-prob '(.2 .2 .3 .9) :length-prob '(.2 .9 .4 .9) :proportional t :index 'b :seed 855650 :span 13 ) (setf rh-a (quantize (ambitus-chord 13 (dissolve-voices (merge-voices a1 a2))) '(1 2 4)) lh-a (quantize (ambitus-chord 13 (dissolve-voices (merge-voices a3 a4))) '(1 2 4)) rh-b (quantize (ambitus-chord 13 (dissolve-voices (merge-voices b1 b2))) '(1 2 4)) lh-b (quantize (ambitus-chord 13 (dissolve-voices (merge-voices b3 b4))) '(1 2 4)) ) (setf rh-1 (omn-to-time-signature (assemble-seq rh-a rh-b) '(4 4)) lh-1 (omn-to-time-signature (assemble-seq lh-a lh-b) '(4 4)) ) (setf rh (dictum '((:do p) (:do mf :bar (1..5)) (:do > :bar (5..7 16..20)) (:last pp :bar 20) (:last fermata :bar 20)) rh-1) lh (dictum '((:do p) (:do mf :bar (1..5)) (:do > :bar (5..7 16..20)) (:last pp :bar 20) (:last fermata :bar 20)) lh-1) ) (ps 'gm :p (list (ambitus '(0 45) rh) (ambitus '(-32 -1) lh)) :tempo 112) )  
    MP Series.mp3
  16. Like
    AM got a reaction from Stephane Boussuge in sending OSC data to MAX   
    here is the solution to send any data by OSC!
    a big thanks to janusz who made it for me/us!! now a wide variety of externals can be controlled via OSC, in any format... (not only reaktor)
     
    (defun osc-send (&rest args) (let* ((host #(127 0 0 1)) ;; host (port 7500) ;; port (s (usocket:socket-connect host port :protocol :datagram :element-type '(unsigned-byte 8))) (b (apply' osc:encode-message args))) (format t "sending to ~a on port ~A~%~%" host port) (unwind-protect (usocket:socket-send s b (length b)) (when s (usocket:socket-close s))))) (osc-send "/player" "120" 1 1 1) (osc-send "/beat" "defer" 0 "duration" 1 "pattern" 12)  
  17. Like
    AM got a reaction from vpolajnar in sending OSC data to MAX   
    here is the solution to send any data by OSC!
    a big thanks to janusz who made it for me/us!! now a wide variety of externals can be controlled via OSC, in any format... (not only reaktor)
     
    (defun osc-send (&rest args) (let* ((host #(127 0 0 1)) ;; host (port 7500) ;; port (s (usocket:socket-connect host port :protocol :datagram :element-type '(unsigned-byte 8))) (b (apply' osc:encode-message args))) (format t "sending to ~a on port ~A~%~%" host port) (unwind-protect (usocket:socket-send s b (length b)) (when s (usocket:socket-close s))))) (osc-send "/player" "120" 1 1 1) (osc-send "/beat" "defer" 0 "duration" 1 "pattern" 12)  
  18. Like
    AM reacted to erka in length-modify   
    I rewrote the function, so I can enter any length-symbol or ratio and don't have to make complicated calculations. Looks good to me and does what I wanted.
    I don't use length-modify anymore. But still wonder way 'all is not a feature.
    If you have any suggestions regarding style or other optimization please let me know.
    I had entered this forum in 2015 but was into other things until release of v3. In case you are wondering. Just starting again with lisp and opusmodus.
    I made a short score and my wife smiled while listening. 🙂 
     
    text2morse-length.opmo
  19. Thanks
    AM got a reaction from JulioHerrlein in append item to all sublists   
    like that?
     
    ;; as lisp-code ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (setf alist '((s -s s== -s -s== s== -s s -s s -s s -s==) (s== -s s -s s== -s s -s== s== -s s -s s -s==) (s -s== s -s s -s s== -s s -s==))) (loop for i in alist collect (append i (list 'q))) => ((s -s s== -s -s== s== -s s -s s -s s -s== q) (s== -s s -s s== -s s -s== s== -s s -s s -s== q) (s -s== s -s s -s s== -s s -s== q)) ;; as lisp-function ;;;;;;;;;;;;;;;;;;;;;;;;;; (defun append-value (lists value) (loop for i in lists collect (append i (list value)))) (append-value alist 'q) => ((s -s s== -s -s== s== -s s -s s -s s -s== q) (s== -s s -s s== -s s -s== s== -s s -s s -s== q) (s -s== s -s s -s s== -s s -s== q))  
  20. Like
    AM got a reaction from Stephane Boussuge in append item to all sublists   
    like that?
     
    ;; as lisp-code ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (setf alist '((s -s s== -s -s== s== -s s -s s -s s -s==) (s== -s s -s s== -s s -s== s== -s s -s s -s==) (s -s== s -s s -s s== -s s -s==))) (loop for i in alist collect (append i (list 'q))) => ((s -s s== -s -s== s== -s s -s s -s s -s== q) (s== -s s -s s== -s s -s== s== -s s -s s -s== q) (s -s== s -s s -s s== -s s -s== q)) ;; as lisp-function ;;;;;;;;;;;;;;;;;;;;;;;;;; (defun append-value (lists value) (loop for i in lists collect (append i (list value)))) (append-value alist 'q) => ((s -s s== -s -s== s== -s s -s s -s s -s== q) (s== -s s -s s== -s s -s== s== -s s -s s -s== q) (s -s== s -s s -s s== -s s -s== q))  
  21. Like
    AM got a reaction from opmo in change randomly lengths to rests   
    (setf alist '(1/4 1/4 1/8 1/8 1/4 1/4)) (setf n 3) (length-invert '(1/4 1/4 1/8 1/8 1/4 1/4) :section (rnd-sample n (gen-integer 0 (1- (length alist))) :norep t))  
  22. Like
    AM got a reaction from j111 in sending OSC data to MAX   
    dear all
     
    i would like to send some specific data via OSC to MAX... 
    i can send "something" to max 
     
    (defparameter max '(127.0.0.1 7500)) ;; that works  
    SEND data to MAX
    and i would like to send the following seq to MAX by OSC 
    /player "12" 1.0 1.0 1.0
     
    but how to do it / format it in OMPO?
     
    ;; data should be "113" 1 1. 25000 => but how to "format"? -> see the MAX form ;; ??? (send-osc-data (create-osc-thread "player" max) data)  
    /player is sended but not the rest of teh sequence 
     
     
    here is a screenshot from MAX, it worked with an external library (in CCL) but i would like to do it "directly" in OPMO.
     

     
    in MAX, that's what i'm sending - for example - as an internal test

     
     
    thanx for some help...!!
    andré
  23. Like
    AM reacted to Stephane Boussuge in New video Course "Introduction to OM" on Composerworkshop.com   
    Hi folks,
     
    I'm very happy to announce the release of the first video pack lesson "Introduction to Opusmodus" on composerworkshop.com.
     
    Composer Workshop
    WWW.COMPOSERWORKSHOP.COM  
    This introduction start with a quick "Crash course" to dive quickly into the software to get fun rapidly.
    The second and third parts of this course goes more deeper into the exploration of the basics of Opusmodus like pitch generation, length generation, using MAKE-OMN, etc... This is an introductory course to our beloved software. I'm working now on future courses  packs on a bunch of different subject.
     
    Naturally, the free Zoom into Opusmodus series continue with a weekly video release.
     
    Happy Opusmodusing !
     
    SB.
  24. Thanks
    AM reacted to Stephane Boussuge in Flixbus for ensemble   
    Hi Julio, I think you have to refresh the page because I've changed the YouTube link, normally, now it works.
     
    Here's the Opmo score.
     
    SB.
    Flixbus-V1-1.opmo
  25. Like
    AM reacted to opmo in midi-entry / data saving   
    Possibly we need to make changes to the send-osc-data function.
    You might need come to Venice in order to find the solution. 🙂
×
×
  • Create New...

Important Information

Terms of Use Privacy Policy