Jump to content

Stephane Boussuge

Moderators
  • Posts

    1,056
  • Joined

  • Last visited

Reputation Activity

  1. Thanks
    Stephane Boussuge reacted to Cliff in Coming soon: 5 Opusmodus lessons on Composer workshop   
    I like it, those composing approaches are very instructive.
  2. Like
    Stephane Boussuge reacted to TomTolleson in length-augmentation to fill rests   
    Thank you @Stephane Boussuge!

    A huge help as always. I made a slight modification (for anyone reading this thread) to collect the rests (rather than the notes); essentially the inverse of what Stephane's code accomplishes. Mine is as follows (using "length-notep" in place of "length-restp"):
     
    (setf len '(1/8 1/8 -1/4 1/16 1/16 1/16 1/16 1/4 -1/8 1/16 1/16 1/2)) (setf rest-only (remove-nils                 (loop for l in len                       :collect (if (length-notep l) nil l ))))  
  3. Like
    Stephane Boussuge reacted to opmo in length-augmentation to fill rests   
    (setf mat (flatten '((s d3 ffff -e. s f3 mf -q.. s f3 ffff -e.) (s g3 -e. s f3 -e. q.. g3 -s)))) (setf aug-length (loop for i in (omn :length mat) collect (if (length-restp i) i (car (length-augmentation 4 (list i)))))) (setf augmat (make-omn :length aug-length :pitch (omn :pitch mat) :velocity (omn :velocity mat) :articulation (omn :articulation mat))) (setf mat (pitch-transpose -12 augmat)) => (q d2 ffff -e. q f2 mf -q.. q f2 ffff -e. q g2 -e. q f2 -e. w.. g2 -s)  
  4. Thanks
    Stephane Boussuge got a reaction from TomTolleson in length-augmentation to fill rests   
    Hi,
     
    may be this help:
     
    (setf len '(1/8 1/8 -1/4 1/16 1/16 1/16 1/16 1/4 -1/8 1/16 1/16 1/2)) (setf len-only (remove-nils (loop for l in len :collect (if (length-restp l) nil l ))))  
  5. Like
    Stephane Boussuge reacted to larsr in Error after completing purchase   
    Thank you opmo.

    It all seems to work now.

    I really look forward to familiarise myself with the intricate details of this system. I have written some very specialised code for working with harmony, intervals and progressions, written in c++, that I now have a great reason to port to common lisp, a language I studied a lot in the past and find almost perfect for capturing knowledge. 

    Best regards

    Lars
     
  6. Thanks
    Stephane Boussuge reacted to david in Output example from 5 OM Lessons: Score175-90884 and Score175-922647   
    ...I really like your second example!;-)
     
  7. Like
    Stephane Boussuge got a reaction from david in Strange attractor for Ensemble (Note Performer render)   
    Hi,
     
    here's the Note performer rendering of Strange attractor for Ensemble.

    stephaneboussuge · Strange attractor  
     
  8. Like
    Stephane Boussuge got a reaction from david in Output example from 5 OM Lessons: Score175-90884 and Score175-922647   
    2 possible output from my Score175 algorithm direct from Opusmodus without any edit (OM drive VSL in VEPro).
    This is an example of what you can do with good understanding of lessons 1 and 3 from my new course "5 Opusmodus Lessons" on composer workshop.com
    S.
     
    Score175-90884.mp3  
     
    Score175-922647.mp3
     
     
  9. Thanks
    Stephane Boussuge got a reaction from opmo in Output example from 5 OM Lessons: Score175-90884 and Score175-922647   
    2 possible output from my Score175 algorithm direct from Opusmodus without any edit (OM drive VSL in VEPro).
    This is an example of what you can do with good understanding of lessons 1 and 3 from my new course "5 Opusmodus Lessons" on composer workshop.com
    S.
     
    Score175-90884.mp3  
     
    Score175-922647.mp3
     
     
  10. Like
    Stephane Boussuge got a reaction from lviklund in Strange attractor for Ensemble (Note Performer render)   
    Hi,
     
    here's the Note performer rendering of Strange attractor for Ensemble.

    stephaneboussuge · Strange attractor  
     
  11. Like
    Stephane Boussuge got a reaction from opmo in Strange attractor for Ensemble (Note Performer render)   
    Hi,
     
    here's the Note performer rendering of Strange attractor for Ensemble.

    stephaneboussuge · Strange attractor  
     
  12. Like
    Stephane Boussuge got a reaction from TomTolleson in Prelude pour Piano 160923   
    New short piece for piano.
     

    stephaneboussuge · Prelude pour Piano 160923  
  13. Like
    Stephane Boussuge got a reaction from Tikov in New course on Composerworkshop and November sales - 20%   
    Hi folks,
     
    I am thrilled to unveil my latest course offering on Composerworkshop.com, entitled "5 Opusmodus Lessons."
     
    Spanning over 50 instructional videos, these five lessons delve into the sophisticated capabilities of Opusmodus, equipping you with powerful algorithms that will enhance your compositional process.
    You’ll learn how to generate and manipulate a limitless stream of music, all while maintaining control over every aspect.
     
    Take advantage of an exclusive offer starting today until the 24th of November. Enjoy a 20% discount on all video packages, including this brand-new course, by using the promo code "friday20" at checkout.
     
    Stephane
     

  14. Like
    Stephane Boussuge got a reaction from opmo in Video - Strange attractor for ensemble   
    New piece composed with the technique used in Composerworksop course: 5 Opusmodus lessons.
     
  15. Like
    Stephane Boussuge got a reaction from jesele in Video - Strange attractor for ensemble   
    New piece composed with the technique used in Composerworksop course: 5 Opusmodus lessons.
     
  16. Like
    Stephane Boussuge got a reaction from opmo in New course on Composerworkshop and November sales - 20%   
    Hi folks,
     
    I am thrilled to unveil my latest course offering on Composerworkshop.com, entitled "5 Opusmodus Lessons."
     
    Spanning over 50 instructional videos, these five lessons delve into the sophisticated capabilities of Opusmodus, equipping you with powerful algorithms that will enhance your compositional process.
    You’ll learn how to generate and manipulate a limitless stream of music, all while maintaining control over every aspect.
     
    Take advantage of an exclusive offer starting today until the 24th of November. Enjoy a 20% discount on all video packages, including this brand-new course, by using the promo code "friday20" at checkout.
     
    Stephane
     

  17. Like
    Stephane Boussuge got a reaction from hujairi in Coming soon: 5 Opusmodus lessons on Composer workshop   
    Hi, I've just finished a new pack of videos lessons for Composerworkshop, this pack will give you some powerful tools and understanding of the power of OM. Here's the course description:
    5 Opusmodus lessons:
    This set of 5 Opusmodus lessons dive into some advanced possibilities of the Opusmodus Music Composition Environment, bringing an exploration of techniques such as Shapes driven tessiture, dynamics and orchestration control, Algorithmic dictum generation for counterpoint, Process driven composition, Spectral harmony exploration and exploration of different pitch distributions across instrumental parts.
    Who this course is for
    This course is for moderate to advanced users of Opusmodus. It is highly recommended to get all the basics of Opusmodus before to start this course.
    What you'll learn in this course:
    Course 1: Algorithmic Dictum Generation for Counterpoint
    What You Will Learn:
    - Understand the structure and utility of counterpoint functions in Opusmodus.
    - How to manually create simple dictums, a list of pattern numbers and optional parameters.
    - Algorithmic methods for generating lists of pattern numbers and other parameters for Counterpoint function.
    - Techniques to assemble the generated material into a usable and readable dictum.
    - Apply your algorithmically generated dictum in creating a score section using algorithmically designed patterns.
    Course 2: Pitch Distribution across several instrumental parts
    What You Will Learn:
    - How to manually distribute a pitch rowan other pitch material across instrumental parts and understand the underlying logic.
    - Techniques for algorithmic distribution from top to bottom and vice versa.
    - Apply rhythm and pitch variations for richer musical output.
    - Working with various pitch materials like tone rows, Slonimsky patterns, triadic materials, and noise-generated pitch material.
    Course 3: Iterated Process Driven Composition
    What You Will Learn:
    - Introduction to Process-Driven Composition and how to achieve it in Opusmodus.
    - Utility function definitions for adding rehearsal marks and other elements automatically to generated scores.
    - Building a process iterations to generate several sections of a piece in one pass based on rules.
    - How to define your algorithmic process and extract individual instrumental parts.
    - Implement tempo changes and time signature adjustments.
    Course 4: Shapes/Vector driven control of Tessiture, Dynamic, Pitch and Orchestration.
    What You Will Learn:
    - Techniques for generating pitch material based on smoothed white-noise.
    - Algorithmic rhythm generation and control through provided density-length functions.
    - Methods for dynamic markings and ornamentation of repeated notes.
    - Assemble sections into a complete piece while applying orchestration techniques.
    Course 5: Spectral Harmony Exploration
    What You Will Learn:
    - Techniques for spectral pitch remapping.
    - Methods for vector generation and pitch contour shaping.
    - How to import and manipulate spectral data for pitch mapping.
    - Techniques for ambitus constraint, frames filtering and chord generation in spectral frames.
    - Learn to apply dynamic markings, articulations, and the play-mute system to your composition.
    By the end of this course series, you will have a strong understanding of advanced algorithmic composition techniques using Opusmodus. You'll be equipped with the skills to generate sophisticated compositions using an algorithmic approach, taking advantage of Opusmodus's rich set of functions and utilities.
  18. Like
    Stephane Boussuge got a reaction from opmo in Coming soon: 5 Opusmodus lessons on Composer workshop   
    Hi, I've just finished a new pack of videos lessons for Composerworkshop, this pack will give you some powerful tools and understanding of the power of OM. Here's the course description:
    5 Opusmodus lessons:
    This set of 5 Opusmodus lessons dive into some advanced possibilities of the Opusmodus Music Composition Environment, bringing an exploration of techniques such as Shapes driven tessiture, dynamics and orchestration control, Algorithmic dictum generation for counterpoint, Process driven composition, Spectral harmony exploration and exploration of different pitch distributions across instrumental parts.
    Who this course is for
    This course is for moderate to advanced users of Opusmodus. It is highly recommended to get all the basics of Opusmodus before to start this course.
    What you'll learn in this course:
    Course 1: Algorithmic Dictum Generation for Counterpoint
    What You Will Learn:
    - Understand the structure and utility of counterpoint functions in Opusmodus.
    - How to manually create simple dictums, a list of pattern numbers and optional parameters.
    - Algorithmic methods for generating lists of pattern numbers and other parameters for Counterpoint function.
    - Techniques to assemble the generated material into a usable and readable dictum.
    - Apply your algorithmically generated dictum in creating a score section using algorithmically designed patterns.
    Course 2: Pitch Distribution across several instrumental parts
    What You Will Learn:
    - How to manually distribute a pitch rowan other pitch material across instrumental parts and understand the underlying logic.
    - Techniques for algorithmic distribution from top to bottom and vice versa.
    - Apply rhythm and pitch variations for richer musical output.
    - Working with various pitch materials like tone rows, Slonimsky patterns, triadic materials, and noise-generated pitch material.
    Course 3: Iterated Process Driven Composition
    What You Will Learn:
    - Introduction to Process-Driven Composition and how to achieve it in Opusmodus.
    - Utility function definitions for adding rehearsal marks and other elements automatically to generated scores.
    - Building a process iterations to generate several sections of a piece in one pass based on rules.
    - How to define your algorithmic process and extract individual instrumental parts.
    - Implement tempo changes and time signature adjustments.
    Course 4: Shapes/Vector driven control of Tessiture, Dynamic, Pitch and Orchestration.
    What You Will Learn:
    - Techniques for generating pitch material based on smoothed white-noise.
    - Algorithmic rhythm generation and control through provided density-length functions.
    - Methods for dynamic markings and ornamentation of repeated notes.
    - Assemble sections into a complete piece while applying orchestration techniques.
    Course 5: Spectral Harmony Exploration
    What You Will Learn:
    - Techniques for spectral pitch remapping.
    - Methods for vector generation and pitch contour shaping.
    - How to import and manipulate spectral data for pitch mapping.
    - Techniques for ambitus constraint, frames filtering and chord generation in spectral frames.
    - Learn to apply dynamic markings, articulations, and the play-mute system to your composition.
    By the end of this course series, you will have a strong understanding of advanced algorithmic composition techniques using Opusmodus. You'll be equipped with the skills to generate sophisticated compositions using an algorithmic approach, taking advantage of Opusmodus's rich set of functions and utilities.
  19. Like
    Stephane Boussuge reacted to AM 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)  
  20. Like
    Stephane Boussuge reacted to opmo in New Video - Notstand   
  21. Like
    Stephane Boussuge reacted to AM in Filter-repeat 1   
    dear david
    this could be helpful for you... some basic-syntax-tutorials
    have fun!
    andré
     
     
    well explainend
     
     
  22. Like
    Stephane Boussuge reacted to erka in Filter-repeat 1   
    Example of separating to each function. Evaluate step by step and check the result. That is how I learned  functions and checked if that is what I want.
     
    (setf mat '((e f5 g5 a5 s gb5 f5 e e5 f5 g5 s e5 eb5) (e d5 e5 f5 s d5 db5 e c5 d5 e5 s c5 b4) (e bb4 c5 d5 s b4 bb4 e a4 bb4 c5 s a4 ab4) (e g4 a4 bb4 s g4 gb4 e f4 g4 a4 -e))) (setf bar1 '(e f5 g5 a5 s gb5 f5 e e5 f5 g5 s e5 eb5)) ;; or (setf bar1 (first mat)) (setf bar1_1 (first (gen-divide 5 bar1))) (setf bar1_2 (second (gen-divide 5 bar1))) ;;rnd-order only for the first half of bar (setf bar1_1ro (rnd-order bar1_1 :type :pitch :seed 21)) ;; or without seed to get diiferent results each time (setf bar1_1fr (filter-repeat 1 bar1_1ro :type :pitch)) (setf bar1_1_2 (list bar1_1fr bar1_2)) ;; if the same for second half of bar ;;(setf bar1_2ro (rnd-order bar1_2 :type :pitch :seed 21)) ;; or without seed to get diiferent results each time ;;(setf bar1_2fr (filter-repeat 1 bar1_2ro :type :pitch)) ;;(setf bar1_1_2 (list bar1_1fr bar1_2fr)) ;;together for bar1 (setf maintask (list (filter-repeat 1 (rnd-order (first (gen-divide 5 bar1)) :type :pitch :seed 21) :type :pitch) (second (gen-divide 5 bar1)))) ;; main task applied to all bars of mat (setf loopbars (loop for bar in mat collect ;;or append (list (filter-repeat 1 (rnd-order (first (gen-divide 5 bar)) :type :pitch :seed 21) :type :pitch) (second (gen-divide 5 bar))))) ;; transpose loop (setf looptrans (loop for i in '(0 5 -2 3 8 1 6 -1 4 9 2 7) append (pitch-transpose i loopbars))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; check what happens if two pitches repeat (filter-repeat 1 '(e f5 f5 a5 s gb5 g5) :type :pitch) ;;all together in a nested loop (loop for i in '(0 5 -2 3 8 1 6 -1 4 9 2 7) append (pitch-transpose i (loop for bar in mat collect (list (filter-repeat 1 (rnd-order (first (gen-divide 5 bar)) :type :pitch :seed 21) :type :pitch) (second (gen-divide 5 bar))))))  
    Is more to write but easier to test. When everything works fine you could nest the different steps. But evaluating the whole script gives the same result.
  23. Like
    Stephane Boussuge reacted to erka in Transpose whole list   
    Another way of solving your original request only using Opusmodus-functions could be:
    (setf mat '((e f5 g5 a5 s gb5 f5 e e5 f5 g5 s e5 eb5) (e d5 e5 f5 s d5 db5 e c5 d5 e5 s c5 b4) (e bb4 c5 d5 s b4 bb4 e a4 bb4 c5 s a4 ab4) (e g4 a4 bb4 s g4 gb4 e f4 g4 a4 -e))) (setf theme-tr (assemble-seq (pitch-transpose 0 mat) (pitch-transpose 5 mat) (pitch-transpose -2 mat) (pitch-transpose 3 mat) (pitch-transpose 8 mat) (pitch-transpose 1 mat) (pitch-transpose 6 mat) (pitch-transpose -1 mat) (pitch-transpose 4 mat) (pitch-transpose 9 mat) (pitch-transpose 2 mat) (pitch-transpose 7 mat)) ;;;;;; or more flexible (setf t0 (pitch-transpose 0 mat)) (setf t5 (pitch-transpose 5 mat)) (setf t-2 (pitch-transpose -2 mat)) (setf t8 (pitch-transpose 8 mat)) (setf t1 (pitch-transpose 1 mat)) (setf t6 (pitch-transpose 6 mat)) (setf t-1 (pitch-transpose -1 mat)) (setf t9 (pitch-transpose 9 mat)) (setf t2 (pitch-transpose 2 mat)) (setf t7 (pitch-transpose 7 mat)) (setf theme-tr (assemble-seq t0 t5 t-2 t8 t1 t6 t-1 t9 t2 t7))  
    This is also easy editable and expandable and you can do more with it:
    (setf theme-tr2 (assemble-seq (rnd-order '(t0 t5 t-2 t8 t1 t6 t-1 t9 t2 t7)))) (setf theme-tr3 (assemble-seq (rnd-order '(t0 t5 t-2 t8 t1 t6 t-1 t9 t2 t7) :seed 2023) )) (setf theme-tr4 (assemble-seq (reverse '(t0 t5 t-2 t8 t1 t6 t-1 t9 t2 t7) ) )) (setf theme-tr5 (assemble-seq (rnd-sample 24 '(t0 t5 t-2 t8 t1 t6 t-1 t9 t2 t7) ) ))  
     
  24. Thanks
    Stephane Boussuge got a reaction from TomTolleson in sc:Synthdef for sampler   
    Here's an example of sampler design:
     
    (sc:defsynth stf-sampler1 ((buffer 0) (rate 1) (start 0) (amp 0.5) (out 0)) (let ( (sig (sc:play-buf.ar 2 buffer (* rate (sc:buf-rate-scale.ir buffer)) :start-pos (* start (sc:buf-frames.ir buffer)) :act :free))) (sc:out.ar out (* amp sig)))) (defparameter sample1 (sc:buffer-read "/Users/stephaneboussuge/Samples/tibetan-singing-bowl.wav" :bufnum 0)) ;(sc:synth :stf-sampler1) ;(sc:synth :stf-sampler1 :rate 0.5) ;(sc:synth :stf-sampler1 :rate 2) (sc:stop) Hope it helps.
     
    Best
     
    S.
  25. Like
    Stephane Boussuge reacted to opmo in Opusmodus 3.0.29111 Update   
    3.0.29111
     
    – New:
    Display Commands List... - Developer shortcuts. You find the commands list window in the 'Help' menu.  
    – Fixed:
    Listener - removes selection before doing the evaluation form the editor. snippet - no clef changes (better visualisation of the intervals direction). Navigator - folders will not collapsed when changing Navigator directories (menu).  
    – Documents:
    Documents edit.
     
     
    Happy coding,
    Janusz
     
×
×
  • Create New...

Important Information

Terms of Use Privacy Policy