<?xml version="1.0"?>
<rss version="2.0"><channel><title>Made In Opusmodus Latest Topics</title><link>https://opusmodus.com/forums/forum/7-made-in-opusmodus/</link><description>Made In Opusmodus Latest Topics</description><language>en</language><item><title>Chromatic Planing with OM</title><link>https://opusmodus.com/forums/topic/4118-chromatic-planing-with-om/</link><description><![CDATA[<p>I am currently looking into non-functional but still directed harmonic music.</p><p>Frank Zappa might be a inspiration (tall order).</p><p>A technique I learned is chromatic planing, which uses coupling of one or more chord structures to a top melodic line.</p><p>For the classically trained musician the parallel motion might be a no go, but I personally like it a lot.</p><p></p><p>Opusmodus is perfectly suited to do this planing technique with <code>gen-chord3</code>.</p><p></p><p>Very brief snippet, which was arranged mostly with music generated from code below.</p><p></p><p><audio data-controller="core.global.core.embeddedaudio" src="https://opusmodus.com/forums/applications/core/interface/file/attachment.php?id=4411&amp;key=13eadee2b8858a1f956e6b639ee50963" type="audio/mpeg" controls="" preload="metadata"><a class="ipsAttachLink" href="https://opusmodus.com/forums/applications/core/interface/file/attachment.php?id=4411&amp;key=13eadee2b8858a1f956e6b639ee50963" data-fileid="4411" data-fileext="mp3" rel="">Planing.mp3</a></audio></p><pre spellcheck="" class="ipsCode language-plaintext" data-language="Plain Text"><code>(setf melody-interval (interval-series '(1 5 7 5 1) '(1 2 7)))
(setf melody-pitch (ambitus '(c4 g5)
                            (interval-map 'd4 melody-interval)))
(setf melody-length (gen-tuplet 1 1 'n 'n 'w (mclength melody-pitch)))
(setf melody-omn (make-omn :pitch melody-pitch
                            :length melody-length))


(setf chord-interval '((-3 -7 -10 -12)   ;; m7
                       (-4 -7 -11 -12))) ;; maj7
(setf chord-omn (gen-chord3 melody-omn chord-interval :cycle t))
(setf rhodes-omn (closest-path chord-omn)) ; :type '(1 2 3 2)))
(setf bass-omn (omn-replace :articulation 'stacc
                            (pitch-transpose 0 (dechord chord-omn))))
(setf synth-omn (pitch-transpose 12 (dechord chord-omn :pitch 4)))
(setf marimba-omn (pitch-transpose 0 (dechord chord-omn :pitch 3)))

(ps 'gm
    :tempo 112
    :pg (list (length-weight rhodes-omn :weight '(2 1)))
    :bass (list (length-weight bass-omn :weight '(2 1)))
    :fl (list (length-weight synth-omn :weight '(2 1)))
    :ob (list (length-weight marimba-omn :weight '(2 1))))

(write-midi)</code></pre><p></p>]]></description><guid isPermaLink="false">4118</guid><pubDate>Wed, 20 May 2026 14:05:24 +0000</pubDate></item><item><title>Luminous Fracture 2</title><link>https://opusmodus.com/forums/topic/4099-luminous-fracture-2/</link><description><![CDATA[<p>A test of my (work in progress) Csound/Opusmodus framework.</p><p></p><p></p><p><audio data-controller="core.global.core.embeddedaudio" src="https://opusmodus.com/forums/uploads/monthly_2026_04/Luminous_Fractures_v2.wav.32b9eb2782942bbfae271323ab958110.wav" type="audio/x-wav" controls="" preload="metadata"><a class="ipsAttachLink" href="https://opusmodus.com/forums/applications/core/interface/file/attachment.php?id=4401&amp;key=a64d389cbd97c4e501e01c93756bab05" data-fileid="4401" data-fileext="wav" rel="">Luminous_Fractures_v2.wav</a></audio></p><p><a class="ipsAttachLink" data-fileid="4400" data-fileext="pdf" data-extension="pdf" href="https://opusmodus.com/forums/applications/core/interface/file/attachment.php?id=4400&amp;key=b829f4f6a042613e89d4bb0ba859b116" rel="">LuminousFracture2.pdf</a> <a class="ipsAttachLink" data-fileid="4402" data-fileext="csd" data-extension="csd" href="https://opusmodus.com/forums/applications/core/interface/file/attachment.php?id=4402&amp;key=da6dbd55ec120ca7c579cdf8b8baabd6" rel="">Luminous_Fractures_v2.csd</a></p><p>
<a class="ipsAttachLink" href="https://opusmodus.com/forums/applications/core/interface/file/attachment.php?id=4403&amp;key=c9e72115dfa256651ded30e979bb59d3" data-fileExt='opmo' data-fileid='4403' data-filekey='c9e72115dfa256651ded30e979bb59d3'>LuminousFractures2.opmo</a></p>]]></description><guid isPermaLink="false">4099</guid><pubDate>Mon, 13 Apr 2026 16:12:12 +0000</pubDate></item><item><title>No&#xFB;s for small ensemble</title><link>https://opusmodus.com/forums/topic/4088-no%C3%BBs-for-small-ensemble/</link><description><![CDATA[<p>A piece from 2023 added to my new website:</p><p></p><figure data-og-url="https://stephaneboussuge.com/" data-og-description="Official website of Stéphane Boussuge, contemporary music composer. Explore his biography, works, and listen to his compositions." data-og-image="https://qtrypzzcjebvfcihiynt.supabase.co/storage/v1/render/image/public/base44-prod/public/6956596d20e83400b6f1357f/b4e40c039_logo.png?width=1200&amp;height=630&amp;resize=contain" data-og-title="Stéphane Boussuge - Composer" data-og-site_name="Stéphane Boussuge - Composer" data-og-favicon_url="https://qtrypzzcjebvfcihiynt.supabase.co/storage/v1/object/public/base44-prod/public/6956596d20e83400b6f1357f/b4e40c039_logo.png" data-og-image_width="630" data-og-image_height="630" data-og-user_text="https://stephaneboussuge.com/Home" class="ipsEmbedded_og ipsEmbedded"><div class="ipsEmbedded_og__site-name"><img class="ipsEmbedded_og__favicon" src="https://qtrypzzcjebvfcihiynt.supabase.co/storage/v1/object/public/base44-prod/public/6956596d20e83400b6f1357f/b4e40c039_logo.png" alt=""><h5>Stéphane Boussuge - Composer</h5></div><img class="ipsEmbedded_og__image" src="https://qtrypzzcjebvfcihiynt.supabase.co/storage/v1/render/image/public/base44-prod/public/6956596d20e83400b6f1357f/b4e40c039_logo.png?width=1200&amp;height=630&amp;resize=contain" alt="No image preview" width="630" height="630" loading="lazy"><figcaption><h3 class="ipsEmbedded_og__title">Stéphane Boussuge - Composer</h3><div class="ipsEmbedded_og__description">Official website of Stéphane Boussuge, contemporary music composer. Explore his biography, works, and listen to his compositions.</div></figcaption></figure>]]></description><guid isPermaLink="false">4088</guid><pubDate>Thu, 02 Apr 2026 08:01:46 +0000</pubDate></item><item><title>aliquot-seq</title><link>https://opusmodus.com/forums/topic/4078-aliquot-seq/</link><description><![CDATA[<pre spellcheck="" class="ipsCode language-plaintext" data-language="Plain Text"><code>;; BY CLAUDE:

;; Aliquot-Sequenz (Summe echter Teiler, Zyklus = befreundete Zahlen)
(defun aliquot-seq (n &amp;optional acc)
  "Sequenz n → Σ(echte Teiler) bis 0, Fixpunkt oder Zyklus."
  (let ((acc (or acc (list n))))
    (let ((next (reduce #'+ (proper-divisors n) :initial-value 0)))
      (cond
        ((zerop next)        (append acc (list 0)))        ; endet bei 0
        ((member next acc)   (append acc (list next)))     ; Zyklus
        (t (aliquot-seq next (append acc (list next))))))))


(list-plot  (aliquot-seq (random 100))  :join-points t)
(list-plot (loop repeat 10
                   collect (aliquot-seq (random 100)))
           :join-points t)</code></pre><p></p><p><img class="ipsImage ipsRichText__align--block" data-fileid="4370" src="https://opusmodus.com/forums/uploads/monthly_2026_03/Bildschirmfoto2026-03-13um09_43_33.png.b07190fd0f43db4842779dea444f99c9.png" alt="Bildschirmfoto 2026-03-13 um 09.43.33.png" title="" width="1226" height="1022" loading="lazy"></p>]]></description><guid isPermaLink="false">4078</guid><pubDate>Fri, 13 Mar 2026 08:44:47 +0000</pubDate></item><item><title>happy-number-seq</title><link>https://opusmodus.com/forums/topic/4077-happy-number-seq/</link><description><![CDATA[<pre spellcheck="" class="ipsCode language-plaintext" data-language="Plain Text"><code>;; BY CLAUDE:

(defun happy-step (n)
  (reduce #'+ (mapcar (lambda (d) (* d d)) (digits n))))

(defun 

 (n &amp;optional acc)
  "Sequenz bis Fixpunkt 1 oder bis Zyklus erkannt."
  (let ((acc (or acc (list n))))
    (let ((next (happy-step n)))
      (if (member next acc)
          (append acc (list next))   ; Zyklus: letztes Element zeigt wohin
          (happy-seq next (append acc (list next)))))))


(happy-seq (rnd-pick (happy-numbers 100)))

(list-plot (loop repeat 10
                   collect (flatten (happy-seq  (rnd-pick (happy-numbers 300)))))
           :join-points t)</code></pre><p><img class="ipsImage ipsRichText__align--block" data-fileid="4369" src="https://opusmodus.com/forums/uploads/monthly_2026_03/Bildschirmfoto2026-03-13um09_40_57.png.7f6f471c84d62651cb96de86d48f9a86.png" alt="Bildschirmfoto 2026-03-13 um 09.40.57.png" title="" width="1226" height="1022" loading="lazy"></p>]]></description><guid isPermaLink="false">4077</guid><pubDate>Fri, 13 Mar 2026 08:42:11 +0000</pubDate></item><item><title>all-magic-square-lines</title><link>https://opusmodus.com/forums/topic/4076-all-magic-square-lines/</link><description><![CDATA[<p>all columns, rows, diagonals in a list...</p><pre spellcheck="" class="ipsCode language-plaintext" data-language="Plain Text"><code>
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defun all-magic-square-lines (n)
  (let ((alist (magic-square n)))
      (append alist
            (loop for x from 0 to (1- (length (car alist)))
                          collect (loop for i in alist
                                        collect (nth x i)))

            (list (loop for i in alist
                  with cnt = 0
                  collect (nth cnt i)
                  do (incf cnt)))
            
            
            (list (loop for i in alist
                  with cnt = (1- (length (car alist)))
                  collect (nth cnt i)
              do (decf cnt))))))
    
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(all-magic-square-lines 3)
=&gt; ((8 1 6) (3 5 7) (4 9 2) (8 3 4) (1 5 9) (6 7 2) (8 5 2) (6 5 4))

(all-magic-square-lines 4)
=&gt; ((16 5 9 4) (2 11 7 14) (3 10 6 15) (13 8 12 1) (16 2 3 13) (5 11 10 8) (9 7 6 12) (4 14 15 1) (16 11 6 1) (4 7 10 13)) 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; test
(loop for i in (all-magic-square-rows 7)
        collect (sum i))
=&gt; (175 175 175 175 175 175 175 175 175)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</code></pre><p></p><p></p><pre spellcheck="" class="ipsCode language-plaintext" data-language="Plain Text"><code>(all-magic-square-lines 3)</code></pre><p></p><p><img class="ipsImage ipsRichText__align--block" data-fileid="4368" src="https://opusmodus.com/forums/uploads/monthly_2026_03/Bildschirmfoto2026-03-12um22_45_27.png.8c6984f7505ca8fda0ad73b2e16a2005.png" alt="Bildschirmfoto 2026-03-12 um 22.45.27.png" title="" width="1226" height="1026" loading="lazy"></p>]]></description><guid isPermaLink="false">4076</guid><pubDate>Thu, 12 Mar 2026 21:48:02 +0000</pubDate></item><item><title>Experiment with Opusmodus / Lilypond powerful workflow</title><link>https://opusmodus.com/forums/topic/4072-experiment-with-opusmodus-lilypond-powerful-workflow/</link><description><![CDATA[<p>Hi,</p><p></p><p>Here’s a short video demonstrating some experimentation with transmitting Opusmodus scores (using MusicXml2ly) to a pre-defined template in Lilypond.</p><p></p><ul><li><p>To accomplish this, I’ve created a String trio template in Lilypond and implemented a highly intricate function with the invaluable assistance of OpusmodusGPT. Opusmodus exports the Opusmodus XML file to Lilypond using MusicXml2ly, and it automatically extracts the content of this file and pastes it into the appropriate variables within the template. Subsequently, the file is saved on disk, and Lilypond is invoked to compile it. Finally, the resulting PDF is displayed using the preview function.</p></li></ul><p></p><p><video class="ipsEmbeddedVideo ipsRichText__align--block" data-controller="core.global.core.embeddedvideo" controls="" title="" preload="metadata"><source src="https://opusmodus.com/forums/uploads/monthly_2026_03/OpusmodusLilypondPowerWorkflow.mp4.781d55031281f156222aa07d2ee0ed30.mp4#t=0" type="video/mp4"><a href="https://opusmodus.com/forums/applications/core/interface/file/attachment.php?id=4365&amp;key=74fe35717be538672e4f55f7789caf85" class="ipsAttachLink" data-fileid="4365" data-fileext="mp4" rel="">OpusmodusLilypondPowerWorkflow.mp4</a></source></video></p><p></p><p></p>]]></description><guid isPermaLink="false">4072</guid><pubDate>Tue, 03 Mar 2026 19:26:21 +0000</pubDate></item><item><title>Sketching with Opusmodus and Max/MSP</title><link>https://opusmodus.com/forums/topic/4062-sketching-with-opusmodus-and-maxmsp/</link><description><![CDATA[<p>Just sketching with Opusmodus and Max/MSP: Bars arranged as a matrix are read via a vector envelope and then filtered again by a cellular automaton (the bar is either played or replaced by a rest). In Max/MSP it is recorded and the sample/seq is played back in different ways. The MIDI output of Opusmodus additionally controls higher-level comb filters on it. Sounddesign with simple and cheap sounds by impulse response software (room/media simulations).</p><p></p><p><video class="ipsEmbeddedVideo ipsRichText__align--block" data-controller="core.global.core.embeddedvideo" controls="" title="" preload="metadata"><source src="https://opusmodus.com/forums/uploads/monthly_2026_02/sketch.MOV.8c5145eb47ee23fac22adb07ca1f353c.MOV#t=0" type="video/quicktime"><a href="https://opusmodus.com/forums/applications/core/interface/file/attachment.php?id=4357&amp;key=b89020d8704a91d452a6a242e91890c9" class="ipsAttachLink" data-fileid="4357" data-fileext="MOV" rel="">sketch.MOV</a></source></video></p><p></p><p><video class="ipsEmbeddedVideo ipsRichText__align--block" data-controller="core.global.core.embeddedvideo" controls="" title="" preload="metadata"><source src="https://opusmodus.com/forums/uploads/monthly_2026_02/sketch2.MOV.c0f8f1a02937b1ccfb1382d232ae800b.MOV#t=0" type="video/quicktime"><a href="https://opusmodus.com/forums/applications/core/interface/file/attachment.php?id=4358&amp;key=c540170a6acc4c63788e8c7e19a01d92" class="ipsAttachLink" data-fileid="4358" data-fileext="MOV" rel="">  sketch2.MOV</a></source></video></p>]]></description><guid isPermaLink="false">4062</guid><pubDate>Thu, 19 Feb 2026 21:33:56 +0000</pubDate></item><item><title>Organism I for electronic</title><link>https://opusmodus.com/forums/topic/4061-organism-i-for-electronic/</link><description><![CDATA[<div class="ipsEmbeddedVideo" contenteditable="false" data-og-user_text="https://youtu.be/Fizf6weYINE" style="--i-media-width: 100%;"><iframe width="200" height="113" src="https://www.youtube-nocookie.com/embed/Fizf6weYINE?feature=oembed" frameborder="0" allow="encrypted-media; picture-in-picture; fullscreen" title="Organisms 1" loading="lazy"></iframe></div>]]></description><guid isPermaLink="false">4061</guid><pubDate>Wed, 18 Feb 2026 19:20:27 +0000</pubDate></item><item><title>Phase Space 247 for Ensemble</title><link>https://opusmodus.com/forums/topic/4051-phase-space-247-for-ensemble/</link><description><![CDATA[<p>New piece Phase Space for Ensemble.</p><p></p><p><span style="font-family: inherit;">Phase Space 247 conceives music as a dynamic system evolving within a space of possibilities. Inspired by the notion of phase space in physics and mathematics, each musical parameter — pitch, rhythm, density, dynamics, instrumentation — is treated as a dimension of a multidimensional field, within which the sonic material traces its trajectories. The piece is driven by an algorithmic process shaped by global tendencies (attractors) and local variations. A shared underlying force field influences all voices, ensuring perceptual coherence, while each line retains expressive autonomy through fluctuations, silences, ornaments, and internal displacements. Rather than following a fixed formal plan, the work unfolds through an unstable balance between determinacy and indeterminacy, memory and noise, repetition and transformation. Certain sections may exhibit palindromic structures or internal echoes, as if the system were recalling its own previous states. Tempo changes, density distributions, and the morphology of instrumental textures emerge directly from the generative process itself, making the algorithm not merely a production tool, but a genuine formal compositional model. Phase Space 247 invites the listener to follow the evolution of a continuously transforming sonic organism, where form is never imposed, but constantly attracted.</span></p><p></p><figure data-og-url="https://stephaneboussuge.com/Listen?track=69879317e27c2add153e6be4" data-og-description="Official website of Stéphane Boussuge, contemporary music composer. Explore his biography, works, and listen to his compositions." data-og-image="https://qtrypzzcjebvfcihiynt.supabase.co/storage/v1/render/image/public/base44-prod/public/6956596d20e83400b6f1357f/b4e40c039_logo.png?width=1200&amp;height=630&amp;resize=contain" data-og-title="Listen | Stéphane Boussuge - Composer" data-og-site_name="Stéphane Boussuge - Composer" data-og-favicon_url="https://qtrypzzcjebvfcihiynt.supabase.co/storage/v1/object/public/base44-prod/public/6956596d20e83400b6f1357f/b4e40c039_logo.png" data-og-image_width="630" data-og-image_height="630" data-og-user_text="https://stephaneboussuge.com/Listen?track=69879317e27c2add153e6be4" class="ipsEmbedded_og ipsEmbedded"><div class="ipsEmbedded_og__site-name"><img class="ipsEmbedded_og__favicon" src="https://qtrypzzcjebvfcihiynt.supabase.co/storage/v1/object/public/base44-prod/public/6956596d20e83400b6f1357f/b4e40c039_logo.png" alt=""><h5>Stéphane Boussuge - Composer</h5></div><img class="ipsEmbedded_og__image" src="https://qtrypzzcjebvfcihiynt.supabase.co/storage/v1/render/image/public/base44-prod/public/6956596d20e83400b6f1357f/b4e40c039_logo.png?width=1200&amp;height=630&amp;resize=contain" alt="No image preview" width="630" height="630" loading="lazy"><figcaption><h3 class="ipsEmbedded_og__title">Listen | Stéphane Boussuge - Composer</h3><div class="ipsEmbedded_og__description">Official website of Stéphane Boussuge, contemporary music composer. Explore his biography, works, and listen to his compositions.</div></figcaption></figure>]]></description><guid isPermaLink="false">4051</guid><pubDate>Sat, 07 Feb 2026 19:39:21 +0000</pubDate></item><item><title>brownian bridge ornaments</title><link>https://opusmodus.com/forums/topic/3907-brownian-bridge-ornaments/</link><description><![CDATA[<p>Here is a function (with subfunctions) that operates based on the principle of the Brownian bridge. You define the start and end, and with each generation, an extended embellishment emerges. The principle is simple and allows for the creation of ornaments. Attached are some examples — I’ve structured them this way to make the principle easier to understand.</p><p></p><p>Here is a small graphical model showing four generations. The start and end points remain the same, while new random points are added in between with each generation.</p><p></p><p><img class="ipsImage ipsRichText__align--block" data-fileid="4125" src="https://opusmodus.com/forums/uploads/monthly_2025_05/pic.png.2c990ca5f66ff2c772ddb7676ecb435d.png" alt="pic.png" width="1062" height="774" loading="lazy"></p><p></p><p></p><p>The Code &amp; Examples</p><p></p><pre spellcheck="" class="ipsCode language-plaintext" data-language="Plain Text"><code>(defun pick (a b &amp;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))))


(defun gen-brownian-bridge (n startend &amp;key (all-gen nil) (output 'integer) (span 5))
  (let ((seq)
        (liste startend))
    (progn
      (setf seq (append (list startend)
                        (loop repeat n
                              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))))


(defun remove-duplicates-keep-edges (lst)
  "Entfernt innere Duplikate aus LST, behält aber den ersten und letzten Wert unabhängig von Wiederholungen."
  (let* ((first (first lst))
         (last (car (last lst)))
         (len (length lst))
         (result '())
         (seen '())
         (index 0))
    (dolist (el lst (reverse result))
      (cond
        ;; Ersten Wert immer behalten
        ((= index 0)
         (push el result)
         (push el seen))
        ;; Letzten Wert immer behalten
        ((= index (1- len))
         (push el result))
        ;; Innere Duplikate von first oder last überspringen
        ((or (and (eq el first) (/= index 0))
             (and (eq el last) (/= index (1- len))))
         ;; überspringen
         nil)
        ;; Andere Duplikate vermeiden
        ((not (member el seen))
         (push el result)
         (push el seen)))
      (setf index (1+ index)))))

;(remove-duplicates-keep-edges '(a b c a d e b c))

(defun reset-pitch-sequence (pitch-sequence pitch &amp;key (type 'low))
  (let ((pitch1 (cond  ((equal type 'low)
                        (car (get-ambitus pitch-sequence :type :pitch)))
                       ((equal type 'high)
                        (cadr (get-ambitus pitch-sequence :type :pitch)))
                       ((equal type 'center) 
                        (center-position-in-list (sort-asc pitch-sequence) :get-value t)))))

    (if (not (omn-formp pitch-sequence))
      (pitch-transpose (car (pitch-to-interval (list (if (chordp pitch1)
                                                       (car (pitch-melodize pitch1))
                                                       (append pitch1))
                                                     pitch))) pitch-sequence)

      (omn-component-replace pitch-sequence
                             (pitch-transpose (car (pitch-to-interval (list (if (chordp pitch1)
                                                                              (car (pitch-melodize pitch1))
                                                     (append pitch1))
                                                                            pitch))) (omn :pitch pitch-sequence))))))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;; only the main function, to see how it works
;;; 6 generations, start with 3 end with 2, span = max inteval/seps
;;; 

(list-plot
 (flatten (gen-brownian-bridge 6 '(3 2) :span 4  :all-gen t))
 :join-points nil :style :fill)


(gen-brownian-bridge 4 '(3 2) :span 3  :all-gen t)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


;;; example with 6 generations
;;; every generation in an new bar to show how ith works

(omn-list-plot
(progn
  (setf seq (reset-integer-sequence (gen-brownian-bridge 6 '(3 2) :span 4  :all-gen t)))                               
  (setf pitchfield (make-scale 'c4 (find-max (flatten seq)) :alt '(1 1 2 4 7 4 2)))
  (setf pitch (position-filter seq pitchfield))

  (setf rhy 1/16)
  (setf lengths (loop for i in pitch
                        collect (length-rational-quantize (gen-length (gen-repeat (length i) 1) rhy) :round '10/4)))
  (make-omn
   :pitch pitch
   :length lengths))
:join-points nil :style :fill)


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


;;; ALL DUPLCIATIONS INSIDE one PHRASE are removed!!!

;;; example with 6 generations
;;; every generation in an new bar to show how ith works
;;;


(omn-list-plot
(progn
  (setf seq (reset-integer-sequence (loop for i in (gen-brownian-bridge 6 '(3 2) :span 4  :all-gen t)
                                          collect (remove-duplicates-keep-edges i))))

  (setf pitchfield (make-scale 'c4 (find-max (flatten seq)) :alt '(1 1 2 4 7 4 2)))
  (setf pitch (position-filter seq pitchfield))

  (setf rhy 1/16)
  (setf lengths (loop for i in pitch
                        collect (length-rational-quantize (gen-length (gen-repeat (length i) 1) rhy) :round '6/4)))
  (make-omn
   :pitch pitch
   :length lengths))

:join-points nil :style :fill)

      

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

</code></pre>]]></description><guid isPermaLink="false">3907</guid><pubDate>Thu, 08 May 2025 06:51:51 +0000</pubDate></item><item><title>Take #6 - LCCOTO - Lydian Chromatic Concept of Tonal Organization - George Russell</title><link>https://opusmodus.com/forums/topic/4028-take-6-lccoto-lydian-chromatic-concept-of-tonal-organization-george-russell/</link><description><![CDATA[<p>Happy New Year 2026 to OM community.</p><p></p><p></p><p>Followup on post: <a rel="" href="https://opusmodus.com/forums/topic/3989-om-lydian-chromatic-concept-of-tonal-organization-george-russell/"><u>https://opusmodus.com/forums/topic/3989-om-lydian-chromatic-concept-of-tonal-organization-george-russell/</u></a></p><p></p><p><audio data-controller="core.global.core.embeddedaudio" src="https://opusmodus.com/forums/applications/core/interface/file/attachment.php?id=4289&amp;key=adaa85ab062cd44f6b4c6a455130b444" type="audio/mpeg" controls="" preload="metadata"><a class="ipsAttachLink" href="https://opusmodus.com/forums/applications/core/interface/file/attachment.php?id=4289&amp;key=adaa85ab062cd44f6b4c6a455130b444" data-fileid="4289" data-fileext="mp3" rel="">Enthous.mp3</a></audio></p><p></p><p>"Enthous" is a small piece, which tries to use techniques of LCCOTO in 2 parts form each using alternations of 2 parent-scales.</p><p>Opusmodus is very well equipped for LCCOTO <span class="ipsEmoji" title="grinning face">😀</span>.</p><p></p><p>Comments</p><ul><li><p>Function <code>find-chord-for-parent-scale</code> is implemented here: <a rel="" href="https://opusmodus.com/forums/topic/3998-take-3-lydian-chromatic-concept-of-tonal-organization-george-russell/">https://opusmodus.com/forums/topic/3998-take-3-lydian-chromatic-concept-of-tonal-organization-george-russell/</a></p></li><li><p>Function <code>write-midi</code> is implemented here: <a rel="" href="https://opusmodus.com/forums/topic/4024-command-to-include-in-def-score-or-at-the-end-of-code-to-automaticcaly-store-the-evaluation-as-indexed-midi-file-to-a-predefine-folder/#findComment-13925">https://opusmodus.com/forums/topic/4024-command-to-include-in-def-score-or-at-the-end-of-code-to-automaticcaly-store-the-evaluation-as-indexed-midi-file-to-a-predefine-folder/#findComment-13925</a></p></li><li><p>I am making heavy use of <code>arrows</code> package to pipe operations (especially here <code>arrows:-&lt;&gt;</code>), enhancing readability from top to bottom. See my request to enable this in OM w/o namespace-qualifier on this <a rel="" href="https://opusmodus.com/forums/topic/4014-using-arrows-package-in-om-threading-macros-pipeline-syntax/">here</a>.</p></li></ul><p></p><p></p><p></p><p>Part A:</p><pre spellcheck="" class="ipsCode language-plaintext" data-language="Plain Text"><code>
;; Enthous - A modal piece
;; Part A
;;
;; C. Scherer, 2025/26
;;


(asdf:load-system :arrows)

(progn 

;; Part A - Parent scale
(setf parent-scale-a '(eb lydian))
(setf parent-scale-b '(c lydian))
(setf scale-a (second parent-scale-a))
(setf scale-b (second parent-scale-b))
(setf root-a (first (expand-tonality parent-scale-a)))
(setf root-b (first (expand-tonality parent-scale-b)))
(setf scale-tonality (tonality-series (list scale-a scale-b) 
                                        :root (list root-a root-b) :map 'octave :variant 'p))

;; Select Chords in this parent scale
(create-chord quartal-chord-4a '(0 5 10 14))
(create-chord quartal-chord-4b '(0 5 10 15))
(setf chords 
      (arrows:-&lt;&gt;
       (list parent-scale-a )
        (find-chord-for-parent-scale '((quartal-chord-4a quartal-chord-4b)))
        (flatten-sublist)
        (flatten-sublist)
        (expand-chord)
        (mclist)
        ))

;; Chord-Track
(setf chords-omn
      (arrows:-&lt;&gt;
       (make-omn :length (rnd-sample 8 (rhythm-series 1 5 8/4 :length '(h. q. e) :seed 40))
                 :pitch (rnd-sample 8 chords :seed 42)
                 :velocity (vector-to-velocity 'pppp 'f
                                               (gen-ar-time-series 64 '(0.8) 0.2 :seed 42))
                )
       (omn-to-time-signature &lt;&gt; '(4 4))
       (drop-voicing &lt;&gt; :type (rnd-sample 5 '(2 3)) :leading 't)
       (melodize-to-length 's 'e &lt;&gt;)
       (pitch-transpose -24 &lt;&gt;)
       (pitch-ornament)
       (tonality-map scale-tonality &lt;&gt; :time '(ww ww))
       (dictum '(:bar 16 :substitute '(w c3 mp)) &lt;&gt; )
       (velocity-to-dynamic)
       ))
(setf total-span-a (get-span chords-omn :sum t))
 

;; Melodic line 
(setf melo-mat
      (arrows:-&lt;&gt;
       (gen-ar-time-series 128 '(0.7) 0.5 )
       (vector-to-pitch '(eb4 f6) &lt;&gt;)
       (filter-repeat 1 &lt;&gt;)
       ))
(pitch-list-plot (flatten melo-mat))

(setf length-mat (euclidean-rhythm '(4 4) 1 4 1/4 :type 3))
(setf melody
      (arrows:-&lt;&gt;
       (make-omn :pitch melo-mat
                 :length (length-span total-span-a length-mat)
                 :velocity (vector-to-velocity 'pp 'fff 
                                               (gen-ar-time-series 64 '(0.7) 0.5 :seed 23))
                 :swallow nil
                 )
       (omn-to-time-signature &lt;&gt; '(4 4))
       ;(bind-to-interval '(-3 -3 -3 -3) &lt;&gt;)
       (passing-intervals '((2 (1 1)(2) )(-2 (-1 -1))
                            (3 (1 1 1))(-3 (-1 -1 -1))
                            (4 (2 2)(1 1 1 1))(-4 (-2 -2)(-1 -1 -1 -1))
                            (5 (1 1 1 1 1))(-5 (-1 -1 -1 -1 -1))
                            (6 (2 1 2 1))(-6 (-2 -1 -2 -1))
                            (7 (2 1 1 1 1))(-6 (-2 -1 -1 -1 -1))
                            ) &lt;&gt;)
       (quantize &lt;&gt; '(1 2 3 4 5))
       (length-augmentation '(2) &lt;&gt; :section '(0))
       (tonality-map scale-tonality &lt;&gt; :time '(ww ww))
       (flatten)
       (closest-path :ambitus '(eb4 f6))
       (filter-anacrusis)
       (omn-to-time-signature &lt;&gt; '(4 4))
       (fit-to-span total-span-a &lt;&gt;)
       (dictum '(:bar 16 :substitute '(w c4 mf)) &lt;&gt; )
       (velocity-to-dynamic)
       ))

;; Bass Line
(setf bass
      (arrows:-&lt;&gt;
       (make-omn :pitch (rnd-sample total-span-a '(c2 c2 c2 c2  c3 g2 b1))
                 :length (gen-repeat total-span-a (list (append
                                                   (fit-to-span 1 (pcs-rhythm '6-7 
                                                                              :rotate 0
                                                                              :value 'e))
                                                   (fit-to-span 1 (pcs-rhythm '6-7 
                                                                              :rotate -4
                                                                              :value 'e)))))
                 :velocity (vector-to-velocity 'p 'ff
                                               (gen-ar-time-series 128 '(0.8) 0.2 :seed 42))
                 :articulation (gen-loop 16 (vector-map '(stacc marc def leg)
                                           (gen-ar-time-series 8 '(0.8) 0.2)))
                 :swallow nil
                 )
       (omn-to-time-signature &lt;&gt; '(4 4))
       (tonality-map scale-tonality &lt;&gt; :time '(ww ww))
       (omn-to-time-signature &lt;&gt; '(4 4))
       (fit-to-span total-span-a &lt;&gt;)
       (quantize &lt;&gt; '(1 2 4))
       (dictum '(:bar 16 :do '(c2)) &lt;&gt; )
       (velocity-to-dynamic)
       ))

;; Preview
(ps 'gm
    :tempo 77
    :time-signature '(4 4)
    :p (list melody chords-omn)
    :bass (list bass)
)



(write-midi)

)

</code></pre><p></p><p>Part B:</p><p></p><pre spellcheck="" class="ipsCode language-plaintext" data-language="Plain Text"><code>
;; Enthous - A modal piece
;; Part B
;;
;; C. Scherer, 2025/26
;;


(asdf:load-system :arrows)

(progn 

;; Part A - Parent scale
(setf parent-scale-a '(a lydian-augmented))
(setf parent-scale-b '(c lydian))
(setf scale-a (second parent-scale-a))
(setf scale-b (second parent-scale-b))
(setf root-a (first (expand-tonality parent-scale-a)))
(setf root-b (first (expand-tonality parent-scale-b)))
(setf scale-tonality (tonality-series (list scale-a scale-b) 
                                        :root (list root-a root-b) :map 'octave :variant 'p))

;; Select Chords in this parent scale
(create-chord quartal-chord-4a '(0 5 10 14))
(create-chord quartal-chord-4b '(0 5 10 15))
(setf chords 
      (arrows:-&lt;&gt;
       (list parent-scale-a )
        (find-chord-for-parent-scale '((quartal-chord-4a quartal-chord-4b)))
        (flatten-sublist)
        (flatten-sublist)
        (expand-chord)
        (mclist)
        ))

;; Chord-Track
(setf chords-omn
      (arrows:-&lt;&gt;
       (make-omn :length (rnd-sample 16 (rhythm-series 1 4 4/4 :length '(h. q. e) :seed 43))
                 :pitch (rnd-sample 8 chords :seed 42)
                 :velocity (vector-to-velocity 'ppp 'mp
                                               (gen-ar-time-series 64 '(0.8) 0.2 :seed 43))
                )
       (omn-to-time-signature &lt;&gt; '(4 4))
       (drop-voicing &lt;&gt; :type (rnd-sample 5 '(2 3)) :leading 't)
       (melodize-to-length 's 'e &lt;&gt;)
       (pitch-transpose -24 &lt;&gt;)
       (pitch-ornament)
       (tonality-map scale-tonality &lt;&gt; :time '(ww ww))
       (dictum '(:bar 16 :substitute '(w c3 mp)) &lt;&gt; )
       (velocity-to-dynamic)
       ))
(setf total-span-a (get-span chords-omn :sum t))
 

;; Melodic line 
(setf melo-mat
      (arrows:-&lt;&gt;
       (gen-ar-time-series 128 '(0.9) 0.1 )
       (vector-to-pitch '(eb4 f6) &lt;&gt;)
       (filter-repeat 1 &lt;&gt;)
       (reverse)
       ))
(pitch-list-plot (flatten melo-mat))

(setf length-mat '(-e e s s s s -e q -q))
(setf melody
      (arrows:-&lt;&gt;
       (make-omn :pitch melo-mat
                 :length (length-span total-span-a length-mat)
                 :velocity (vector-to-velocity 'pp 'fff 
                                               (gen-ar-time-series 64 '(0.7) 0.5 :seed 23))
                 :swallow nil
                 )
       (omn-to-time-signature &lt;&gt; '(4 4))
       (bind-to-interval '(-2 -2 -2 -2) &lt;&gt;)
       ;(passing-intervals '((2 (1 1)(2) )(-2 (-1 -1))
       ;                     (3 (1 1 1))(-3 (-1 -1 -1))
       ;                     (4 (2 2)(1 1 1 1))(-4 (-2 -2)(-1 -1 -1 -1))
       ;                     (5 (1 1 1 1 1))(-5 (-1 -1 -1 -1 -1))
       ;                     (6 (2 1 2 1))(-6 (-2 -1 -2 -1))
       ;                     (7 (2 1 1 1 1))(-6 (-2 -1 -1 -1 -1))
       ;                     ) &lt;&gt;)
       (quantize &lt;&gt; '(1 2 3 4))
       (length-augmentation '(2) &lt;&gt; :section '(0))
       (length-augmentation '(2) &lt;&gt; :section '(7))
       (tonality-map scale-tonality &lt;&gt; :time '(ww ww))
       (flatten)
       (closest-path :ambitus '(d4 c5))
       ;(filter-anacrusis)
       (omn-to-time-signature &lt;&gt; '(4 4))
       (fit-to-span total-span-a &lt;&gt;)
       (dictum '(:bar 16 :substitute '(w c4 mf)) &lt;&gt; )
       (velocity-to-dynamic)
       ))

;; Bass Line
(setf bass
      (arrows:-&lt;&gt;
       (make-omn :pitch (rnd-sample total-span-a '(c2 c2 c2 c2 g1))
                 :length (gen-repeat total-span-a (list (append
                                                   (fit-to-span 1 (pcs-rhythm '7-7 
                                                                              :rotate 0
                                                                              :value 'e))
                                                   (fit-to-span 1 (pcs-rhythm '7-7 
                                                                              :rotate -4
                                                                              :value 'e)))))
                 :velocity (vector-to-velocity 'p 'ff
                                               (gen-ar-time-series 128 '(0.8) 0.2 :seed 42))
                 :articulation (gen-loop 16 (vector-map '(stacc marc def leg)
                                           (gen-ar-time-series 8 '(0.8) 0.2)))
                 :swallow nil
                 )
       (omn-to-time-signature &lt;&gt; '(4 4))
       (tonality-map scale-tonality &lt;&gt; :time '(ww ww))
       (omn-to-time-signature &lt;&gt; '(4 4))
       (fit-to-span total-span-a &lt;&gt;)
       (quantize &lt;&gt; '(1 2 4))
       (dictum '(:bar 16 :substitute '(w c2 mf)) &lt;&gt; )
       (velocity-to-dynamic)
       ))

;; Preview
(ps 'gm
    :tempo 77
    :time-signature '(4 4)
    :p (list melody chords-omn)
    :bass (list bass)
)



(write-midi)

)

</code></pre>]]></description><guid isPermaLink="false">4028</guid><pubDate>Thu, 01 Jan 2026 12:46:55 +0000</pubDate></item><item><title>Ibermusicas Prize 2025 - Julio Herrlein - Brasil - Made in Opusmodus</title><link>https://opusmodus.com/forums/topic/4010-ibermusicas-prize-2025-julio-herrlein-brasil-made-in-opusmodus/</link><description><![CDATA[<p>Dear Friends at Opusmodus team,</p><p></p><p>With great joy, I´d like to share with you an important international prize I received as composer in 28th november. It´s the IBERMÚSICAS prize for Symphonic Band 2025. It was very competitive and I´m honored to represent Brazil in this contest.</p><p>I´m posting this here because Opusmodus became since 2017 a very important tool in my compositional process, although I do not use it from beginning to end, i.e., there are many things I do manually. Nevertheless, it plays a crucial role in my workflow and I´d like to thanks the team for this.</p><p>All the best and happy 2026 !</p><p></p><p>Here are the selected compositions: </p><p></p><p><a rel="external nofollow" href="https://seleccionados2025.ibermusicas.org/">https://seleccionados2025.ibermusicas.org/</a></p><p></p><p>And the information of the selection:</p><p></p><p><a rel="external nofollow" href="https://www.ibermusicas.org/index.php/um-juri-constituido-por-maestras-e-maestros-de-renome-levou-a-cabo-o-processo-de-qualificacao-e-selecao-das-obras-vencedoras-do-premio-ibermusicas-para-a-composicao-de-obra-para-banda-sinfonica-20/">https://www.ibermusicas.org/index.php/um-juri-constituido-por-maestras-e-maestros-de-renome-levou-a-cabo-o-processo-de-qualificacao-e-selecao-das-obras-vencedoras-do-premio-ibermusicas-para-a-composicao-de-obra-para-banda-sinfonica-20/</a></p><p></p><p>Translation</p><p></p><p>A jury composed of renowned conductors carried out the qualification and selection process for the winning works of the “Ibermúsicas Prize for the Composition of a Work for Symphonic Band” 2025.</p><p>Encouraging musical creation, Ibermúsicas has launched a new edition of its competitions for the creation of academic works, this time specifically focused on the creation of new works for symphonic bands, to be premiered by top-tier ensembles from Colombia, Costa Rica, Cuba, Mexico, and Venezuela.</p><p>In this edition, composers were invited to draw inspiration from the Ibero-American soundscape, as a diverse and colorful space, varied and contrasting, which, despite its differences, weaves threads, like the symphonic wind bands that traverse our countries and blend with their different cultures, to find very particular sonorities that make them unique in each country or region.</p><p>With the aim of promoting mutual understanding between the peoples and the specific subsector of wind bands among our countries, composers were encouraged to explore this sonic universe through the repertoires, genres, and soundings of bands from different countries, schools, and their reference composers, among many other possibilities that unite the countries that are part of Ibero-American cooperation.</p><p>The award includes, in addition to financial recognition for each creator, the premiere of the winning works performed by the Valle Departmental Symphonic Band of Colombia, one of the seven bands of the General Directorate of Bands of Costa Rica, the National Concert Band of Cuba, the Symphonic Band of the Faculty of Music of UNAM in Mexico, and the Caracas Marching Band of Venezuela.</p><p>The jury, composed of Andrés Porras Alfaro from Costa Rica, David Leonardo Guarin Ortiz from Colombia, Marcia Quesada from Cuba, Luis Manuel Sánchez from Mexico, and Pedro Mauricio Gonzalez from Venezuela, worked intensively on selecting the winning works from among the 62 submitted to the competition under pseudonyms.</p><p>With pride and joy, the Ibermúsicas Program invites you to discover the names of the winning male and female composers of this competition  here. </p><p><a rel="external nofollow" href="https://seleccionados2025.ibermusicas.org/">https://seleccionados2025.ibermusicas.org/</a></p>]]></description><guid isPermaLink="false">4010</guid><pubDate>Sun, 07 Dec 2025 17:47:24 +0000</pubDate></item><item><title>Take #5 - LCCOTO - Lydian Chromatic Concept of Tonal Organization - George Russell</title><link>https://opusmodus.com/forums/topic/4004-take-5-lccoto-lydian-chromatic-concept-of-tonal-organization-george-russell/</link><description><![CDATA[<p>Followup on post: <a rel="" href="https://opusmodus.com/forums/topic/3989-om-lydian-chromatic-concept-of-tonal-organization-george-russell/"><u>https://opusmodus.com/forums/topic/3989-om-lydian-chromatic-concept-of-tonal-organization-george-russell/</u></a></p><p></p><p>Here's another a bit more involved attempt using LCCOTO for my naive take of a fusion piece.</p><p>The chord track for 2 parts is given, melodies use the LCCOTO parent scale for chords.</p><p>One can exchange by other more outgoing scales.</p><p>Audio example are for normal, most ingoing lydian scale.</p><p></p><p>Code for the function <code>find-parent-scale-for-chord</code> is this <a rel="" href="https://opusmodus.com/forums/topic/3994-take-1-lydian-chromatic-scale-concept-of-tonal-organization-george-russell/#findComment-13804">post</a></p><p></p><p>3 picked audio manifestations with different start seeds.</p><p></p><p>Seed: 78641</p><p><audio data-controller="core.global.core.embeddedaudio" src="https://opusmodus.com/forums/applications/core/interface/file/attachment.php?id=4256&amp;key=6d60c9c28fd186c8c725a5661ccfd13b" type="audio/mpeg" controls="" preload="metadata"><a class="ipsAttachLink" href="https://opusmodus.com/forums/applications/core/interface/file/attachment.php?id=4256&amp;key=6d60c9c28fd186c8c725a5661ccfd13b" data-fileid="4256" data-fileext="mp3" rel="">e1.mp3</a></audio></p><p></p><p>Seed: 34987</p><p><audio data-controller="core.global.core.embeddedaudio" src="https://opusmodus.com/forums/applications/core/interface/file/attachment.php?id=4258&amp;key=369cbceaba9a1ec2fa578b30d588f4fd" type="audio/mpeg" controls="" preload="metadata"><a class="ipsAttachLink" href="https://opusmodus.com/forums/applications/core/interface/file/attachment.php?id=4258&amp;key=369cbceaba9a1ec2fa578b30d588f4fd" data-fileid="4258" data-fileext="mp3" rel="">e2.mp3</a></audio></p><p></p><p>Seed: 10461</p><p><audio data-controller="core.global.core.embeddedaudio" src="https://opusmodus.com/forums/applications/core/interface/file/attachment.php?id=4259&amp;key=304bd0f12be3f2d028b2a50a96371d9c" type="audio/mpeg" controls="" preload="metadata"><a class="ipsAttachLink" href="https://opusmodus.com/forums/applications/core/interface/file/attachment.php?id=4259&amp;key=304bd0f12be3f2d028b2a50a96371d9c" data-fileid="4259" data-fileext="mp3" rel="">e3.mp3</a></audio></p><p></p><p></p><p>Here's the code. Appreciate any improvement suggestions.</p><pre spellcheck="" class="ipsCode language-plaintext" data-language="Plain Text"><code>;; ---------------------------------------------------------
;; 
;; LCCOTO Chordtrack derived tonaloity-series
;;
;; Variations Part A, B
;;
;; Cliff Scherer, 2025
;;
;; ---------------------------------------------------------

(progn

(setf seed (rnd-pick (gen-integer-seq '((1 100000)))))
(init-seed seed)

(defun prepare-fusion (&amp;key total-span 
                            chord-track
                            parent-scale-candidates
                            melody-number-of-notes
                            melody-augmentation-factor
                            melody-tuplet) 
  
  "Prepare parts of a fusion piece"

   ;; Chords, Harmony
   (setf chord-track (length-span total-span chord-track))
   (setf harmonic-rhythm (omn :length (filter-tie chord-track)))
   
   ;; Bass
   (setf bass-rhythm-cell (length-span '(1) (pcs-rhythm '3-11 :points 6 
                                                     :rotate (rnd-pick '(0 5)) 
                                                     :legato t)))
   (setf bass-pitch-cell (rnd-pick '((c2 g2 b2)(c2 g2 d2))))
   (setf bass-mat (make-omn :pitch (pitch-transpose -0 bass-pitch-cell)
                         :length (length-span total-span bass-rhythm-cell)
                         :velocity '((0.6 0.51 0.5 0.55))
                         :articulation '(leg stacc stacc stacc )))

   ;; Melody
   (setf pattern (rhythm-series 2 melody-number-of-notes 4/4))
   (setf pattern-length (length-span total-span (quantize (length-augmentation 1 pattern)
                                                          melody-tuplet)))
   (setf pattern-pitch (bind-to-interval 
                        '(7 -7) 
                        (gen-divide 5 
                                    (vector-to-pitch '(c4 g5) 
                                                     (gen-accumulate (rndn 128 
                                                                           -1.0 1.0) :decf t)))))
                        (setf melody-mat (make-omn :pitch pattern-pitch                  
                              :length pattern-length
                              :velocity (rnd-sample 5 '((f mf) (f mp) (mf &lt; p &gt; pp &gt;)))))
   

   ;; Drums
   (setf bd (gen-loop 2 (polygon-rhythm 5 8 0 :value 'e  :pitch 'c2 :velocity '(f p = = = =))))
   (setf hh (gen-loop 2 (polygon-rhythm 28 32 2 :value 's :pitch 'fs2 :velocity '(f ff mf p p f))))
   (setf ho (gen-loop 2 (polygon-rhythm 3 64 4 :value 's :pitch 'as2 :velocity '(p p))))
   (setf to (polygon-rhythm 3 8 4 :value 'e :pitch 'g2 :velocity '(p mp)))
   (setf bd-omn (assemble-seq (length-span (- total-span 1) (first bd)) 
                              (length-span 1 (second bd))))
   (setf hh-omn (assemble-seq (length-span (- total-span 1) (first hh)) 
                              (length-span 1 (second hh))))
   (setf ho-omn (assemble-seq (length-span (- total-span 1) (first ho)) 
                              (length-span 1 (second ho))))
   (setf to-omn (assemble-seq (length-span (- total-span 1) '(-e))
                              (length-span 1 to)))
                                           
   (setf drums-omn (merge-voices bd-omn hh-omn ho-omn to-omn))

   ;; Sax play same as melody but with alteration
   (setf sax-mat (pitch-transpose -36 (ambitus-field '(0 15) (pitch-invert melody-mat))))


   ;;; Bring lines to tonality

   ;; For Melody use LCCOTO parent scale for melody
   (setf chord-symbols  (omn :pitch (filter-tie chord-track)))
   (setf parent-scales (mapcar 'rnd-pick 
                            (find-parent-scale-for-chord (mclist chord-symbols) 
                                                         :scales parent-scale-candidates)))
   (setf parent-scales-root (mapcar 'find-root (mclist(expand-chord parent-scales))))
   (setf parent-scales-mode (mapcar 'second parent-scales))
   (setf parent-tonality-series (tonality-series parent-scales-mode 
                                              :root parent-scales-root 
                                              :map 'octave :ambitus '(c4 g5) :variant 'p))
   (setf melody-omn (filter-tie (tonality-map parent-tonality-series melody-mat 
                                  :time harmonic-rhythm)))

   (setf sax-omn (length-weight
                  (length-legato (filter-tie (tonality-map parent-tonality-series sax-mat 
                                                           :time harmonic-rhythm)))
                  :weight '(5 1)))

   ;; For Bass use chord
   (setf chord-pitches (chord-interval-remove '(10 11) chord-symbols))
   (setf chord-tonality-series (tonality-series chord-pitches :map 'octave))
   (setf bass-omn (tonality-map chord-tonality-series bass-mat
                             :time harmonic-rhythm))

   ;; For Chords some variation
   (setf chord-omn (pitch-transpose -12 (closest-path (drop-voicing chord-track :type '(1)))))
   (setf chord-omn (omn-replace :velocity (rnd-sample 2 '(mf mp)) chord-omn))

   
   ;; Prepare voices
   (setf v1 (omn-to-time-signature melody-omn '(4 4))
         v2 (omn-to-time-signature chord-omn '(4 4))
         v3 (omn-to-time-signature bass-omn '(4 4))
         v4 (omn-to-time-signature sax-omn '(4 4))
         v5 (omn-to-time-signature drums-omn '(4 4)))

   ;; Timeline
   (setf on-off (gen-binary-series 24 '( 2 3) '(3) :rotate -4))
   (do-timeline2 '(v1 v4) on-off '(gen-pause x) :time '(wh) :loop t)

   (def-score fusion
       (:key-signature 'chromatic
        :time-signature '(4 4)
        :tempo '(80)
        :layout (list
                 (bracket-group
                  (grand-layout 'rhand :name "Rhodes" :abbr "Rhodes")
                  (grand-layout 'lhand :name "Piano" :abbr "Piano"))
                 (tenor-sax-layout 'sax :name "Sax" :abbr "Sax")                 
                 (bass-layout 'bass :name "Bass" :abbr "Bass")
                 (drum-kit-layout 'drums :name "Drums" :abbr "Drums")))
     
     (rhand
      :port "Bus 1"
      :omn v1
      :sound 'gm 
      :program 'acoustic-grand-piano)
     (lhand
      :omn v2
      :port "Bus 2")
     (bass
      :omn v3
      :port "Bus 3")
     (sax
      :omn v4
      :port "Bus 4")
     (drums
      :omn v5
      :port "Bus 5")
     )
   )


;;; Use the function

(setf lydian-chromatic-scale (make-scale 'c1 12 :alt '(7 7 7 7 7 7 2 7 7 7 8)))
(create-tonality lydian-chromatic 'lydian-chromatic-scale)
(create-tonality lydian-chromatic-scale-6 (subseq lydian-chromatic-scale 1 6))
(create-tonality lydian-chromatic-scale-7-mod1 (subseq lydian-chromatic-scale 1 8))
(create-tonality lydian-chromatic-scale-7-mod2 (subseq lydian-chromatic-scale 2 9))



;; Create score
(setf fusion-a1 (prepare-fusion :total-span 8
                               :chord-track '((e. (f m7))(e. (f m7))(he (gs m7)))
                               :parent-scale-candidates '(lydian)
                               :melody-number-of-notes 2
                               :melody-augmentation-factor 3
                               :melody-tuplet '(1 2 4)))
(setf fusion-a2 (prepare-fusion :total-span 8
                               :chord-track '((e. (f m7))(e. (f m7))(he (gs m7)))
                               :parent-scale-candidates '(lydian)
                               :melody-number-of-notes 3
                               :melody-augmentation-factor 2
                               :melody-tuplet '(1 2 4)))
(setf fusion-b1 (prepare-fusion :total-span 8
                               :chord-track '((q. (e maj7))(e. (e 6))(qes (g 6)))
                                :parent-scale-candidates '(lydian)
                                :melody-number-of-notes 8
                                :melody-augmentation-factor 1
                                :melody-tuplet '(1 2 4)))
(setf fusion-b2 (prepare-fusion :total-span 8
                                :chord-track '((q. (e maj7))(e. (e 6))(qes (g 6)))
                                :parent-scale-candidates '(lydian)
                                :melody-number-of-notes 8
                                :melody-augmentation-factor 1
                                :melody-tuplet '(3)))

;; Arrange and Record MIDI
(setf start-1 (rnd-sample 7 '(1 2 3 4 5 6)))
(setf end-1 (x+b start-1 0))
(setf start-2 (rnd-sample 7 '(1 2 3 4 5)))
(setf end-2 (x+b start-2 1))


(compile-score 
 `(
   ;; 8 basr with a1
   (,(eval fusion-a1) :start 1 :end 1)
   (,(eval fusion-a1) :start 1 :end 1)
   (,(eval fusion-a1) :start ,(nth 0 start-2) :end ,(nth 0 end-2))
   (,(eval fusion-a1) :start ,(nth 1 start-2) :end ,(nth 1 end-2))
   (,(eval fusion-a1) :start ,(nth 1 start-1) :end ,(nth 1 end-1))
   (,(eval fusion-a1) :start 8 :end 8)
   ;; 8 bars with a2
   (,(eval fusion-a2) :start 1 :end 1)
   (,(eval fusion-a2) :start 1 :end 1)
   (,(eval fusion-a2) :start ,(nth 0 start-2) :end ,(nth 0 end-2))
   (,(eval fusion-a2) :start ,(nth 1 start-2) :end ,(nth 1 end-2))
   (,(eval fusion-a2) :start ,(nth 2 start-1) :end ,(nth 2 end-1))
   (,(eval fusion-a2) :start 8 :end 8)
   ;; 8 bars with b1
   (,(eval fusion-b1) :start 1 :end 1)
   ;;(,(eval fusion-b1) :start 1 :end 1)
   (,(eval fusion-b1) :start ,(nth 3 start-1) :end ,(nth 3 end-1))
   (,(eval fusion-b1) :start ,(nth 0 start-2) :end ,(nth 0 end-2))
   (,(eval fusion-b1) :start ,(nth 1 start-2) :end ,(nth 1 end-2))
   (,(eval fusion-b1) :start ,(nth 4 start-1) :end ,(nth 4 end-1))
   (,(eval fusion-b1) :start 8 :end 8)
   ;; 8 bars with b2
   (,(eval fusion-b2) :start 1 :end 1)
   (,(eval fusion-b1) :start ,(nth 5 start-1) :end ,(nth 5 end-1))
   (,(eval fusion-b2) :start ,(nth 0 start-2) :end ,(nth 0 end-2))
   (,(eval fusion-b2) :start ,(nth 1 start-2) :end ,(nth 1 end-2))
   (,(eval fusion-b2) :start ,(nth 6 start-1) :end ,(nth 6 end-1))
   (,(eval fusion-b2) :start 8 :end 8) 
   ;;
   (,(eval fusion-a1) :start 1 :end 1)
   (,(eval fusion-a1) :start 1 :end 1)
)
 :instrument t
 :output :midi
 :file (workspace-file "v.mid")
 :if-exists :new-index
 )

seed

)
  
</code></pre>]]></description><guid isPermaLink="false">4004</guid><pubDate>Sun, 30 Nov 2025 20:25:52 +0000</pubDate></item><item><title>Take #4 - LCCOTO - Lydian Chromatic Concept of Tonal Organization - George Russell</title><link>https://opusmodus.com/forums/topic/4001-take-4-lccoto-lydian-chromatic-concept-of-tonal-organization-george-russell/</link><description><![CDATA[<p>Followup on post: <a rel="" href="https://opusmodus.com/forums/topic/3989-om-lydian-chromatic-concept-of-tonal-organization-george-russell/"><u>https://opusmodus.com/forums/topic/3989-om-lydian-chromatic-concept-of-tonal-organization-george-russell/</u></a></p><p></p><p>Here's another 16bars short attempt to play with different level of in- and outgoing melodies according to LCCOTO..</p><p>Code for the function <code>find-chord-for-parent-scale</code> is this <a rel="" href="https://opusmodus.com/forums/topic/3998-take-3-lydian-chromatic-concept-of-tonal-organization-george-russell/#findComment-13805">post</a>.</p><p></p><p>Would be great to have a scale like <code>lydian-chromatic</code> (c1 g1 d2 a2 e3 b3 fs4 gs4 eb5 bb5 f6 cs7) properly built into OM (respecting the order of pitches, which is important for LCCOTO).</p><p>Maybe with a reference to Russell as this seems to be a tradition in OM (Modes.opmo).</p><p>The OM built-in scale <code>chromatic-lydian</code> with similar name seems to be 7-pitch scale (c4 cs4 e4 f4 fs4 a4 b4).</p><p></p><pre spellcheck="" class="ipsCode language-plaintext" data-language="Plain Text"><code>
(setf seed (rnd-pick (gen-integer-seq '((1 100000)))))
(init-seed seed)


;;; Idea --------------
;;;
;;; Cliff Scherer, 2025
;;;
;;; Melodic pitch material from two parent scales with different levels of ingoing/outgoing
;;; Chords symbol material in one scale
;;; Bass pitch for chords
;;; All materials are organized in lists aligned to the same size
;;; Later we may pick list elements using one random master index
;;;


;;; Scales

;; Define LCCOTO scale ---

(setf lydian-chromatic-scale (make-scale 'c1 12 :alt '(7 7 7 7 7 7 2 7 7 7 8)))
(create-tonality lydian-chromatic 'lydian-chromatic-scale)

;; Set 2 parent scale tonics ---

(setf 
 c-lydian-chromatic-scale (expand-tonality '(c lydian-chromatic))
 eb-lydian-chromatic-scale (expand-tonality '(eb lydian-chromatic)))



;;; Melody

;; Melody pitch material with different consonance/dissonance 

(setf 
 c-lydian-chromatic-1 (ambitus '(c4 c5) (gen-surround c-lydian-chromatic-scale :start 0 :size 5))
 eb-lydian-chromatic-1 (ambitus '(eb4 eb6) (gen-surround eb-lydian-chromatic-scale :start 0 :size 5))
 c-lydian-chromatic-2 (ambitus '(c4 c6) (gen-surround c-lydian-chromatic-scale :start 0 :size 7))
 eb-lydian-chromatic-2 (ambitus '(eb4 eb6) (gen-surround eb-lydian-chromatic-scale :start 0 :size 6))
 c-lydian-chromatic-3 (ambitus '(c5 c6) (gen-surround c-lydian-chromatic-scale :start 2 :size 8))
 eb-lydian-chromatic-3 (ambitus '(c5 c6) (gen-surround eb-lydian-chromatic-scale :start 2 :size 5)))

(setf
 melo-mat-size 2
 melo-mat-pitch-1 (rnd-sample melo-mat-size (combination 4 c-lydian-chromatic-1))
 melo-mat-pitch-2 (rnd-sample melo-mat-size (combination 4 c-lydian-chromatic-2))
 melo-mat-pitch-3 (rnd-sample melo-mat-size (combination 4 c-lydian-chromatic-3))
 melo-mat-pitch-4 (rnd-sample melo-mat-size (combination 4 eb-lydian-chromatic-1))
 melo-mat-pitch-5 (rnd-sample melo-mat-size (combination 4 eb-lydian-chromatic-2))
 melo-mat-pitch-6 (rnd-sample melo-mat-size (combination 4 eb-lydian-chromatic-3))
 ;; main result
 melo-mat-pitch (flatten-sublist (list melo-mat-pitch-1 melo-mat-pitch-1 
                                       melo-mat-pitch-2 melo-mat-pitch-2 
                                       melo-mat-pitch-3
                                       melo-mat-pitch-4 melo-mat-pitch-4
                                       melo-mat-pitch-5  
                                       melo-mat-pitch-6))
)

;; Voice-variant material for melody
(setf 
 melo-voice-variant-variant '(a d ad d)
 melo-voice-variant-tuplet '(1 1 1 1))

;; Melody velocity material
(setf melo-mat-velocity '((0.1)(0.2)(0.3)(0.4)(0.45)))

;; Melody initial length material
(setf melo-mat-length-cell-1 (pcs-rhythm '7-35 :rotate '(10) :legato t))
(setf melo-mat-length-cell-2 (pcs-rhythm '7-35 :rotate '(11) :legato t))

(setf melo-mat-length (list (fit-to-span '4/4 melo-mat-length-cell-1)
                            (fit-to-span '4/4 (length-augmentation 2 melo-mat-length-cell-1))
                            (fit-to-span '4/4 (length-augmentation 4 melo-mat-length-cell-1))
                            (fit-to-span '4/4 melo-mat-length-cell-2)
                            (fit-to-span '4/4 (length-augmentation 2 melo-mat-length-cell-2))
                            (fit-to-span '4/4 (length-augmentation 4 melo-mat-length-cell-2))))
                            


;;; Chords

;; Chord pitch material 

(setf 
 chord-quality '((m7/add2)(maj7/add2)(7/sus2))
 chords-found-in-scale (find-chord-for-parent-scale chord-scale chord-quality)
 chord-mat-size 2
 ;; main result
 chord-mat-symbol (combination chord-mat-size 
                               (flatten-sublist (flatten-sublist chords-found-in-scale))))

;; Chord velocity material
(setf chord-mat-velocity '((0.1)(0.2)(0.3)(0.35)))

;; Chord length material
(setf chord-mat-length '((q -q q -q)(-q q -q q)(e -q. q -q)(q. -e q. -e)))


;;; Bass

;; Bass pitch material 
(setf 
 chord-mat-root (find-root (flatten-sublist chord-mat))
 bass-mat-pitch (pitch-transpose -24 (gen-divide chord-mat-size chord-mat-root)))

;; Bass velocity material
(setf bass-mat-velocity '((0.45)(0.5)(0.55)(0.6)(0.65)))

;; Bass length material
(setf bass-mat-length '((h h)(q -q q -q)(-q q -q q)))


;; The lists have different lengths 
(setf master-mat-length (max (length melo-mat-pitch)
                             (length melo-mat-velocity)
                             (length melo-voice-variant-variant)
                             (length melo-mat-length)
                             (length chord-mat-symbol)
                             (length chord-mat-velocity)
                             (length chord-mat-length)
                             (length bass-mat-pitch)
                             (length bass-mat-velocity)
                             (length bass-mat-length)
                             ))

;; Trim them to have the same
(setf 
 melo-mat-pitch (gen-trim master-mat-length melo-mat-pitch)
 melo-voice-variant-variant (gen-trim master-mat-length melo-voice-variant-variant)
 melo-voice-variant-tuplet (gen-trim master-mat-length melo-voice-variant-tuplet)
 melo-mat-velocity (gen-trim master-mat-length melo-mat-velocity)
 melo-mat-length (gen-trim master-mat-length melo-mat-length)
 chord-mat-symbol (gen-trim master-mat-length chord-mat-symbol)
 chord-mat-velocity (gen-trim master-mat-length chord-mat-velocity)
 chord-mat-length (gen-trim master-mat-length chord-mat-length)
 bass-mat-pitch (gen-trim master-mat-length bass-mat-pitch)
 bass-mat-velocity (gen-trim master-mat-length bass-mat-velocity)
 bass-mat-length (gen-trim master-mat-length bass-mat-length)
)


;; Pick material with one master index
(setf nbars 16
      master-index (rnd-sample nbars (gen-integer 0 (- master-mat-length 1)))
      melo-mat-pitch-picked (mapcar (lambda (x) (nth x melo-mat-pitch)) master-index)
      melo-voice-variant-variant (mapcar (lambda (x) (nth x melo-voice-variant-variant)) master-index)
      melo-voice-variant-tuplet (mapcar (lambda (x) (nth x melo-voice-variant-tuplet)) master-index)
      melo-mat-velocity (mapcar (lambda (x) (nth x melo-mat-velocity)) master-index)
      melo-mat-length (mapcar (lambda (x) (nth x melo-mat-length)) master-index)
      chord-mat-symbol-picked (mapcar (lambda (x) (nth x chord-mat-symbol)) master-index)
      chord-mat-velocity (mapcar (lambda (x) (nth x chord-mat-velocity)) master-index)
      chord-mat-length (mapcar (lambda (x) (nth x chord-mat-length)) master-index)
      bass-mat-pitch-picked (mapcar (lambda (x) (nth x bass-mat-pitch)) master-index)
      bass-mat-velocity (mapcar (lambda (x) (nth x bass-mat-velocity)) master-index)
      bass-mat-length (mapcar (lambda (x) (nth x bass-mat-length)) master-index)
)



;;; Create omn ------------
;;; 
;;; 

;; Assemble ---
(setf melody-omn (make-omn :pitch melo-mat-pitch-picked
                           :length melo-mat-length
                           :velocity melo-mat-velocity
                           :swallow nil)
      chords-omn (make-omn :pitch chord-mat-symbol-picked
                       :length chord-mat-length
                       :velocity chord-mat-velocity
                       :swallow nil)
      bass-omn (make-omn :pitch bass-mat-pitch-picked
                     :length bass-mat-length
                     :velocity bass-mat-velocity
                     :swallow nil))

;; Final voices ---
(setf 
 melody (filter-tie (velocity-to-dynamic (flatten-sublist (loop for me in melody-omn
                               for va in melo-voice-variant-variant
                               for tr in melo-voice-variant-tuplet
      collect (voice-variant (list me) :variant va :tuplet tr)))))
 ;;melody (velocity-to-dynamic melody-omn)
 chords (velocity-to-dynamic (drop-voicing chords-omn :type '(1 2) :leading 'l))
 bass (velocity-to-dynamic bass-omn))

;; Ambitus control
(length melody)
(setf melody (ambitus '(c4 c5) melody :section '(0 1 2 3)))
(setf melody (ambitus '(g4 g5) melody :section '(4 5 6 7)))
(setf melody (ambitus '(c5 c6) melody :section '(8 9 10 11)))
(setf melody (ambitus '(g5 g6) melody :section '(12)))
(setf melody (ambitus '(c4 c5) melody :section '(13 14)))
(setf melody (ambitus '(c4 c5) melody :section '(15 16)))

;; Preview ---

(ps 'gm
    :tempo 60
    :p (list (omn-to-time-signature melody '(4 4)) 
             chords)
    :bass (list bass))

;; Record MIDI
(compile-score *last-score*
               :output :midi
               :file (workspace-file "v.mid")
               :if-exists :new-index)

seed</code></pre><p></p><p>Seed for this example was: 24113.</p><p></p><p><audio data-controller="core.global.core.embeddedaudio" src="https://opusmodus.com/forums/applications/core/interface/file/attachment.php?id=4252&amp;key=243041c3cbc46b79a6e3df6aec9675d6" type="audio/mpeg" controls="" preload="metadata"><a class="ipsAttachLink" href="https://opusmodus.com/forums/applications/core/interface/file/attachment.php?id=4252&amp;key=243041c3cbc46b79a6e3df6aec9675d6" data-fileid="4252" data-fileext="mp3" rel="">LCC4.mp3</a></audio></p>]]></description><guid isPermaLink="false">4001</guid><pubDate>Sun, 23 Nov 2025 15:43:21 +0000</pubDate></item><item><title>Short Orchestral Test</title><link>https://opusmodus.com/forums/topic/3990-short-orchestral-test/</link><description><![CDATA[<p>Hi folks,</p><p>Opusmodus is really amazing for music production. Here’s a short orchestral test I’ve made today, the rendering is Sibelius and NotePerformer.</p><p></p><p></p>
<audio controls src="https://opusmodus.com/forums/uploads/monthly_2025_11/NewOrchestralAlgoTest1NP.mp3.a651c75542d37630bb8d88102504c913.mp3" type="audio/mpeg" data-fileid="4227" preload="metadata">
    <a class="ipsAttachLink" href="//opusmodus.com/forums/applications/core/interface/file/attachment.php?id=4227&amp;key=9b0bbb44bc5ed2b0174e5c949d712f7a">NewOrchestralAlgoTest1NP.mp3</a>
</audio>]]></description><guid isPermaLink="false">3990</guid><pubDate>Tue, 11 Nov 2025 16:55:02 +0000</pubDate></item><item><title>Score 240 SATB</title><link>https://opusmodus.com/forums/topic/3982-score-240-satb/</link><description><![CDATA[<p>Dear Opmo friends,</p><p></p><p>I’m sharing a short SATB piece together with its score code and MP3 file.</p><p>Hope you’ll find it inspiring and enjoyable!</p><p></p><p>Best,</p><p>Stéphane</p><p></p>
<audio controls src="https://opusmodus.com/forums/uploads/monthly_2025_10/Score240-SATB.mp3.f20236d95a1a5a0e689d55c89b11d859.mp3" type="audio/mpeg" data-fileid="4210" preload="metadata">
    <a class="ipsAttachLink" href="//opusmodus.com/forums/applications/core/interface/file/attachment.php?id=4210&amp;key=99bb7277562d6d71d9e66acfc26e5142">Score240-SATB.mp3</a>
</audio><p>
<a class="ipsAttachLink" href="https://opusmodus.com/forums/applications/core/interface/file/attachment.php?id=4209&amp;key=e4836387bd77f8c4de8b0d19553a6bd4" data-fileExt='opmo' data-fileid='4209' data-filekey='e4836387bd77f8c4de8b0d19553a6bd4'>Score240_SATB.opmo</a> 
<a class="ipsAttachLink" href="https://opusmodus.com/forums/applications/core/interface/file/attachment.php?id=4211&amp;key=b7783b1405e300157004559853f1453b" data-fileExt='pdf' data-fileid='4211' data-filekey='b7783b1405e300157004559853f1453b'>Score240_raw_OMPrintScore.pdf</a></p>]]></description><guid isPermaLink="false">3982</guid><pubDate>Sat, 25 Oct 2025 13:24:41 +0000</pubDate></item><item><title>Some experiments for large ensemble</title><link>https://opusmodus.com/forums/topic/3987-some-experiments-for-large-ensemble/</link><description><![CDATA[<p>Hi folks,</p><p>Here’s a work in progress for ensemble.</p><p>Best</p><p>S.</p><p></p>
<audio controls src="https://opusmodus.com/forums/uploads/monthly_2025_11/Score214_V1_06-6603-3511.mp3.9b4c46f16e25d3cf7c28f60ac506efa9.mp3" type="audio/mpeg" data-fileid="4225" preload="metadata">
    <a class="ipsAttachLink" href="//opusmodus.com/forums/applications/core/interface/file/attachment.php?id=4225&amp;key=76da8c5db4a188c4c4484d9c68659c80">Score214_V1_06-6603-3511.mp3</a>
</audio>]]></description><guid isPermaLink="false">3987</guid><pubDate>Tue, 04 Nov 2025 08:47:55 +0000</pubDate></item><item><title>Micro Studie for String Quartet</title><link>https://opusmodus.com/forums/topic/3973-micro-studie-for-string-quartet/</link><description><![CDATA[<p>Hi folks,</p><p></p><p>I’d like to share a brief experimental study for a String Quartet based on an FM spectrum.</p><p></p><p>It is basically a test of VSL Solo Strings Studio’s microtonal capabilities with no real attempt to be musically developed or interesting.</p><p>However, it also serves as a test for my workflow with Lilypond.</p><p></p><p>Unfortunately, actually, even if I own Synchron Solo strings, I don't use them because the Sul Ponte and Sul Tasto are still not implemented in this new lib, so I continue to use the VSL Solo Strings studio version.</p><p></p><p>But microtonality works very well !</p><p></p><p>Best</p><p></p><p>Stéphane</p><p></p><p><audio data-controller="core.global.core.embeddedaudio" src="https://opusmodus.com/forums/uploads/monthly_2025_10/MicroStud-S237-858649.mp3.067fbc4041885f8cb3f0de4fd8828e5d.mp3" type="audio/mpeg" controls="" preload="metadata"><a class="ipsAttachLink" href="https://opusmodus.com/forums/applications/core/interface/file/attachment.php?id=4204&amp;key=f423d63e0e4b6d4149f90855dd44f17b" data-fileid="4204" data-fileext="mp3" rel="">MicroStud-S237-858649.mp3</a></audio></p><p><a class="ipsAttachLink" data-fileid="4203" data-fileext="pdf" data-extension="pdf" href="https://opusmodus.com/forums/applications/core/interface/file/attachment.php?id=4203&amp;key=f75b94cd62aa9bf968247ad5eb0749e1" rel="">Micro Stud S237-858649.pdf</a></p>]]></description><guid isPermaLink="false">3973</guid><pubDate>Sun, 05 Oct 2025 10:43:02 +0000</pubDate></item><item><title>Csound experiments in Opusmodus</title><link>https://opusmodus.com/forums/topic/3927-csound-experiments-in-opusmodus/</link><description><![CDATA[<p>Hi Folks !</p><p>Sadly, Barry Vercoe, the creator of Csound, passed away one week ago.</p><p>I've played a lot last week with Csound (I love Csound!) trying to build a cool workflow within Opusmodus for algo comp with Csound based on a premade instruments library I’ve started to build. </p><p>This allows me to focus on music when composing in Opusmodus with Csound.</p><p>Here are my first tests.</p><p></p><p></p>
<video controls class="ipsEmbeddedVideo" data-fileid="4143" data-controller="core.global.core.embeddedvideo" preload='metadata'>
	<source src="https://opusmodus.com/forums/uploads/monthly_2025_06/Csound-Def-Csound-score-Experiments.mp4.780bfe74965b7ef4b7909fc77b778450.mp4" type="video/mp4">
	<a class="ipsAttachLink" href="//opusmodus.com/forums/applications/core/interface/file/attachment.php?id=4143&amp;key=ebce7fa5d9c1989cbe04ec93a1ca3ab2">Csound-Def-Csound-score-Experiments.mp4</a>
</video>]]></description><guid isPermaLink="false">3927</guid><pubDate>Tue, 24 Jun 2025 18:22:42 +0000</pubDate></item><item><title>Etude sur Texture 1</title><link>https://opusmodus.com/forums/topic/3924-etude-sur-texture-1/</link><description><![CDATA[<p>A short electronic piece of music made with an Opusmodus-driven VCVRack patch.</p><p>Be cautious of your monitors and ears!</p><p></p><p><audio data-controller="core.global.core.embeddedaudio" src="https://opusmodus.com/forums/applications/core/interface/file/attachment.php?id=4141&amp;key=b9a894dfda9ffd743103d598cdab30a6" type="audio/x-wav" controls="" preload="metadata"><a class="ipsAttachLink" href="https://opusmodus.com/forums/applications/core/interface/file/attachment.php?id=4141&amp;key=b9a894dfda9ffd743103d598cdab30a6" data-fileid="4141" data-fileext="wav" rel="">EtudeSurTexture1.wav</a></audio></p>]]></description><guid isPermaLink="false">3924</guid><pubDate>Mon, 16 Jun 2025 20:33:30 +0000</pubDate></item><item><title>Pr&#xE9;lude aux Etoiles pour Piano</title><link>https://opusmodus.com/forums/topic/3921-pr%C3%A9lude-aux-etoiles-pour-piano/</link><description><![CDATA[<p>Work in Progress...</p><p></p><p></p>
<audio controls src="https://opusmodus.com/forums/uploads/monthly_2025_06/PrludeauxEtoiles.mp3.58da6443324e0af205c9710176c839cd.mp3" type="audio/mpeg" data-fileid="4139" preload="metadata">
    <a class="ipsAttachLink" href="//opusmodus.com/forums/applications/core/interface/file/attachment.php?id=4139&amp;key=72bd653fb030420682997462599d30e2">Prélude aux Etoiles.mp3</a>
</audio>]]></description><guid isPermaLink="false">3921</guid><pubDate>Wed, 04 Jun 2025 19:28:41 +0000</pubDate></item><item><title>An expression of "ambient chamber music" for a trio of flute, 'cello and harp.</title><link>https://opusmodus.com/forums/topic/3914-an-expression-of-ambient-chamber-music-for-a-trio-of-flute-cello-and-harp/</link><description><![CDATA[<p>This minimalist work, inspired by Satie and Feldman, was composed using Opusmodus using techniques borrowed from Lutoslawski and Yuasa.  <br><br><a rel="external nofollow" href="https://robert-scott-thompson.bandcamp.com/album/bells-do-not-ring-but-the-air-listens-anyway">https://robert-scott-thompson.bandcamp.com/album/bells-do-not-ring-but-the-air-listens-anyway</a></p><p></p><p>The score and parts are available from American Composers Edition, New York. <br></p><figure data-og-url="https://composers.com/products/bells-do-not-ring-but-the-air-listens-anyway" data-og-description="Composer's Note: Bells Do Not Ring but the Air Listens Anyway is a meditative, atmospheric work for flute, cello, and harp trio that draws its primary inspiration from two seemingly disparate yet s..." data-og-image="http://composers.com/cdn/shop/files/PagesfromThompsonRST_BellsDoNotRing-Score_Page_1.jpg?v=1746763799" data-og-title="Bells Do Not Ring but the Air Listens Anyway" data-og-site_name="American Composers Alliance" data-og-favicon_url="//composers.com/cdn/shop/files/ACA_2025_favicon-01_42590474-674e-4f04-b344-0a0622b4b27f.jpg?crop=center&amp;height=32&amp;v=1737400778&amp;width=32" data-og-image_width="1700" data-og-image_height="2200" data-og-user_text="https://composers.com/products/bells-do-not-ring-but-the-air-listens-anyway?variant=46529470464220" class="ipsEmbedded_og ipsEmbedded"><div class="ipsEmbedded_og__site-name"><img class="ipsEmbedded_og__favicon" src="https://composers.com/cdn/shop/files/ACA_2025_favicon-01_42590474-674e-4f04-b344-0a0622b4b27f.jpg?crop=center&amp;height=32&amp;v=1737400778&amp;width=32" alt=""><h5>American Composers Alliance</h5></div><img class="ipsEmbedded_og__image" src="http://composers.com/cdn/shop/files/PagesfromThompsonRST_BellsDoNotRing-Score_Page_1.jpg?v=1746763799" alt="No image preview" width="1700" height="2200" loading="lazy"><figcaption><h3 class="ipsEmbedded_og__title">Bells Do Not Ring but the Air Listens Anyway</h3><div class="ipsEmbedded_og__description">Composer's Note: Bells Do Not Ring but the Air Listens Anyway is a meditative, atmospheric work for flute, cello, and harp trio that draws its primary inspiration from two seemingly disparate yet s...</div></figcaption></figure><p><br><br></p><p>By the way, this project was also inspired through my studies of Stéphane Boussuge's various materials at his Composer Workshop.  I highly recommend them.</p>]]></description><guid isPermaLink="false">3914</guid><pubDate>Tue, 20 May 2025 16:11:52 +0000</pubDate></item><item><title>gen-acc/rit</title><link>https://opusmodus.com/forums/topic/3900-gen-accrit/</link><description><![CDATA[<p>One more small (improved) function: a starting rhythm (pattern) gradually changes its values towards a constant pulse/value (endvalue).</p><p></p><p>Other possible applications: An initial pitch sequence evolves into a steady, constant pitch. A start pattern for velocity gradually shifts towards a fixed velocity.</p><p></p><pre spellcheck="" class="ipsCode language-plaintext" data-language="Plain Text"><code>(defun gen-acc/rit (alist endvalue) ;; startpattern + endvalue
  (loop while (not (equal alist (gen-repeat (length alist) endvalue))) 
          collect (setf alist (loop for i in alist
                                    when (/= i endvalue)
                                      collect (if (&gt; i endvalue)
                                                     (- i 1)
                                                  (+ i 1))
                                 else collect i))))


(list-plot (flatten (gen-acc/rit '(1 7 4 2 11 9 5 3) 3)) :join-points t :style :fill)

=&gt; ((2 6 3 3 10 8 4 3) (3 5 3 3 9 7 3 3) (3 4 3 3 8 6 3 3) (3 3 3 3 7 5 3 3) (3 3 3 3 6 4 3 3) (3 3 3 3 5 3 3 3) (3 3 3 3 4 3 3 3) (3 3 3 3 3 3 3 3))


(list-plot (flatten (gen-acc/rit '(1 7 4 2 11 9 5 3) 15)) :join-points t :style :fill)

=&gt; ((2 8 5 3 12 10 6 4) (3 9 6 4 13 11 7 5) (4 10 7 5 14 12 8 6) (5 11 8 6 15 13 9 7) (6 12 9 7 15 14 10 8) (7 13 10 8 15 15 11 9) (8 14 11 9 15 15 12 10) (9 15 12 10 15 15 13 11) (10 15 13 11 15 15 14 12) (11 15 14 12 15 15 15 13) (12 15 15 13 15 15 15 14) (13 15 15 14 15 15 15 15) (14 15 15 15 15 15 15 15) (15 15 15 15 15 15 15 15))


(list-plot (flatten (gen-acc/rit '(1 2 3 1 5 7 11 3 13 ) 6)) :join-points t :style :fill)

=&gt; (((4 6 2 6 2 12 3 4 10) (5 6 3 6 3 11 4 5 9) (6 6 4 6 4 10 5 6 8) (6 6 5 6 5 9 6 6 7) (6 6 6 6 6 8 6 6 6) (6 6 6 6 6 7 6 6 6) (6 6 6 6 6 6 6 6 6))</code></pre><p></p><p><img class="ipsImage ipsRichText__align--block" data-fileid="4115" src="https://opusmodus.com/forums/uploads/monthly_2025_04/plot.png.468367868b293b88d1c76467c2222b17.png" alt="plot.png" width="1888" height="992" loading="lazy"></p>]]></description><guid isPermaLink="false">3900</guid><pubDate>Thu, 24 Apr 2025 21:16:12 +0000</pubDate></item><item><title>Real-Time Pitch Memory: Compositional Feedback System Using MaxMSP and OPUSMODUS</title><link>https://opusmodus.com/forums/topic/3891-real-time-pitch-memory-compositional-feedback-system-using-maxmsp-and-opusmodus/</link><description><![CDATA[<p><strong>Real-Time Pitch Memory: Compositional Feedback System Using MaxMSP and OPUSMODUS</strong></p><p></p><p>This text outlines a specific aspect of a larger project I am developing for live electronics and instruments. Since the work heavily involves live electronic processing in real time, it is based on a MaxMSP patch that I am currently building.</p><p></p><p>An important component of this system involves integrating <strong>OPUSMODUS</strong> for certain compositional processes—specifically, the processing of <strong>pitch material</strong> collected in real time via a <strong>pitch follower</strong> from an improvising musician.</p><p></p><p>In MaxMSP, this means that every few seconds, the most recently played pitches (as MIDI note numbers) are saved into a .txt file. Meanwhile, in OPUSMODUS, I run a routine that checks once per second whether a <strong>new pitch list</strong> has been saved (i.e., a list that differs from the previous one). If a new list is detected, I generate an <strong>OMN sequence</strong> based on this list and export it as a MIDI file.</p><p></p><p>Only ten MIDI files are generated and continuously overwritten in a rotating manner. These MIDI files can then be <strong>precisely triggered</strong> within MaxMSP (e.g., when a specific pitch is detected, a stored MIDI file is played back) and integrated into the live electronic performance.</p><p></p><p>Essentially, the system acts as a <strong>memory/archive</strong> that is generated from the live improvisation of the performer. Through a specific grammar created in OPUSMODUS, this musical material can then be <strong>re-injected into the live setting</strong>, forming a loop between improvisation, analysis, and compositional feedback.</p><p></p><p><strong>Another development step would be to replace the current .txt-based communication with a direct OSC (Open Sound Control) connection, streamlining the entire process.</strong></p><p></p><p></p><p><video class="ipsEmbeddedVideo ipsRichText__align--block" data-controller="core.global.core.embeddedvideo" controls="" preload="metadata"><source src="https://opusmodus.com/forums/uploads/monthly_2025_04/demo-video.mov.c267c5de526c1d9c1e3bcedd9c4dbaa0.mov" type="video/quicktime"><a href="https://opusmodus.com/forums/applications/core/interface/file/attachment.php?id=4108&amp;key=61da4d66179fc10c48f32ebdac87bceb" class="ipsAttachLink" data-fileid="4108" data-fileext="mov" rel="">demo-video.mov</a></source></video></p><p></p><p>could sound like this: electric feedbacker guitar (live and improvised) + this system (in a test setup)</p><p></p><p><audio data-controller="core.global.core.embeddedaudio" src="https://opusmodus.com/forums/applications/core/interface/file/attachment.php?id=4110&amp;key=388782bc674cedfe85a82e69dd667919" type="audio/x-m4a" controls="" preload="metadata"><a class="ipsAttachLink" href="https://opusmodus.com/forums/applications/core/interface/file/attachment.php?id=4110&amp;key=388782bc674cedfe85a82e69dd667919" data-fileid="4110" data-fileext="m4a" rel="">demo_sound.m4a</a></audio></p><p></p>]]></description><guid isPermaLink="false">3891</guid><pubDate>Sat, 12 Apr 2025 06:44:49 +0000</pubDate></item></channel></rss>
