Jump to content

Stephane Boussuge

Moderators
  • Posts

    1,059
  • Joined

  • Last visited

Reputation Activity

  1. Like
    Stephane Boussuge got a reaction from opmo in Zoom Into OM - 7. Spectral Harmony and Orchestral pitch remapping   
    Tonality-map function is very powerful and when used with a large pitch field, is able to map the entire pitch field on orchestra according to pitch field registers.
     
    SB
     
     
  2. Like
    Stephane Boussuge got a reaction from AM in Surabaya part 1 for Orchestra   
    First part of a work in progress for Orchestra based on spectral harmony (but quantised to 1/2 ton for that part...)
     

    stephaneboussuge · Surabaya pour Orchestre Part 1 SB.
  3. Like
    Stephane Boussuge got a reaction from opmo in Surabaya part 1 for Orchestra   
    First part of a work in progress for Orchestra based on spectral harmony (but quantised to 1/2 ton for that part...)
     

    stephaneboussuge · Surabaya pour Orchestre Part 1 SB.
  4. Like
    Stephane Boussuge reacted to AM in brownian bridge   
    i like the concept of "brownian bridge" to produce complex curves from a to b, but not completely randomized or controlled. in the video you see all the generations for one evaluation...
     
    how it could sound - mapped on different tonalities
     
     
     
    Brownsche Brücke – Wikipedia
    DE.WIKIPEDIA.ORG  
    for understanding in OPMO:
     
    axiom: start end
    (50 23)
     
    gen1 => 1 step
    (50 8 23)
     
    gen2  => 3 steps
    (50 15 8 -3 23)
     
    gen3 => 7 steps
    (50 40 15 13 8 -14 -3 29 23)
     
    gen4 => 15 steps
    (50 58 40 33 15 22 13 4 8 4 -14 -16 -3 17 29 17 23)
     
    ...and so on
     
    -------------------------------------------------------------------------------
     
    some evaluations with same AXIOM:
     

    Bildschirmaufnahme 2023-07-08 um 11.09.51.mov  
     
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; BROWNIAN BRIDGE -> could be use as a rnd-process from A to B (integers or pitches) ;;; if you have a look to example with ":all-gen t", you will see the process with all generations, how it works ;;; or take a look to: ;;; https://de.wikipedia.org/wiki/Wiener-Prozess#/media/File:BrownscheBewegung.png ;;; https://de.wikipedia.org/wiki/Brownsche_Brücke ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; SUB (defun pick (a b &key (span 5)) (let ((rnd1 (car (rnd-number 1 (+ a span) (- a span)))) (rnd2 (car (rnd-number 1 (+ b span) (- b span)))) (n)) (progn (setf n (car (rnd-number 1 rnd1 rnd2))) (if (or (= n a) (= n b)) (+ (rnd-pick '(1 -1)) n) n)))) (pick 2 3) ;;; MAIN ;;; MAIN (defun gen-brownian-bridge (n startend &key (all-gen nil) (output 'integer) (span 5)) (let ((seq)) (progn (setf seq (append (list startend) (loop repeat n with liste = startend do (setf liste (filter-repeat 1 (loop repeat (1- (length liste)) for cnt = 0 then (incf cnt) append (append (list (nth cnt liste) (pick (nth cnt liste) (nth (1+ cnt) liste) :span span) (nth (1+ cnt) liste)))))) collect liste))) (setf seq (if (equal all-gen t) seq (car (last seq)))) (if (equal output 'pitch) (integer-to-pitch seq) seq)))) ;;; EXAMPLES ;; SPAN influence -> span 2 (loop repeat 20 do (list-plot (gen-brownian-bridge 5 '(1.2 5.4) :span 2 :all-gen t) :zero-based t :point-radius 3 :join-points t) do (sleep 2)) ;; SPAN influence -> span 10 (list-plot (gen-brownian-bridge 5 '(50 23) :span 20 :all-gen t) :zero-based t :point-radius 3 :join-points t) ;;; SPAN default (5) (list-plot (gen-brownian-bridge 5 '(50 23) :all-gen t) :zero-based t :point-radius 3 :join-points t) (list-plot (gen-brownian-bridge 5 '(50 23)) :zero-based t :point-radius 3 :join-points t) (gen-brownian-bridge 5 '(50 23) :all-gen t :output 'pitch) (gen-brownian-bridge 5 '(50 23) :output 'pitch)  
  5. Like
    Stephane Boussuge reacted to opmo in Opusmodus 3.0.29004 Update   
    3.0.29004
     
    – New functions:
    REMOVE-ATTRIBUTE REPEAT-ATTRIBUTE NTH-EVENT OMN-LAST-EVENT OMN-BUTLAST-EVENT
    Happy coding,
    Janusz
  6. Thanks
    Stephane Boussuge got a reaction from JulioHerrlein in PSymph80887   
    Short orchestral work made this morning .
    SB.
     
     
    PoemTemp80887.mp3
  7. Like
    Stephane Boussuge got a reaction from erka in PSymph80887   
    Short orchestral work made this morning .
    SB.
     
     
    PoemTemp80887.mp3
  8. Thanks
    Stephane Boussuge reacted to opmo in PSymph80887   
    OM Master 🙂
  9. Like
    Stephane Boussuge got a reaction from opmo in PSymph80887   
    Short orchestral work made this morning .
    SB.
     
     
    PoemTemp80887.mp3
  10. Like
    Stephane Boussuge got a reaction from Nikos in Slonimsky Machine for Orchestra   
    This is a raw unprocessed, unedited output from the Algorithm Orchestral Section Generator feed with Slonimsky patterns, you get this algorithm included with many others in this Composerworkshop new lessons video pack:
     
    Designing generative orchestral templates with Opusmodus (level 2) - Composer Workshop
    WWW.COMPOSERWORKSHOP.COM Welcome to the course on "Designing Generative Orchestral Templates with Opusmodus"! In this course, we will explore the fascinating world of computer-assisted composition, specifically focusing on the powerful music composition environment known as Opusmodus. Opusmodus is a cutting-edge software tool that empowers composers, music theorists, and researchers to create...  
    Slonimsky-Machine.mp3
  11. Thanks
    Stephane Boussuge reacted to opmo in Slonimsky Machine for Orchestra   
    Absolute great example. Your students will love it.
  12. Like
    Stephane Boussuge got a reaction from erka in Slonimsky Machine for Orchestra   
    This is a raw unprocessed, unedited output from the Algorithm Orchestral Section Generator feed with Slonimsky patterns, you get this algorithm included with many others in this Composerworkshop new lessons video pack:
     
    Designing generative orchestral templates with Opusmodus (level 2) - Composer Workshop
    WWW.COMPOSERWORKSHOP.COM Welcome to the course on "Designing Generative Orchestral Templates with Opusmodus"! In this course, we will explore the fascinating world of computer-assisted composition, specifically focusing on the powerful music composition environment known as Opusmodus. Opusmodus is a cutting-edge software tool that empowers composers, music theorists, and researchers to create...  
    Slonimsky-Machine.mp3
  13. Like
    Stephane Boussuge got a reaction from opmo in Slonimsky Machine for Orchestra   
    This is a raw unprocessed, unedited output from the Algorithm Orchestral Section Generator feed with Slonimsky patterns, you get this algorithm included with many others in this Composerworkshop new lessons video pack:
     
    Designing generative orchestral templates with Opusmodus (level 2) - Composer Workshop
    WWW.COMPOSERWORKSHOP.COM Welcome to the course on "Designing Generative Orchestral Templates with Opusmodus"! In this course, we will explore the fascinating world of computer-assisted composition, specifically focusing on the powerful music composition environment known as Opusmodus. Opusmodus is a cutting-edge software tool that empowers composers, music theorists, and researchers to create...  
    Slonimsky-Machine.mp3
  14. Like
    Stephane Boussuge got a reaction from Nikos in Designing Generatives Orchestral Templates with Opusmodus   
    Hi folks,
     
    I've made a new tutorial. With that tutorial you will get not only lessons but also the full generative Opusmodus algorithms to generate your own orchestral music !
     
    What sets this course apart is its focus on designing orchestral templates. Rather than simply scratching the surface of Opusmodus, we will delve deep into the process of constructing templates that serve as the foundation for your orchestral compositions. With a strong emphasis on generative techniques, you will learn how to breathe life into your music by harnessing the creative potential of Opusmodus.
     
    Course Highlights:
    1. Designing and using the orchestral template.
    Learn to design and utilise orchestral templates in Opusmodus
     
    2. Pattern based generative example.
    Explore pattern-based generative examples
     
    3. Orchestral pitch remapping.
    Master orchestral pitch remapping
     
    4. Instrumentation / Orchestration.
    Dive into instrumentation and orchestration techniques
     
    5. Assembling sections.
    Learn how to assemble sections effectively
     
    6. Section designer: Full algorithm.
    Use the Section Designer to create a full orchestral piece section by section
     
     
    Here's the link:
     
     
    Courses - Composer Workshop
    WWW.COMPOSERWORKSHOP.COM  
  15. Like
    Stephane Boussuge got a reaction from opmo in Designing Generatives Orchestral Templates with Opusmodus   
    Hi folks,
     
    I've made a new tutorial. With that tutorial you will get not only lessons but also the full generative Opusmodus algorithms to generate your own orchestral music !
     
    What sets this course apart is its focus on designing orchestral templates. Rather than simply scratching the surface of Opusmodus, we will delve deep into the process of constructing templates that serve as the foundation for your orchestral compositions. With a strong emphasis on generative techniques, you will learn how to breathe life into your music by harnessing the creative potential of Opusmodus.
     
    Course Highlights:
    1. Designing and using the orchestral template.
    Learn to design and utilise orchestral templates in Opusmodus
     
    2. Pattern based generative example.
    Explore pattern-based generative examples
     
    3. Orchestral pitch remapping.
    Master orchestral pitch remapping
     
    4. Instrumentation / Orchestration.
    Dive into instrumentation and orchestration techniques
     
    5. Assembling sections.
    Learn how to assemble sections effectively
     
    6. Section designer: Full algorithm.
    Use the Section Designer to create a full orchestral piece section by section
     
     
    Here's the link:
     
     
    Courses - Composer Workshop
    WWW.COMPOSERWORKSHOP.COM  
  16. Like
    Stephane Boussuge reacted to erka in repeat option to play in loop   
    Aah. Get it.
    But as I get it you have to first hit cmd-1 to open a player and then Last-score->Live Coding works.
    The snippet becomes a score after being send to a Viewer.
     
    There might still be an advantage of a loop-button next to play or a checkbox in the Notation- or midi-viewer.
    In case you have a bunch of snippets in a viewer,  you could select any and play in loop .
     
     
     
     
  17. Like
    Stephane Boussuge reacted to GenzoH in Sync different Live Coding scores   
    Ok, so until we have any kind os sync between different LCI workspaces, I've found a workaround by using a mouse automation app. The one I've downloaded that seems to work pretty well is Auto Mouse Click (murgaa.com). You can create lists of mouse actions including positions, clicks and repetitions, and also you can define the delay in milliseconds between each action or retrigs. There's almost no delay (also can be defined) and all the different workspaces start at the same time.
     
    I know it's a bit "rustic" aproach, but it works.
     
    Best!
  18. Like
    Stephane Boussuge reacted to GenzoH in Sync different Live Coding scores   
    I've seen that video. Very inspiring! In that video, as music is more "atonal and experimental" it doesn't matter if the different tracks go out of sync. I was thinking about live coding for example an string quartet, with the same tempo for each voice, but not working in a single workspace for the 4 voices but 4 different spaces, each one for a different voice. By doing this we could manipulate one voice and update it while the others are still playing in sync. As the live coding workspaces have the option to update on bar count or beats, I guess that all the LCI with the same tempo will be playing in time.
     
    An small solution could be a way to start all the live coding spaces at the same time. Maybe a global start command, or a midi message to trigger all of them ... Just guessing, but I think it could be a HUGE step for live performances ... 🙂
  19. Like
    Stephane Boussuge reacted to AM in Random movement between notes in time frame   
    smart 🙂
  20. Like
    Stephane Boussuge reacted to opmo in Random movement between notes in time frame   
    (setf pitches (rnd-sample 12 (midi-to-pitch '(65 64 63 62 61 60))))  
    If the tempo is 60 then the span is 5/4 etc...
     
    (setf lengths (length-span 5/4 (rnd-sample 6 '(s -s e. q)))) (make-omn :length lengths :pitch pitches)
  21. Like
    Stephane Boussuge reacted to opmo in Opusmodus 3.0.28945 Update   
    New function:

    GEN-ENVELOPE-TENDENCY
    This function takes a list of data and adjusts the values to fit within the specified lower and upper envelope limits. If a value is outside the given envelope, the function will adjust it to fit within the envelope and all subsequent values in the list are also adjusted by the same amount, which helps to preserve the original shape of the data.
     
    Examples:
     
    (setf data (gen-brownian-motion 128 :seed 43))  

     
    (setf len (length data)) (setf l-limit (envelope-samples '(0 0 1 -1 2 -1 3 -2 4 3 5 -1 6 0) len)) (setf u-limit (envelope-samples '(0 1 1 4 2 2 3 4 6 4) len)) (xy-plot (list l-limit u-limit) :join-points t)  

     
    (setf adj (gen-envelope-tendency data l-limit u-limit :seed 12)) (list-plot adj :zero-based t :point-radius 2 :join-points t)  
     

     
    With optional reflect T:
     
    (setf ref (gen-envelope-tendency data l-limit u-limit :reflect t :seed 12)) (list-plot reflect :zero-based t :point-radius 2 :join-points t)  
     

     
    Happy coding,
    Janusz
  22. Like
    Stephane Boussuge reacted to opmo in Opusmodus 3.0.28933 Update   
    ver. 3.0.28933
     
    New functions:
     
    Probability->Distribution
    BETA-DISTRIBUTION
    The function returns a list of values generated from the Beta distribution using the given alpha and beta parameters. The Beta distribution is a continuous probability distribution defined on the interval [0, 1]. It is commonly used to model random variables that have values between zero and one, such as proportions, probabilities, or parameters that are constrained to a specific range.

    BILATERAL-EXPONENTIAL
    The bilateral exponential distribution is a probability distribution that models random variables with values in a symmetric interval around zero. It is often used to describe quantities that exhibit both positive and negative values, such as the differences between two related measurements or errors in scientific experiments. The function returns a list of values generated from the bilateral exponential distribution using the given lower limits a and upper limits b.

    CAUCHY-DISTRIBUTION
    The Cauchy distribution is a probability distribution that is characterized by its symmetric bell-shaped curve. The function returns a list of values generated from the Cauchy distribution using the given location parameters x0 and scale parameters gamma. It is also known as the Cauchy-Lorentz distribution and is named after mathematicians Augustin Cauchy and Hendrik Lorentz. Applications of the Cauchy distribution include modeling extreme events, analyzing data with outliers, and in physics, where it arises naturally in certain physical phenomena, such as quantum mechanics and resonant systems.

    GAUSSIAN-DISTRIBUTION
    The function returns a list of pairs (x, y), where x and y are random numbers generated from a Gaussian distribution with the given means and standard deviations. The Gaussian distribution, also known as the normal distribution or bell curve, is one of the most widely used probability distributions in statistics. It is named after mathematician Carl Friedrich Gauss.

    WEIBULL-DISTRIBUTION
    The Weibull distribution is a probability distribution that is commonly used to model the failure times or lifetimes of various types of systems or phenomena. It was introduced by Wallodi Weibull, a Swedish engineer and mathematician. The function returns a list of values generated from the Weibull distribution using the given scale parameters lambda and shape parameters k.
     
    Mathematics->Interpolation
    SEGMENT-INTERPOLATION
    This function interpolates over segments defined by time, value, and an exponent using either linear or cosine interpolation. It creates a segment for each time point with the corresponding value and exponent. It then generates a sequence of points, for each of which it determines the appropriate segment. For a point, it finds the two segments it falls between and applies the appropriate interpolation based on the exponent of the first segment. If there is no subsequent segment, the function simply returns the value of the first segment. If the point falls exactly on the time of a segment, no interpolation is necessary and the function directly returns the corresponding value.
     
    Best wishes,
    Janusz
  23. Like
    Stephane Boussuge reacted to Deb76 in FFT functions : Code change?   
    Hello Stephane,
    Thank you for the answer. And I feel a little stupid, because I don't know why I thought that because of the name change, a code for the entire update had to be changed in order for it to be effective. And it's all the more stupid that I have already changed the codes when Janusz had modified them. In short, probably fatigue...
    And these two new functions, I tested them from the first update with their old names (fft-h & fft-w). All these functions which can be visualized via graphs and translated musically interest me a lot for an upcoming project with a painter friend and in which the music Opusmodus will have a preponderant place.
    Best wishes. 
    Didier
     
    Facebook
    WWW.FACEBOOK.COM Facebook
    WWW.FACEBOOK.COM Facebook
    WWW.FACEBOOK.COM  
    Bonjour Stéphane, 
    Merci pour la réponse. Et je me sens un peu stupide, car je ne sais pas pourquoi j'ai pensé qu'en raison du changement de nom, il fallait changer un code concernant la totalité de l'update afin qu'elle soit effective. Et c'est d'autant plus stupide que j'ai déjà changé les codes lorsque Janusz les avaient modifiés. Bref, vraisemblablement la fatigue... 
    Et ces deux nouvelles fonctions, je les avais testées dès la première mise à jour avec leurs anciennes appellations (fft-h & fft-w). Toutes ces fonctions qui peuvent-être visualisées via des graphes et traduites musicalement m'intéressent beaucoup pour un projet à venir avec une amie artiste peintre et dans lequel pour la musique Opusmodus aura une place prépondérante. 
    Amitiés.
    Didier
  24. Thanks
    Stephane Boussuge reacted to Wim Dijkgraaf in Converting MIDI or MusicXML to OMN   
    I'll try to do a first proof of concept 🙂 Will start working on it this week to get a first impression of how complex this might be.
     
    Will keep you informed.
     
    Feel free to follow any progress: 
    GitHub - willemdijkgraaf/MidiXmlToOMN: Converts Midi XML to OMN (OpusModus Notation)
    GITHUB.COM Converts Midi XML to OMN (OpusModus Notation). Contribute to willemdijkgraaf/MidiXmlToOMN development by creating an account on GitHub.  
  25. Like
    Stephane Boussuge reacted to AM in FFTH / length   
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; subfunction (defun reset-integer-sequence (alist &key (offset 0) (flatten nil)) (let ((min (find-min (flatten alist)))) (progn (setf alist (cond ((listp (car alist)) (loop for j in alist collect (loop for i in j collect (+ (- i min) offset)))) (t (loop for i in alist collect (+ (- i min) offset))))) (if (equal flatten t) (flatten alist) alist)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; check it out ;; command-1 (list-plot (length-staccato (gen-length (reset-integer-sequence (ffth 6 0.075 (x-b (rnd-order '(44 52 22 23 13 44 68 6 22 9 73 28 68)) 3) :type 'integer)) 1/64) :value 1/64) :point-radius 2 :join-points t) (list-plot (length-staccato (gen-length (reset-integer-sequence (ffth 4 0.075 (x-b (rnd-order '(44 52 22 23 13 44 68 6 22 9 73 28 68)) 3) :type 'integer)) 1/64) :value 1/64) :point-radius 2 :join-points t)  
    with 4 voices....
    eval -> (command-3)
     
     
    (defun reset-integer-sequence (alist &key (offset 0) (flatten nil)) (let ((min (find-min (flatten alist)))) (progn (setf alist (cond ((listp (car alist)) (loop for j in alist collect (loop for i in j collect (+ (- i min) offset)))) (t (loop for i in alist collect (+ (- i min) offset))))) (if (equal flatten t) (flatten alist) alist)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (setf s1 (make-omn :pitch '(c1) :length (length-staccato (gen-length (reset-integer-sequence (ffth 6 0.075 (x-b (rnd-order '(44 52 22 23 68 6 22 9 73 28 68)) 3) :type 'integer) :offset 4) 1/64) :value 1/32)) s2 (make-omn :pitch '(cs4) :length (length-staccato (gen-length (reset-integer-sequence (ffth 6 0.075 (x-b (rnd-order '(44 52 22 23 13 44 68 9 73 28 68)) 3) :type 'integer) :offset 4) 1/64) :value 1/32)) s3 (make-omn :pitch '(d5) :length (length-staccato (gen-length (reset-integer-sequence (ffth 6 0.075 (x-b (rnd-order '(44 52 22 23 68 6 22 9 73 28 68)) 3) :type 'integer) :offset 4) 1/64) :value 1/32)) s4 (make-omn :pitch '(ds7) :length (length-staccato (gen-length (reset-integer-sequence (ffth 6 0.075 (x-b (rnd-order '(44 52 22 23 68 6 22 9 73 28 68)) 3) :type 'integer) :offset 4) 1/64) :value 1/32))) (omn-to-time-signature (merge-voices s1 s2 s3 s4) '(4 4))  
×
×
  • Create New...

Important Information

Terms of Use Privacy Policy