Jump to content

Stephane Boussuge

Moderators
  • Posts

    1,070
  • Joined

  • Last visited

Reputation Activity

  1. Like
    Stephane Boussuge reacted to TomTolleson in Opusmodus training classes in NYC   
    Hello,
     
    I've noticed that there are a lot of great video and text resources for learning Opusmodus. However, I find that I generally learn more with a comprehensive hands-on experience under the guidance of an instructor who can discuss my questions with me.
     
    I live in New York City and have searched online for any local training or resources and haven't found anything. I'm posting this in case anyone on the forum might be able to point me in the right direction.
     
    Thanks!
     
    Tom
  2. Like
    Stephane Boussuge reacted to Rangarajan in Using Optima in Opusmodus   
    Hi,
    A few weeks ago, I wrote about the Optima Pattern Matching library. In today's post, I have given a simple example of using the library to post-process a score, after reading a MIDI file.
     
    Regards,
    Rangarajan
  3. Like
    Stephane Boussuge got a reaction from opmo in Rock It !! for Piano from Piano suite No.1   
    Hi,
     
    here's a new piece for Piano solo extracted from my piano suite No.1 (work in Progress).
    The suite is a succession of small piece in different moods.
    This one is a bit Rock ;-)
     The score is attached to this post.

     
     
     
    SB
    RockIt.opmo
  4. Like
    Stephane Boussuge got a reaction from RST in Articulations - post processing   
    Hi,
     
    often when we generate articulation and particularly legato articulation with functions like LENGTH-MAP, the legato slur could finished on marc or stacc notes like that:
     

     
    a possible way for improve this could be to use a post processing of LENGTH-MAP outputs with a MOTIF-MAP function:
     

     
    Attached to this post, a work in progress, Flux for ensemble, as an example of a possible use "in context" of this technique.
     
    Have a good day.
     
    SB.
     
    Flux-Extrait.pdf
    flux1.mp3
    Flux1-02.opmo
  5. Like
    Stephane Boussuge reacted to opmo in Small Tuplet Qestion OMN   
    (3q c4 <> ten 3e fs4 ten g5 ten 3s f4 fs5 tie 3e fs5 tie q fs5)  
  6. Like
    Stephane Boussuge reacted to RST in Pitch Mapping Project Idea   
    Here is a small project to explore pitch-mapping.  There are some results but not the best ones yet.  If anyone has an idea on how to improve this I would really appreciate the advice.  What would be ideal as the result would be the same musical list (and notation) but with the transformed pitches.  As you can see from the result, there are many changes and the result is not clean but rather seriously garbled instead! 
     
    The goal is to remap the pitch content of the original with a new tonality-map.  Here is the beginning attempt.  A confusing element is the return of NIL when parsing :articulation from the original material.
     
    ;;; Pitch mapping project idea
    ;;; Original musical sequence:
    (setf alto-flute-orig
    '(
    (-q e b4 -e (-app e eb4 f4) h. eb4 (-acc e f4 eb4 f4))

    (-3q 3q b4 -3q (-app e eb4 f4) q eb4 (-acc e f4) h eb4 (-acc e f4 a4 b4))
    (-q e f5 -e (-app e b4 ds5) a4 (-app e. g4) a4 t b4 a4 b4 -e (-app e eb5) e f5) 
    ((acc e b4 d5 ds5) q. c5 (acc s f5) e. b4 (acc e c5 d5 ds5) e. a4 (acc e b4 a4) e b4)
    (-q e b4 (app e f4 a4 f4) e b4 t g4 a4 eb4 a4 q. b4 (-acc e f4 a4) h bb4 t bb4 c5)  
    (-e. b4 -e (acc a4 b4) h bb4 (app e c5) q b4 (acc e d5 ds5 e5) q. b4 (app e f4 bb4) s c5)
    (-e gs5 3s a4 d4 gs4 -e. bb4 tie q bb4 (3e b4 a4 b4 -e -e))
    ((acc e a4 b4 fs4) h c5 (acc e b4) q c5 (acc e ds5 e5 fs5) 3e b4 c5 fs4 q a4 tie q a4 tie e. a4 s bb4 a4 e b4)
    (-e (acc e eb4) h f4 tie e. f4 s gb5 -e (acc eb5 f5) e e5 tie q e5 tie 3q e5 3q e5 3q f5 3q b4 -3q -3q)
    ((acc e bb4 b4) a4 (acc e bb4) h a4 (acc e bb4) e a4 s gs5 -s)
    )
    )
     
    ;;;
    ;;; Disassemble OMN: There are some errors here - in particular for :articulation which seems to return NIL
    (disassemble-omn alto-flute-orig)
    (setf pit (omn :pitch alto-flute-orig))
    (setf len (omn :length alto-flute-orig))
    ;;; next line result is confusing - returns nil
    (setf art (omn :articluation alto-flute-orig))
    ;;; next line returns a result
    (setf artr (omn :rest-articulation alto-flute-orig))
     
    ;;; Create 12-tone mapping and pitch transformation of original
    (setf map '(0 1 3 4 7 8 10 11 17 18 21))
    (setf mapping (integer-to-pitch map))
    (create-tonality 12T2 '(0 1 3 4 7 8 10 11 17 18 21))
    (setf output (tonality-map '(12T2 :root c3 :fixed t) pit))
     
    ;;; Assemble the parameters into a new OMN with transformed pitches
    (make-omn 
     :length len
     :pitch output
     :articulation art
     :rest-articulation artr
    )
    ;;; The result is unsuable so far.  There are some things to iron-out here! :-)
  7. Like
    Stephane Boussuge got a reaction from opmo in Prelude pour Piano   
    Hi,
     
    here is a new piece, Prelude pour Piano.

     
    Happy listening !
     
    Stéphane.
     
     
  8. Like
    Stephane Boussuge got a reaction from lviklund in Articulations - post processing   
    Hi,
     
    often when we generate articulation and particularly legato articulation with functions like LENGTH-MAP, the legato slur could finished on marc or stacc notes like that:
     

     
    a possible way for improve this could be to use a post processing of LENGTH-MAP outputs with a MOTIF-MAP function:
     

     
    Attached to this post, a work in progress, Flux for ensemble, as an example of a possible use "in context" of this technique.
     
    Have a good day.
     
    SB.
     
    Flux-Extrait.pdf
    flux1.mp3
    Flux1-02.opmo
  9. Like
    Stephane Boussuge got a reaction from opmo in Articulations - post processing   
    Hi,
     
    often when we generate articulation and particularly legato articulation with functions like LENGTH-MAP, the legato slur could finished on marc or stacc notes like that:
     

     
    a possible way for improve this could be to use a post processing of LENGTH-MAP outputs with a MOTIF-MAP function:
     

     
    Attached to this post, a work in progress, Flux for ensemble, as an example of a possible use "in context" of this technique.
     
    Have a good day.
     
    SB.
     
    Flux-Extrait.pdf
    flux1.mp3
    Flux1-02.opmo
  10. Like
    Stephane Boussuge got a reaction from lviklund in Opusmodus Fun   
    Just for the pleasure to share a small track made as a small exercise and experimentation with my favorite software ;-)
     
     
     
  11. Like
    Stephane Boussuge got a reaction from opmo in Opusmodus Fun   
    Just for the pleasure to share a small track made as a small exercise and experimentation with my favorite software ;-)
     
     
     
  12. Like
    Stephane Boussuge reacted to Rangarajan in Optima Pattern Matching Library   
    As part of my research into other tools that can be used along with Opusmodus, in today's post I have given a basic introduction to the Optima Lisp library for pattern matching. I hope to continue the discussion in the next couple of posts as well. I think this library will be useful if we want to do any operations in Opusmodus involving pattern matching, for example, reading a score and looking for specific patterns in it.
     
    Regards,
    Rangarajan
  13. Like
    Stephane Boussuge got a reaction from opmo in Score post processing   
    Hi,
    i have composed a short strings trio as an example of how to use score post processing techniques, ie. change things in a score after the OMN generation by the opmo functions.
     
    Score script and mp3  attached to this post.
    SB.
    StringsTrio210516g-GM.opmo
    StringsTrio210516g.mp3
  14. Like
    Stephane Boussuge reacted to opmo in bug -> rhythm-values   
    New length rewrite in OM update (coming soon):
     
    (7/20 7/20 3/10 3/10)  

  15. Like
    Stephane Boussuge got a reaction from opmo in Abyss1   
    Recorded LiveCoding improvisation performance.

     
    SB.
  16. Like
    Stephane Boussuge got a reaction from marzullo in Abyss1   
    Recorded LiveCoding improvisation performance.

     
    SB.
  17. Like
    Stephane Boussuge got a reaction from hujairi in Orchestral Section maker template   
    Hi,
     
    Attached to this post, you will find an Orchestral template based on the Opusmodus Orchestra Romantic Template.
    This template is made with some ready to use configuration and parameters, i.e.; you can start to use it immediately for your own composition, just change the parameters, tweak them, explore and experiment.
     
    I made this template for help the people who start with Opusmodus and want to have immediate fun with it and want to learn by hacking more than by coding ;-)
     
    You also will find attached a possible raw audio example of a possible basic output of the template used in his most basic form (just evaluated and play).
    SB.
     
    ExampleOrchestralSectionMakerTemplate.mp3
    OrchlRmtcSectionMk.opmo
  18. Like
    Stephane Boussuge reacted to AM in hysteresis-function   
    "hysterical" with a value-list = multiple states :-)
     
    ;;;; SUBFUNCTIONS (defun weighted-random (list) (loop for item in list with rand-num = (random (loop for x in list sum (second x))) for add = (second item) then (+ add (second item)) when (< rand-num add) return (first item))) (defun weighted-t/nil (on-weight) (let ((off-weight (- 1 on-weight))) (weighted-random (list (list 't on-weight) (list 'nil off-weight))))) (weighted-t/nil 0.5) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; MAINFUNCTION (defun binary-hysteresis-1.2 (&key number-of-values (value-list '((0 1) (4 0) (0 1) (4 7))) (start-weight 0.1) (sensitivity 0.02) (static 1.0)) (loop repeat number-of-values with weight = start-weight with cnt1 = 0 with cnt-v = 0 when (equal (weighted-t/nil weight) 'nil) collect (first (nth cnt-v value-list)) else collect (second (nth cnt-v value-list)) and do (incf cnt1) when (= cnt1 3) do (setq weight (+ weight sensitivity) cnt1 0) when (> weight static) do (incf cnt-v) and do (setq weight start-weight) when (= cnt-v (length value-list)) do (setq cnt-v 0))) ;;example (length-list-plot (binary-hysteresis-1.2 :number-of-values 600 :start-weight 0.1 :sensitivity 0.05 :value-list '((0 1) (10 2) (7 3)) :static 2.0))  
  19. Like
    Stephane Boussuge got a reaction from opmo in gen-pitch-line (from vector)   
    ;;; ------------------------------------------------------------------------------ ;;; GEN-PITCH-LINE ;;; Pitch generation function based on noise vectors conversion with a large choice of ;;; types of noises, compress ratio for the vector, filtering repetitions and ambitus. (defun gen-pitch-line (nb-pitch &key (compress 1) (ambitus '(c4 c6)) seed filter-repeat (type :white)) (do-verbose ("gen-pitch-line") (rnd-seed seed) (labels ((white (nb-pitch &key (compress 1) (ambitus '(c4 c6)) seed filter-repeat type) (if filter-repeat (gen-trim nb-pitch (filter-repeat filter-repeat (vector-to-pitch ambitus (vector-smooth compress (gen-white-noise nb-pitch :seed seed :type type))))) (vector-to-pitch ambitus (vector-smooth compress (gen-white-noise nb-pitch :seed seed :type type))))) (pink (nb-pitch &key (compress 1) (ambitus '(c4 c6)) seed filter-repeat) (if filter-repeat (gen-trim nb-pitch (filter-repeat filter-repeat (vector-to-pitch ambitus (vector-smooth compress (gen-pink-noise nb-pitch :seed seed))))) (vector-to-pitch ambitus (vector-smooth compress (gen-pink-noise nb-pitch :seed seed))))) ) (cond ((equal type ':white) (white nb-pitch :compress compress :ambitus ambitus :filter-repeat filter-repeat :seed (seed) :type :normal)) ((equal type ':binary) (white nb-pitch :compress compress :ambitus ambitus :filter-repeat filter-repeat :seed (seed) :type :binary)) ((equal type ':cauchy) (white nb-pitch :compress compress :ambitus ambitus :filter-repeat filter-repeat :seed (seed) :type :cauchy)) ((equal type ':chi-square-2) (white nb-pitch :compress compress :ambitus ambitus :filter-repeat filter-repeat :seed (seed) :type :chi-square-2)) ((equal type ':double-exponential) (white nb-pitch :compress compress :ambitus ambitus :filter-repeat filter-repeat :seed (seed) :type :double-exponential)) ((equal type ':exponential) (white nb-pitch :compress compress :ambitus ambitus :filter-repeat filter-repeat :seed (seed) :type :exponential)) ((equal type ':extreme) (white nb-pitch :compress compress :ambitus ambitus :filter-repeat filter-repeat :seed (seed) :type :extreme)) ((equal type ':gaussian) (white nb-pitch :compress compress :ambitus ambitus :filter-repeat filter-repeat :seed (seed) :type :gaussian)) ((equal type ':logistic) (white nb-pitch :compress compress :ambitus ambitus :filter-repeat filter-repeat :seed (seed) :type :logistic)) ((equal type ':lognormal) (white nb-pitch :compress compress :ambitus ambitus :filter-repeat filter-repeat :seed (seed) :type :lognormal)) ((equal type ':triangular) (white nb-pitch :compress compress :ambitus ambitus :filter-repeat filter-repeat :seed (seed) :type :triangular)) ((equal type ':low-pass) (white nb-pitch :compress compress :ambitus ambitus :filter-repeat filter-repeat :seed (seed) :type :low-pass)) ((equal type ':high-pass) (white nb-pitch :compress compress :ambitus ambitus :filter-repeat filter-repeat :seed (seed) :type :high-pass)) ((equal type ':pink) (pink nb-pitch :compress compress :ambitus ambitus :filter-repeat filter-repeat :seed (seed))))))) #| USAGE (gen-pitch-line 24 :compress 0.42 :type :white :filter-repeat 1) (gen-pitch-line 24 :compress 0.42 :type :pink :filter-repeat 1) (gen-pitch-line 24 :compress 0.42 :type :extreme :filter-repeat 1) (gen-eval 8 '(make-omn :pitch (gen-pitch-line 24 :compress 0.42 :type :white :filter-repeat 1) :length (euclidean-rhythm 16 1 16 's :type 2) ) :seed 33) |# ;;; ------------------------------------------------------------------------------ SB.
  20. Like
    Stephane Boussuge got a reaction from Rangarajan in gen-pitch-line (from vector)   
    ;;; ------------------------------------------------------------------------------ ;;; GEN-PITCH-LINE ;;; Pitch generation function based on noise vectors conversion with a large choice of ;;; types of noises, compress ratio for the vector, filtering repetitions and ambitus. (defun gen-pitch-line (nb-pitch &key (compress 1) (ambitus '(c4 c6)) seed filter-repeat (type :white)) (do-verbose ("gen-pitch-line") (rnd-seed seed) (labels ((white (nb-pitch &key (compress 1) (ambitus '(c4 c6)) seed filter-repeat type) (if filter-repeat (gen-trim nb-pitch (filter-repeat filter-repeat (vector-to-pitch ambitus (vector-smooth compress (gen-white-noise nb-pitch :seed seed :type type))))) (vector-to-pitch ambitus (vector-smooth compress (gen-white-noise nb-pitch :seed seed :type type))))) (pink (nb-pitch &key (compress 1) (ambitus '(c4 c6)) seed filter-repeat) (if filter-repeat (gen-trim nb-pitch (filter-repeat filter-repeat (vector-to-pitch ambitus (vector-smooth compress (gen-pink-noise nb-pitch :seed seed))))) (vector-to-pitch ambitus (vector-smooth compress (gen-pink-noise nb-pitch :seed seed))))) ) (cond ((equal type ':white) (white nb-pitch :compress compress :ambitus ambitus :filter-repeat filter-repeat :seed (seed) :type :normal)) ((equal type ':binary) (white nb-pitch :compress compress :ambitus ambitus :filter-repeat filter-repeat :seed (seed) :type :binary)) ((equal type ':cauchy) (white nb-pitch :compress compress :ambitus ambitus :filter-repeat filter-repeat :seed (seed) :type :cauchy)) ((equal type ':chi-square-2) (white nb-pitch :compress compress :ambitus ambitus :filter-repeat filter-repeat :seed (seed) :type :chi-square-2)) ((equal type ':double-exponential) (white nb-pitch :compress compress :ambitus ambitus :filter-repeat filter-repeat :seed (seed) :type :double-exponential)) ((equal type ':exponential) (white nb-pitch :compress compress :ambitus ambitus :filter-repeat filter-repeat :seed (seed) :type :exponential)) ((equal type ':extreme) (white nb-pitch :compress compress :ambitus ambitus :filter-repeat filter-repeat :seed (seed) :type :extreme)) ((equal type ':gaussian) (white nb-pitch :compress compress :ambitus ambitus :filter-repeat filter-repeat :seed (seed) :type :gaussian)) ((equal type ':logistic) (white nb-pitch :compress compress :ambitus ambitus :filter-repeat filter-repeat :seed (seed) :type :logistic)) ((equal type ':lognormal) (white nb-pitch :compress compress :ambitus ambitus :filter-repeat filter-repeat :seed (seed) :type :lognormal)) ((equal type ':triangular) (white nb-pitch :compress compress :ambitus ambitus :filter-repeat filter-repeat :seed (seed) :type :triangular)) ((equal type ':low-pass) (white nb-pitch :compress compress :ambitus ambitus :filter-repeat filter-repeat :seed (seed) :type :low-pass)) ((equal type ':high-pass) (white nb-pitch :compress compress :ambitus ambitus :filter-repeat filter-repeat :seed (seed) :type :high-pass)) ((equal type ':pink) (pink nb-pitch :compress compress :ambitus ambitus :filter-repeat filter-repeat :seed (seed))))))) #| USAGE (gen-pitch-line 24 :compress 0.42 :type :white :filter-repeat 1) (gen-pitch-line 24 :compress 0.42 :type :pink :filter-repeat 1) (gen-pitch-line 24 :compress 0.42 :type :extreme :filter-repeat 1) (gen-eval 8 '(make-omn :pitch (gen-pitch-line 24 :compress 0.42 :type :white :filter-repeat 1) :length (euclidean-rhythm 16 1 16 's :type 2) ) :seed 33) |# ;;; ------------------------------------------------------------------------------ SB.
  21. Like
    Stephane Boussuge got a reaction from AM in gen-pitch-line (from vector)   
    ;;; ------------------------------------------------------------------------------ ;;; GEN-PITCH-LINE ;;; Pitch generation function based on noise vectors conversion with a large choice of ;;; types of noises, compress ratio for the vector, filtering repetitions and ambitus. (defun gen-pitch-line (nb-pitch &key (compress 1) (ambitus '(c4 c6)) seed filter-repeat (type :white)) (do-verbose ("gen-pitch-line") (rnd-seed seed) (labels ((white (nb-pitch &key (compress 1) (ambitus '(c4 c6)) seed filter-repeat type) (if filter-repeat (gen-trim nb-pitch (filter-repeat filter-repeat (vector-to-pitch ambitus (vector-smooth compress (gen-white-noise nb-pitch :seed seed :type type))))) (vector-to-pitch ambitus (vector-smooth compress (gen-white-noise nb-pitch :seed seed :type type))))) (pink (nb-pitch &key (compress 1) (ambitus '(c4 c6)) seed filter-repeat) (if filter-repeat (gen-trim nb-pitch (filter-repeat filter-repeat (vector-to-pitch ambitus (vector-smooth compress (gen-pink-noise nb-pitch :seed seed))))) (vector-to-pitch ambitus (vector-smooth compress (gen-pink-noise nb-pitch :seed seed))))) ) (cond ((equal type ':white) (white nb-pitch :compress compress :ambitus ambitus :filter-repeat filter-repeat :seed (seed) :type :normal)) ((equal type ':binary) (white nb-pitch :compress compress :ambitus ambitus :filter-repeat filter-repeat :seed (seed) :type :binary)) ((equal type ':cauchy) (white nb-pitch :compress compress :ambitus ambitus :filter-repeat filter-repeat :seed (seed) :type :cauchy)) ((equal type ':chi-square-2) (white nb-pitch :compress compress :ambitus ambitus :filter-repeat filter-repeat :seed (seed) :type :chi-square-2)) ((equal type ':double-exponential) (white nb-pitch :compress compress :ambitus ambitus :filter-repeat filter-repeat :seed (seed) :type :double-exponential)) ((equal type ':exponential) (white nb-pitch :compress compress :ambitus ambitus :filter-repeat filter-repeat :seed (seed) :type :exponential)) ((equal type ':extreme) (white nb-pitch :compress compress :ambitus ambitus :filter-repeat filter-repeat :seed (seed) :type :extreme)) ((equal type ':gaussian) (white nb-pitch :compress compress :ambitus ambitus :filter-repeat filter-repeat :seed (seed) :type :gaussian)) ((equal type ':logistic) (white nb-pitch :compress compress :ambitus ambitus :filter-repeat filter-repeat :seed (seed) :type :logistic)) ((equal type ':lognormal) (white nb-pitch :compress compress :ambitus ambitus :filter-repeat filter-repeat :seed (seed) :type :lognormal)) ((equal type ':triangular) (white nb-pitch :compress compress :ambitus ambitus :filter-repeat filter-repeat :seed (seed) :type :triangular)) ((equal type ':low-pass) (white nb-pitch :compress compress :ambitus ambitus :filter-repeat filter-repeat :seed (seed) :type :low-pass)) ((equal type ':high-pass) (white nb-pitch :compress compress :ambitus ambitus :filter-repeat filter-repeat :seed (seed) :type :high-pass)) ((equal type ':pink) (pink nb-pitch :compress compress :ambitus ambitus :filter-repeat filter-repeat :seed (seed))))))) #| USAGE (gen-pitch-line 24 :compress 0.42 :type :white :filter-repeat 1) (gen-pitch-line 24 :compress 0.42 :type :pink :filter-repeat 1) (gen-pitch-line 24 :compress 0.42 :type :extreme :filter-repeat 1) (gen-eval 8 '(make-omn :pitch (gen-pitch-line 24 :compress 0.42 :type :white :filter-repeat 1) :length (euclidean-rhythm 16 1 16 's :type 2) ) :seed 33) |# ;;; ------------------------------------------------------------------------------ SB.
  22. Like
    Stephane Boussuge reacted to Rangarajan in Constraint Programming using Screamer Library   
    Hi,
    In today's blog post, I have shared some basic ideas about the Screamer Lisp library, with examples of how to start using it for constraint programming. The inspiration came from some earlier posts in OM forum on this topic. It was an exciting exercise and learnt a few interesting things!
     
    Regards,
    Rangarajan
  23. Like
    Stephane Boussuge reacted to opmo in gen-sub-structure   
    We will make even better :-)
  24. Like
    Stephane Boussuge reacted to AM in gen-sub-structure   
    OPUSMODUS is nearly perfect for me and my work! thanks for your great work, janusz and ?!!!
  25. Like
    Stephane Boussuge reacted to lviklund in Après la pluie Trio   
    SB,
    Sorry for hijacking your thread! 
     
    Nice piece at the top and we are starting to discuss other things. 
    On the other hand it is a good thing when music touch you and make you feel and think.
     
    Good day
×
×
  • Create New...

Important Information

Terms of Use Privacy Policy