Jump to content

AM

Members
  • Posts

    792
  • Joined

  • Last visited

Reputation Activity

  1. Like
    AM reacted to Stephane Boussuge in Invocation for Ensemble   
    New piece made with OM with the algorithms presented in ComposerWorkshop: 5 Opusmodus Lessons
     

    stephaneboussuge · Invocation pour ensemble  
  2. Like
    AM got a reaction from Stephane Boussuge in position-insert-seq   
    kind of ... "position-insert" with OVERWRITE
     
    (defun position-insert-seq (&key alist insert item) (let ((pos (car (position-item item alist)))) (position-replace (gen-integer pos (+ pos (1- (length insert)))) insert alist))) (setf alist '(0 0 0 0 0 0 1 0 2 0 0 0 3 5 7)) (setf insert '(a b c d)) (position-insert-seq :alist '(0 0 0 0 0 0 1 0 2 0 0 0 3 5 7) :insert '(a b c d) :item 2) => (0 0 0 0 0 0 1 0 a b c d 3 5 7)  
  3. Like
    AM got a reaction from erka in position-insert-seq   
    kind of ... "position-insert" with OVERWRITE
     
    (defun position-insert-seq (&key alist insert item) (let ((pos (car (position-item item alist)))) (position-replace (gen-integer pos (+ pos (1- (length insert)))) insert alist))) (setf alist '(0 0 0 0 0 0 1 0 2 0 0 0 3 5 7)) (setf insert '(a b c d)) (position-insert-seq :alist '(0 0 0 0 0 0 1 0 2 0 0 0 3 5 7) :insert '(a b c d) :item 2) => (0 0 0 0 0 0 1 0 a b c d 3 5 7)  
  4. Like
    AM got a reaction from opmo in gen-summationsakkord / claus kühnl   
    here ist some code to generate "Summationsakkorde" (CLAUS KüHNL)... have a look to the PDF...
    (from the book "Claus Kühnl: Beiträge zu einer HArmonielehre 2000" Friedrich Hofmeister Musikverlag. p.42+)
     
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun gen-summationsakkord (primaerint &key (n 10)(typ 'ks) (gedachter-grundton 'c0) (quant 1/2) (chord t)) (let ((partial-reihe (hertz-to-pitch (harmonics gedachter-grundton 100 :type :hertz) :quantize quant)) (partial-liste (remove-duplicates (append primaerint (list (sum primaerint)) (loop repeat n with k-int = (sum primaerint) with g-int = (sum primaerint) with a = (first primaerint) with b = (second primaerint) collect (cond ((equal typ 'ks) (setf k-int (+ (car primaerint) k-int))) ((equal typ 'gs) (setf g-int (+ (second primaerint) g-int))) ((equal typ 'fibo) (shiftf a b (+ a b))))))))) (if (null chord) (position-filter (x-b partial-liste 1) partial-reihe) (chordize (position-filter (x-b partial-liste 1) partial-reihe))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (gen-summationsakkord '(2 3) :typ 'ks :gedachter-grundton 'c2) (gen-summationsakkord '(2 3) :typ 'gs :gedachter-grundton 'c2) (gen-summationsakkord '(2 3) :typ 'fibo :gedachter-grundton 'c2) (gen-summationsakkord '(2 3) :typ 'ks :gedachter-grundton 'c2 :quant nil) (gen-summationsakkord '(3 4) :typ 'ks :gedachter-grundton 'f1) (gen-summationsakkord '(3 4) :typ 'gs :gedachter-grundton 'f1) (gen-summationsakkord '(3 4) :typ 'fibo :gedachter-grundton 'f1)  
    Doc - 03.08.2022 - 20-41.pdf
     
  5. Like
    AM reacted to opmo in Rhythmic Curve between defined values   
    This can't be displayed in notation. How do you display 1/139 etc...
     
    (setf step 8) (setf den (gen-integer 144 88 step)) => (144 136 128 120 112 104 96 88) (loop for i in den       collect (/ 1 i)) => (1/144 1/136 1/128 1/120 1/112 1/104 1/96 1/88)  
    This ratios making no sense in notation, this is why we use tempo changes - rit. and accel.
  6. Like
    AM reacted to opmo in New Video - Partial Pulse   
  7. Like
    AM got a reaction from Stephane Boussuge in Filter-repeat 1   
    dear david
    this could be helpful for you... some basic-syntax-tutorials
    have fun!
    andré
     
     
    well explainend
     
     
  8. Like
    AM got a reaction from opmo in Filter-repeat 1   
    dear david
    this could be helpful for you... some basic-syntax-tutorials
    have fun!
    andré
     
     
    well explainend
     
     
  9. Like
  10. Like
    AM reacted to opmo in list sum   
    The function scale-to-sum is part of OM 3.0.29095
  11. Like
    AM reacted to Stephane Boussuge in Movement between changing borders   
    Hi;
     
    here's a possible solution:
     
    (progn (setf noise (gen-noise 50 :seed 425)) (setf env1 '(50 51 52 53 54)) (setf env2 '(60 59 58 57 56)) (list-plot (vector-to-envelope2 env1 env2 noise)) ) S.
  12. Like
    AM reacted to Stephane Boussuge in Function to change an event in an omn sequence into a rest   
    I've made a little string trio score to test this fun new function.
     
    Here it is attached to this post.
     
    Enjoy !
     
    S.
     
    Mouvement de Trio pour cordes (etude fn rnd-rest).mp3 String Trio.opmo
  13. Like
    AM got a reaction from erka in prob-mutation   
    (defun prob-mutation (alist blist &key (factor 1) (prob-list nil)) (loop for a in alist for b in blist for x in (if (null prob-list) (cumulative-sums (gen-repeat (length alist) (float (/ factor (length alist))))) prob-list) when (probp x) collect b else collect a)) ;;; with linear prob-incf (prob-mutation (gen-repeat 100 1) (gen-repeat 100 2)) => (1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 2 2 2 1 1 1 1 2 2 1 2 2 2 1 1 1 1 1 2 1 1 1 1 1 2 2 1 1 2 2 1 1 2 2 2 2 1 1 2 2 2 1 1 2 1 1 1 1 2 2 2 2 2 2 2 2 2 1 2 2 2 2 1 2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2) ;;; with an external prob-list 0 to 1.0 to 0 (setf half-sine (filter-first 100 (gen-sine 200 1 1.0))) (prob-mutation (gen-repeat 100 1) (gen-repeat 100 2) :prob-list half-sine) => (1 1 1 1 1 1 1 1 1 2 2 1 1 2 2 1 2 1 2 1 1 2 2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 2 2 2 1 1 1 2 2 2 2 2 2 2 1 1 2 1 2 1 2 1 1 2 1 1 2 1 1 1 2 1 1) ;;; with an external prob-list 0 to 0.3 to 0 (setf half-sine (filter-first 100 (gen-sine 200 1 0.3))) (prob-mutation (gen-repeat 100 1) (gen-repeat 100 2) :prob-list half-sine) => (1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 2 1 1 1 2 1 1 1 1 1 2 1 2 1 1 2 1 2 1 2 1 1 1 2 1 1 1 2 1 1 2 1 1 2 1 1 1 2 1 1 1 1 2 1 2 1 2 1 1 1 1 1 2 1 1 2 2 1 2 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1)  
  14. Thanks
    AM got a reaction from Stephane Boussuge in prob-mutation   
    (defun prob-mutation (alist blist &key (factor 1) (prob-list nil)) (loop for a in alist for b in blist for x in (if (null prob-list) (cumulative-sums (gen-repeat (length alist) (float (/ factor (length alist))))) prob-list) when (probp x) collect b else collect a)) ;;; with linear prob-incf (prob-mutation (gen-repeat 100 1) (gen-repeat 100 2)) => (1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 2 2 2 1 1 1 1 2 2 1 2 2 2 1 1 1 1 1 2 1 1 1 1 1 2 2 1 1 2 2 1 1 2 2 2 2 1 1 2 2 2 1 1 2 1 1 1 1 2 2 2 2 2 2 2 2 2 1 2 2 2 2 1 2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2) ;;; with an external prob-list 0 to 1.0 to 0 (setf half-sine (filter-first 100 (gen-sine 200 1 1.0))) (prob-mutation (gen-repeat 100 1) (gen-repeat 100 2) :prob-list half-sine) => (1 1 1 1 1 1 1 1 1 2 2 1 1 2 2 1 2 1 2 1 1 2 2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 2 2 2 1 1 1 2 2 2 2 2 2 2 1 1 2 1 2 1 2 1 1 2 1 1 2 1 1 1 2 1 1) ;;; with an external prob-list 0 to 0.3 to 0 (setf half-sine (filter-first 100 (gen-sine 200 1 0.3))) (prob-mutation (gen-repeat 100 1) (gen-repeat 100 2) :prob-list half-sine) => (1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 2 1 1 1 2 1 1 1 1 1 2 1 2 1 1 2 1 2 1 2 1 1 1 2 1 1 1 2 1 1 2 1 1 2 1 1 1 2 1 1 1 1 2 1 2 1 2 1 1 1 1 1 2 1 1 2 2 1 2 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1)  
  15. Like
    AM reacted to opmo in Function to change an event in an omn sequence into a rest   
    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.
  16. Like
    AM got a reaction from opmo in Function to change an event in an omn sequence into a rest   
    very nice, like a SIEVE!! 
    if it would be like: 
    (rnd-rest '(8 7 6 5 4 3 2 1) omn-seq) you could manage the event-density in time...
     
    or...
    (rnd-rest '(0.1 0.2 0.23 0.4 0.7 0.6 0.3 0.43 0.91) omn-seq)  
    ...perhaps also with (gen-envelope-tendency) (or something like that
     
    just a spontanious idea 🙂
     
  17. Like
    AM got a reaction from Stephane Boussuge in Function to change an event in an omn sequence into a rest   
    very nice, like a SIEVE!! 
    if it would be like: 
    (rnd-rest '(8 7 6 5 4 3 2 1) omn-seq) you could manage the event-density in time...
     
    or...
    (rnd-rest '(0.1 0.2 0.23 0.4 0.7 0.6 0.3 0.43 0.91) omn-seq)  
    ...perhaps also with (gen-envelope-tendency) (or something like that
     
    just a spontanious idea 🙂
     
  18. Thanks
    AM reacted to opmo in Function to change an event in an omn sequence into a rest   
    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))  
  19. Like
    AM got a reaction from opmo in OSC to PolytempoNetwork   
    just a snippet... how i/you can use OPMO for some other things (TIME LAPS test mode, just to see if my code is working correctly). 
    i like the openness of the system.
     

    Bildschirmaufnahme 2023-08-30 um 23.09.15.mov    
  20. Like
    AM got a reaction from Stephane Boussuge in OSC to PolytempoNetwork   
    just a snippet... how i/you can use OPMO for some other things (TIME LAPS test mode, just to see if my code is working correctly). 
    i like the openness of the system.
     

    Bildschirmaufnahme 2023-08-30 um 23.09.15.mov    
  21. Like
    AM got a reaction from opmo in I asked chatGPT to write a Bach chorale for Opusmodus   
    okay, then i will try again 😁
  22. Like
    AM got a reaction from Stephane Boussuge in How do I reference multiple variables?   
    Practical Common Lisp
    GIGAMONKEYS.COM
  23. Like
    AM got a reaction from opmo in How do I reference multiple variables?   
    Practical Common Lisp
    GIGAMONKEYS.COM
  24. Like
    AM reacted to etu in I asked chatGPT to write a Bach chorale for Opusmodus   
    I asked a wide variety of chat bots to write code for Opusmodus.  All of them produced results with mistakes, and all of them repeated mistakes after being corrected.  The free version of chatGPT 3.5 (chat.openai.com) was the best of them all.  It still repeats mistakes sometimes when asked to modify previous code or generate new code, but overall I'm happy with the results.  I still struggle to create original works from scratch with Opusmodus, and this gives me lots of working examples I can generate by describing what I want to make.
    chatgpt bach corale3.opmo
  25. Thanks
    AM got a reaction from opmo in rnd-sample-seq   
    thanx! this software is such a great tool!!! 
×
×
  • Create New...

Important Information

Terms of Use Privacy Policy