-
Posts
1,056 -
Joined
-
Last visited
Reputation Activity
-
Stephane Boussuge reacted to Cliff in Coming soon: 5 Opusmodus lessons on Composer workshop
I like it, those composing approaches are very instructive.
-
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 ))))
-
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)
-
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 ))))
-
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
-
Stephane Boussuge reacted to david in Output example from 5 OM Lessons: Score175-90884 and Score175-922647
...I really like your second example!;-)
-
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
-
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
-
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
-
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
-
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
-
Stephane Boussuge got a reaction from TomTolleson in Prelude pour Piano 160923
New short piece for piano.
stephaneboussuge · Prelude pour Piano 160923
-
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
-
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.
-
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.
-
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
-
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.
-
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.
-
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)
-
-
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
-
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.
-
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) ) ))
-
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.
-
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