<?xml version="1.0"?>
<rss version="2.0"><channel><title><![CDATA[Suggestions & Ideas Latest Topics]]></title><link>https://opusmodus.com/forums/forum/14-suggestions-ideas/</link><description><![CDATA[Suggestions & Ideas Latest Topics]]></description><language>en</language><item><title>Enhancement request for MusicXML export: adding explicit sound tags for playback compatibility</title><link>https://opusmodus.com/forums/topic/4108-enhancement-request-for-musicxml-export-adding-explicit-sound-tags-for-playback-compatibility/</link><description><![CDATA[<p>Hello,<br><br>I would like to request an enhancement regarding the MusicXML export engine to improve playback compatibility with MuseScore 4 and other notation software. Currently, when exporting scores from Opusmodus that include articulations like pizzicato and arco, the visual text appears correctly but the playback does not switch automatically in MuseScore.</p><p>After extensive testing and discussion with the MuseScore community, it has been identified that MuseScore’s import engine requires an explicit sound tag, such as sound pizzicato="yes", within the MusicXML code to trigger a playback change. While other software like Sibelius or StaffPad can "infer" the sound from the words tag, MuseScore follows a literal interpretation and ignores the instruction if the explicit sound tag is missing.</p><p>This creates a significant bottleneck in the workflow, especially for those of us using Opusmodus for automated score generation, as every articulation must be manually re-mapped after each import.</p><p>I am asking if it would be possible to update the Opusmodus export engine to include these explicit sound tags alongside the textual directions. This would ensure seamless interoperability and a much smoother transition from algorithmic composition to final notation and playback across all platforms.<br><br>Thank you.</p>]]></description><guid isPermaLink="false">4108</guid><pubDate>Tue, 05 May 2026 08:16:17 +0000</pubDate></item><item><title>CSound DSL Framework inside Opusmodus</title><link>https://opusmodus.com/forums/topic/4087-csound-dsl-framework-inside-opusmodus/</link><description><![CDATA[<p>For those interested in sound synthesis, I’ve developed a CSound framework within Opusmodus. I’ll share it with the community soon, complete with pre-defined instruments. Instruments are defined directly within Opusmodus, and Csound events are generated and played back within Opusmodus as well. Additionally, it automatically generates .csd files, which can be used in real-time or deferred time. Here’s a short video demo of the system (it’s still in progress, and I’m designing more instruments for the Library.)</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_04/Csound-Opmo-Framework-Preview.mp4.80a2179091ad234617a92008878451fd.mp4#t=0" type="video/mp4"><a href="https://opusmodus.com/forums/applications/core/interface/file/attachment.php?id=4388&amp;key=05515f66ea8cb4d83526697542323f67" class="ipsAttachLink" data-fileid="4388" data-fileext="mp4" rel="">Csound-Opmo-Framework-Preview.mp4</a></source></video></p>]]></description><guid isPermaLink="false">4087</guid><pubDate>Wed, 01 Apr 2026 11:00:13 +0000</pubDate></item><item><title>Function tonality-map: allow use of :time and :exclude together</title><link>https://opusmodus.com/forums/topic/4029-function-tonality-map-allow-use-of-time-and-exclude-together/</link><description><![CDATA[<p>Currently it seems that for OM's built-in function <code>tonality-map</code> the joint use of parameters <code>:time</code> and <code>:exclude</code> is disallowed.</p><p></p><p>Here's a use-case example where this is a problem, a melody line which should not be handled in last bar to not make use of tonality but rather stay untouched.</p><p></p><p>So in the code line <code>(tonality-map scale-tonality &lt;&gt; :time '(w) :exclude '(7))</code></p><p>I would like to define <code>:time</code> and <code>:exclude</code> together, but OM throughs the error <code>Error: :exclude and :time can't be used together</code>.</p><p></p><pre spellcheck="" class="ipsCode language-ini" data-language="ini"><code>
(asdf:load-system :arrows)


;; Function to extract pitches of chord, n is 1 indexed
;; Maybe obsolete, by using pitch-demix, to be explored.
(defun filter-chord-pitch (x n)
  "Filter pitches of a list of chords, removing root and fifths"
  ;
  ; Helper function for one chord
  (defun filter-one-chord-pitch (x n)
    (setf chord-melodized (pitch-melodize x))
    (chordize (mapcar (lambda (i) (nth (- i 1) chord-melodized)) n))
  )
  ; Apply for a list of chords 
  (loop for chord in x
          collect (filter-one-chord-pitch chord n))
)



;; Define Chord-Track
(setf chord-track 
      (arrows:-&lt;&gt;
       '(w (a3 m7) 
         w (d3 m7) 
         w (g3 7)
         w (c3 maj7)
         w (eb m7)
         w (ab3 7)
         w (db3 7)
         w (fs3 maj7)
         )
       ))
(setf total-span 8)

;; Derive harmonic environment from chordtrack
; derive scale for chord
(setf parent-scale 
      (arrows:-&lt;&gt;
       (find-parent-scale-for-chord (omn :pitch chord-track) 
                                    :scales '(lydian))
       (flatten-sublist)
       ))
(setf scale (mapcar 'second parent-scale))
(setf root (mapcar 'first (expand-tonality parent-scale)))
(setf scale-tonality (tonality-series scale :root root :map 'octave ))

; for bass
(setf base-pitches (filter-chord-pitch (mclist (omn :pitch chord-track)) '(1 3)))
(setf chord-track-base (omn-replace :pitch (flatten-sublist base-pitches) chord-track))
(setf bass-path (get-harmonic-path chord-track-base :time 'w))

; for melody
(setf character-pitches (filter-chord-pitch (mclist (omn :pitch chord-track)) '(2 3 4)))
(setf chord-track-character (omn-replace :pitch (flatten-sublist character-pitches) chord-track))
(setf harm-path (get-harmonic-path chord-track-character :time 'w))
; optional overwrite last bar
(setf harm-path (append (subseq harm-path 0 7) (last bass-path)))
      
;; Piano Comping
(setf non-bass-pitches (filter-chord-pitch (mclist (omn :pitch chord-track)) '(2 3 4 5)))
(setf chord-track-non-bass (omn-replace :pitch (flatten-sublist non-bass-pitches) chord-track))

(setf chord-omn
      (arrows:-&lt;&gt;
      chord-track-non-bass
       (omn-to-time-signature &lt;&gt; '(4 4))
       (drop-voicing &lt;&gt; :type '(2) :leading 't)
       ))


;; Rhodes Melody
(setf slonimnsky 
      (arrows:-&lt;&gt;
       (library 'slonimsky 'tritone nil :random 12)
       (transpose 0)
       (length-span total-span &lt;&gt;)
       ))

(setf melody-omn
      (arrows:-&lt;&gt;
       slonimnsky
       (omn-to-time-signature &lt;&gt; '(4 4))
       (omn-replace :length (rnd-sample total-span '((h h)(-q h q))) &lt;&gt;)
       (length-span total-span &lt;&gt;)
       (closest-path &lt;&gt; :ambitus '(c4 c5))
       (omn-to-time-signature &lt;&gt; '(4 4))
       (harmonic-path harm-path &lt;&gt; 
                      :time 'w :octave 'seq :type '(a d))
       (filter-tie)
       (passing-intervals '((3 (1 1 1)(1 2))
                            (-3 (1 1 1)(1 2))
                            (4 (2 2)(3 1))
                            (-4 (-2 -2)(-3 -1))
                            (5 (2 3)(3 2))
                            (-5 (-2 -3)(-3 -2))
                            ) &lt;&gt; :exclude '(7))
       (omn-to-time-signature &lt;&gt; '(4 4))
       (tonality-map scale-tonality &lt;&gt; :time '(w) :exclude '(7))
       (filter-tie)
       (omn-replace :velocity (rnd-sample total-span '((p) (mp) (mf) (f))) &lt;&gt;)
       (velocity-to-dynamic)
       (ambitus '(c4 c5) &lt;&gt;)
       ))


;; Bass
(setf bass-omn
      (arrows:-&lt;&gt;
       (make-omn :pitch '(c2 g2 c3 e2 c2)
                 :length (pcs-rhythm '3-11 :points 9 :legato t)
                 :velocity '((f mf mp p mf) ))
       (length-span 1 &lt;&gt;)
       (omn-to-time-signature &lt;&gt; '(4 4))
       (length-span total-span &lt;&gt;)
       (harmonic-path bass-path &lt;&gt; :time 'w :octave 'seq)
       (omn-to-time-signature &lt;&gt; '(4 4))
       ))


;; Output
(def-score test
    (:title "Harmonic Path"
     :key-signature 'chromatic
     :time-signature '(4 4)
     :tempo 98)
  (Piano
   :omn (list melody-omn)
   ;:port "Bus 1" 
   :sound 'gm :program 'acoustic-grand-piano 
   )
  (Pad
   :omn (list chord-omn)
   ;:port "Bus 2"
   :sound 'gm :program 'acoustic-grand-piano
   )
  (Bass
   :omn (list bass-omn)
   ;:port "Bus 3"
   :sound 'gm :program 'acoustic-grand-piano
   )
)

(audition-musicxml-last-score)
</code></pre><p></p><p>If the harmonic rhythm follows the time-signature, this is IMHO not a big problem.</p><p>So this code in line <code>(tonality-map scale-tonality &lt;&gt; :exclude '(7))</code> works.</p><p></p><p><strong>Still I think it would be great to have both parameters </strong><code>:time</code> and <code>:exclude</code> <strong>in own control. </strong>(I assume parameter <code>:section</code> is affected as well).</p><p>I assume the current mutual exclusivity setting is due to the fact that both may contradict each other, but as you can see from example I use only one <code>'(w)</code> in <code>:time</code> and by defaut trust in recycling. I think in this way there is no conflict to request for an explicite <code>:exclude</code> which I would consider as an override..</p><p></p><p><a href="https://opusmodus.com/forums/profile/1-opmo/" class="ipsMention" data-mentionid="1" data-ipshover="" data-ipshover-target="https://opusmodus.com/forums/profile/1-opmo/?do=hovercard" rel="">@opmo</a> <strong>Is this possible ?</strong></p><p></p><p><audio data-controller="core.global.core.embeddedaudio" src="https://opusmodus.com/forums/applications/core/interface/file/attachment.php?id=4290&amp;key=6e5cdc760b3d90a45fda6e2fcbbd3a6f" type="audio/mpeg" controls="" preload="metadata"><a class="ipsAttachLink" href="https://opusmodus.com/forums/applications/core/interface/file/attachment.php?id=4290&amp;key=6e5cdc760b3d90a45fda6e2fcbbd3a6f" data-fileid="4290" data-fileext="mp3" rel="">2026-01_01.mp3</a></audio></p><p></p><pre spellcheck="" class="ipsCode language-ini" data-language="ini"><code>
(asdf:load-system :arrows)


;; Function to extract pitches of chord, n is 1 indexed
(defun filter-chord-pitch (x n)
  "Filter pitches of a list of chords, removing root and fifths"
  ;
  ; Helper function for one chord
  (defun filter-one-chord-pitch (x n)
    (setf chord-melodized (pitch-melodize x))
    (chordize (mapcar (lambda (i) (nth (- i 1) chord-melodized)) n))
  )
  ; Apply for a list of chords 
  (loop for chord in x
          collect (filter-one-chord-pitch chord n))
)



;; Define Chord-Track
(setf chord-track 
      (arrows:-&lt;&gt;
       '(w (a3 m7) 
         w (d3 m7) 
         w (g3 7)
         w (c3 maj7)
         w (eb m7)
         w (ab3 7)
         w (db3 7)
         w (fs3 maj7)
         )
       ))
(setf total-span 8)

;; Derive harmonic environment from chordtrack
; derive scale for chord
(setf parent-scale 
      (arrows:-&lt;&gt;
       (find-parent-scale-for-chord (omn :pitch chord-track) 
                                    :scales '(lydian))
       (flatten-sublist)
       ))
(setf scale (mapcar 'second parent-scale))
(setf root (mapcar 'first (expand-tonality parent-scale)))
(setf scale-tonality (tonality-series scale :root root :map 'octave ))

; for bass
(setf base-pitches (filter-chord-pitch (mclist (omn :pitch chord-track)) '(1 3)))
(setf chord-track-base (omn-replace :pitch (flatten-sublist base-pitches) chord-track))
(setf bass-path (get-harmonic-path chord-track-base :time 'w))

; for melody
(setf character-pitches (filter-chord-pitch (mclist (omn :pitch chord-track)) '(2 3 4)))
(setf chord-track-character (omn-replace :pitch (flatten-sublist character-pitches) chord-track))
(setf harm-path (get-harmonic-path chord-track-character :time 'w))
; optional overwrite last bar
(setf harm-path (append (subseq harm-path 0 7) (last bass-path)))
      
;; Piano Comping
(setf non-bass-pitches (filter-chord-pitch (mclist (omn :pitch chord-track)) '(2 3 4 5)))
(setf chord-track-non-bass (omn-replace :pitch (flatten-sublist non-bass-pitches) chord-track))

(setf chord-omn
      (arrows:-&lt;&gt;
      chord-track-non-bass
       (omn-to-time-signature &lt;&gt; '(4 4))
       (drop-voicing &lt;&gt; :type '(2) :leading 't)
       ))


;; Rhodes Melody
(setf slonimnsky 
      (arrows:-&lt;&gt;
       (library 'slonimsky 'tritone nil :random 12)
       (transpose 0)
       (length-span total-span &lt;&gt;)
       ))

(setf melody-omn
      (arrows:-&lt;&gt;
       slonimnsky
       (omn-to-time-signature &lt;&gt; '(4 4))
       (omn-replace :length (rnd-sample total-span '((h h)(-q h q))) &lt;&gt;)
       (length-span total-span &lt;&gt;)
       (closest-path &lt;&gt; :ambitus '(c4 c5))
       (omn-to-time-signature &lt;&gt; '(4 4))
       (harmonic-path harm-path &lt;&gt; 
                      :time 'w :octave 'seq :type '(a d))
       (filter-tie)
       (passing-intervals '((3 (1 1 1)(1 2))
                            (-3 (1 1 1)(1 2))
                            (4 (2 2)(3 1))
                            (-4 (-2 -2)(-3 -1))
                            (5 (2 3)(3 2))
                            (-5 (-2 -3)(-3 -2))
                            ) &lt;&gt; :exclude '(7))
       (omn-to-time-signature &lt;&gt; '(4 4))
       (tonality-map scale-tonality &lt;&gt; :exclude '(7))
       (filter-tie)
       (omn-replace :velocity (rnd-sample total-span '((p) (mp) (mf) (f))) &lt;&gt;)
       (velocity-to-dynamic)
       (ambitus '(c4 c5) &lt;&gt;)
       ))


;; Bass
(setf bass-omn
      (arrows:-&lt;&gt;
       (make-omn :pitch '(c2 g2 c3 e2 c2)
                 :length (pcs-rhythm '3-11 :points 9 :legato t)
                 :velocity '((f mf mp p mf) ))
       (length-span 1 &lt;&gt;)
       (omn-to-time-signature &lt;&gt; '(4 4))
       (length-span total-span &lt;&gt;)
       (harmonic-path bass-path &lt;&gt; :time 'w :octave 'seq)
       (omn-to-time-signature &lt;&gt; '(4 4))
       ))


;; Output
(def-score test
    (:title "Harmonic Path"
     :key-signature 'chromatic
     :time-signature '(4 4)
     :tempo 98)
  (Piano
   :omn (list melody-omn)
   ;:port "Bus 1" 
   :sound 'gm :program 'acoustic-grand-piano 
   )
  (Pad
   :omn (list chord-omn)
   ;:port "Bus 2"
   :sound 'gm :program 'acoustic-grand-piano
   )
  (Bass
   :omn (list bass-omn)
   ;:port "Bus 3"
   :sound 'gm :program 'acoustic-grand-piano
   )
)

(audition-musicxml-last-score)
</code></pre><p></p><p></p><p></p>]]></description><guid isPermaLink="false">4029</guid><pubDate>Sat, 03 Jan 2026 06:59:03 +0000</pubDate></item><item><title>Slash Chord Support in Chord Symbol Notation</title><link>https://opusmodus.com/forums/topic/4027-slash-chord-support-in-chord-symbol-notation/</link><description><![CDATA[<p>I propose to extend the chord symbol notation to enable slash chords (also beyond normal inversions).</p><p></p><p>This may further facilitate the (already phantastic options for) composition with OM in harmonic rich styles like Jazz.</p><p>My notation proposal see in option 3.</p><p></p><p>Musical example (hmmm OK, maybe a bit too simple as the bass is in the the chord, but still hopefully useful to illustrate the use-case):</p><p></p><p><img class="ipsImage ipsRichText__align--block" data-fileid="4288" src="https://opusmodus.com/forums/uploads/monthly_2025_12/Bildschirmfoto2025-12-31um22_32_56.png.2568175d57783765c566098591bf2264.png" alt="Bildschirmfoto 2025-12-31 um 22.32.56.png" title="Bildschirmfoto 2025-12-31 um 22.32.56.png" width="800" height="386" loading="lazy"></p><p></p><p><audio data-controller="core.global.core.embeddedaudio" src="https://opusmodus.com/forums/applications/core/interface/file/attachment.php?id=4287&amp;key=36849233f0152ce2a0a4ad35d21d337c" type="audio/mpeg" controls="" preload="metadata"><a class="ipsAttachLink" href="https://opusmodus.com/forums/applications/core/interface/file/attachment.php?id=4287&amp;key=36849233f0152ce2a0a4ad35d21d337c" data-fileid="4287" data-fileext="mp3" rel="">STH.mp3</a></audio></p><p></p><pre spellcheck="" class="ipsCode language-plaintext" data-language="Plain Text"><code>
;; Proposal for slash chord symbol notation support in OM
;;
;; Slash chords: https://en.wikipedia.org/wiki/Slash_chord
;;  - so these include inversions (as implemented already in OM)
;;  - BUT also other bass pitches not being present in original chord
;;  - Latter require special handling and are not supported in OM yet 
;;    (in chord symbols, as far as I know).
;;
;; Musical example: Stairway to Heaven (Led Zeppelin, Jimmy Page)
;; Chords:
;; Am, E/G#, C/G, D/F#, Fmaj7
;;


;; Option 1 -------------------
;
; This traditional way works somewhat, but it is a bit unnatural
; Cons: 
;      - rh and lh are separated and therefore harder to reason about and compose
;      - slash chords are not shown fully with bass as symbols in score

(setf stairway-rh '(w (a4 m)
                      (e4 maj)
                      (c4 maj)
                      (d4 maj)
                      (f4 maj7)))
(setf stairway-lh '(w a2 gs2 g2 fs2 f2))
(ps 'gm
    :title "Stairway to Heaven (Led Zeppelin, Jimmy Page) - Excerpt"
    :p (list stairway-rh stairway-lh)
    :tempo 98
    :time-signature '(4 4))



;; Option 2 -------------------
;
; This works a bit better
; Pros:
;      - rh and lh are less separated and therefore easier to reason about and compose
; Cons: 
;      - slash chords are not shown at all as symbols in score
;      - too much biolerplate in code

(setf stairway
      (append
       (chordize (append '(a2) (expand-chord '((a4 m)))))
       (chordize (append '(gs2) (expand-chord '((e4 maj)))))
       (chordize (append '(g2) (expand-chord '((c4 maj)))))
       (chordize (append '(fs2) (expand-chord '((d4 maj)))))
       (chordize (append '(f2) (expand-chord '((f4 maj7)))))
       ))
(ps 'gm
    :pg (list (make-omn :pitch stairway :length '(w) :span :pitch))
    :tempo 98
    :time-signature '(4 4))



;; Option 3 -------------------
;
; This IMHO would be ideal, but yet is not implemented in OM
; Just a proposal for notation, maybe there a better ways.
; Musicians please contribute!
; I believe the already supported symbols are great and
; I am not sure if my proposal is compatible.
;
; Pros:
;      - rh and lh are less separated and therefore easier to reason about and compose
;      - slash chords are shown as symbols in score
;      - less biolerplate in code

(setf stairway
      '(w (a4 m/a2)
          (e4 maj/gs2)
          (c4 maj/g2)
          (d4 maj/fs2)
          (f4 maj7/f2)))
=&gt; (w (a4 m/a2) (e4 maj/gs2) (c4 maj/g2) (d4 maj/fs2) (f4 maj7/f2))

(ps 'gm
    :pg (list stairway)
    :tempo 98
    :time-signature '(4 4))
=&gt; Error: OMN Parse Error: fail</code></pre>]]></description><guid isPermaLink="false">4027</guid><pubDate>Wed, 31 Dec 2025 21:36:42 +0000</pubDate></item><item><title>rnd-sample smoothing, filter-repeat etc</title><link>https://opusmodus.com/forums/topic/4007-rnd-sample-smoothing-filter-repeat-etc/</link><description><![CDATA[<p>Hello, had a few questions/suggestions :</p><p></p><ul><li><p>In rnd-sample, it would be nice to have a param controlling how smooth the result is, i.e. something like the "alfa" value in vector-smooth ( between 0 and 1 ) that allows you to smooth the result to some degree. For example, if I want a rnd-sample of a list of pitches, I could control how much the resulting pitch seq moves in steps or large jumps.</p><p></p></li><li><p>In filter-repeat, the :position t :span :pitch option works great to prevent repeating X occurrences of pitches, but would it be possible to also have an option to prevent X occurrences of pitch classes?</p></li></ul><p></p><p>For example, the below chooses pitches from 3 octaves of a major scale and prevents some repetitions of exact pitches. But if it returns something like c3 c4 d3 e3 d4 f5, then a filter on pitch class would only return c3 d3 e3 f5 for example.</p><p></p><p>(filter-repeat 4 (rnd-sample 128 (make-scale 'c3 22 :alt '(2 2 1 2 2 2 1))) :position t :span :pitch)</p><p></p><p>Finally, I'm not seeing documentation in the Assistant for some functions ( e.g. rnd-round, rnd-number, binary-invert and gen-white-noise ) which are referenced in the Composer Workshop courses. I'm on the latest version of OM 4 for Mac. Can this documentation be added?</p>]]></description><guid isPermaLink="false">4007</guid><pubDate>Wed, 03 Dec 2025 00:57:47 +0000</pubDate></item><item><title>smart workflow by snippet-to-editor</title><link>https://opusmodus.com/forums/topic/4008-smart-workflow-by-snippet-to-editor/</link><description><![CDATA[<p>snippet-to-editor -&gt; so nice!</p><p></p><p>II really enjoy the workflow from OPUSMODUS to Sibelius. When you have some little ideas for material, you program a small function, experiment with it, then export/open it in SIBELIUS and continue working. Not generating full scores, but small units of material… exporting by snippet-to-editor.</p><p></p><p>For example: (i could do it directly in SIBELIUS, but much easier via OPMO)</p><pre spellcheck="" class="ipsCode language-plaintext" data-language="Plain Text"><code>
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; binary-counting-rhythm -&gt; counting from x to y // easy export to SIBELIUS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; to ensure the pattern is always the same length, the bit length for all decimal-to-binary conversions is adjusted to match the largest decimal number
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defun dec-to-bin-rhythm (ilist)
  (let ((span (find-max (mapcar 'length (decimal-to-binary ilist)))))
	(loop for i in (binary-rhythm span ilist 1 :type 1)
                 collect (loop for x in i
                               when (&lt; x 0)
                                 append (gen-repeat (abs x) 0)
                               else collect  x))))


(setf bitseq (dec-to-bin-rhythm (gen-integer 23 1))) ;; 5-bit
(snippet-to-editor 
 (omn-to-measure
  (make-omn :pitch '(cs3)
            :length (gen-length bitseq '1/8)
            :velocity '(mf)
            :articulation '(stacc))
  '(4/4)))



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; SIBELIUS opens the file -&gt; copy/paste to the actual score
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</code></pre>]]></description><guid isPermaLink="false">4008</guid><pubDate>Wed, 03 Dec 2025 10:13:40 +0000</pubDate></item><item><title>Github Copilot for OM</title><link>https://opusmodus.com/forums/topic/4003-github-copilot-for-om/</link><description><![CDATA[<p>In my day job as Data-Scientist I use github CoPilot everyday with pleasure with great productive benefit, that means getting things done without loosing control and keeping oneself in creative self-driven flow.</p><p></p><p>By the way, I am developing in programming language R with RStudio IDE.</p><p>Posit the developer company (formerly RStudio) of the IDE did a great job of integrating the service.</p><p>Basically its autocompletion on steroids.</p><p>The main benefit is that the more you comment your code about intention, the better the suggestions.</p><p>As side effect also my future me and other collabs will benefit from better commenting.</p><p></p><p>CoPilot is different to ChatGPT as its all happening during coding not inside a prompt.</p><p>CoPilot is more a pair programmer which keeps you in the flow.</p><p></p><p>I would love to have a similar experience when composing in the music creation continuum of OM.</p><p><a href="https://opusmodus.com/forums/profile/1-opmo/" class="ipsMention" data-mentionid="1" data-ipshover="" data-ipshover-target="https://opusmodus.com/forums/profile/1-opmo/?do=hovercard" rel="">@opmo</a> It would be great to have also github CoPilot integrated in OM.</p>]]></description><guid isPermaLink="false">4003</guid><pubDate>Fri, 28 Nov 2025 20:12:14 +0000</pubDate></item><item><title>Generate pulses based on the prime series</title><link>https://opusmodus.com/forums/topic/3981-generate-pulses-based-on-the-prime-series/</link><description><![CDATA[<p>Hello,</p><p></p><p>Below is a method I use a lot in generating rhythms in my compositions.</p><p>It generates a list of pulses of n units, where the pulses are assigned to prime indexes only. </p><p>I hope you find it useful.</p><p></p><p>All the best,</p><p>Jawher Matmati</p><p>;;; ====================================================</p><p>(defun gen-prime-pulses (nb &amp;key (unit 's))</p><p>  "Return a list of Nb OMN lengths:</p><p>   index i is UNIT if i is prime, otherwise the corresponding rest (-UNIT).</p><p>   Example: (gen-prime-pulses 10 :unit 's)</p><p>            =&gt; (-s -s s s -s s -s s -s -s -s)</p><p>   NB: 0 and 1 are not prime; primes start at 2.</p><p>   UNIT may be an OMN length symbol (s e q h w …) or a rational like 1/16."</p><p>  (labels</p><p>      ((primep (n)</p><p>         (and (&gt; n 1)</p><p>              (loop for d from 2 to (isqrt n)</p><p>                    never (zerop (mod n d)))))</p><p>       (rest-of (u)</p><p>         ;; If UNIT is a symbol like 's -&gt; make symbol '-s.</p><p>         ;; If UNIT is a ratio (e.g. 1/16) -&gt; return negative ratio for rest.</p><p>         (typecase u</p><p>           (symbol (intern (format nil "-~a" u)))  ; =&gt; -S (case-insensitive)</p><p>           (rational (- u))</p><p>           (integer  (- u))</p><p>           (float    (- u)))))</p><p>    (loop for i from 0 to (- nb 1)</p><p>          collect (if (primep i) unit (rest-of unit)))))</p><p>;;; ====================================================</p><p></p><p><img class="ipsImage ipsRichText__align--block ipsRichText__align--width-custom" data-fileid="4208" src="https://opusmodus.com/forums/uploads/monthly_2025_10/image.png.97358bf74e04b313d04922da86604b2e.png" alt="image.png" title="" width="1388" height="818" style="--i-media-width: 737px;" loading="lazy"></p>]]></description><guid isPermaLink="false">3981</guid><pubDate>Sun, 19 Oct 2025 21:57:54 +0000</pubDate></item><item><title>Function gen-string-nat-harm-walk : Generation of walks of natural harmonics for strings</title><link>https://opusmodus.com/forums/topic/3970-function-gen-string-nat-harm-walk-generation-of-walks-of-natural-harmonics-for-strings/</link><description><![CDATA[<p>Hello Opusmodus users,</p><p></p><p>I have made a small function that generates a list of natural harmonics (at sounding pitch) :</p><p></p><ul><li><p>Builds a Markov walk over strings I–IV that <strong>never skips a string</strong> (I &lt;-&gt; II, II &lt;-&gt; I or II &lt;-&gt; III, III &lt;-&gt; IV, III &lt;-&gt; II, IV &lt;-&gt; III)</p></li><li><p>At each step, picks a pitch from the selected instrument’s <strong>natural-harmonics</strong> list for that string.</p></li><li><p>:repeat nil forbids immediate pitch repeats; :repeat t allows them.</p></li></ul><p>• Key words</p><p>:instrument lets you choose the instrument (violin, viola, cello or bass)</p><p>:start, lets you define the starting string for the sequence</p><p>:repeat (t or nil), t allows identical consecutive notes; nil forbids (default t)</p><p>:seed, it of course for controling the reproducibility of the random output</p><p></p><p>Feel free to use it / modify it (for example adding a 5th string for the double bass), etc.</p><p></p><p>All the best,</p><p>Jawher Matmati</p><pre spellcheck="" class="ipsCode language-plaintext" data-language="Plain Text"><code>
;;; ------------------------------------------------------------
;;; Library: Natural harmonics (sounding pitch) for strings
;;; ------------------------------------------------------------
;; Violin
(setf Vln-harm-nat-IV '(g4 d5 g5 b5 d5))
(setf Vln-harm-nat-III (pitch-transpose 7 Vln-harm-nat-IV))
(setf Vln-harm-nat-II (pitch-transpose 7 Vln-harm-nat-III))
(setf Vln-harm-nat-I (pitch-transpose 7 Vln-harm-nat-II))
;; Viola
(setf Vla-harm-nat-IV (pitch-transpose -7 Vln-harm-nat-IV))
(setf Vla-harm-nat-III (pitch-transpose 7 Vla-harm-nat-IV))
(setf Vla-harm-nat-II (pitch-transpose 7 Vla-harm-nat-III))
(setf Vla-harm-nat-I (pitch-transpose 7 Vla-harm-nat-II))
;; Cello
(setf Vlc-harm-nat-IV (pitch-transpose -12 Vla-harm-nat-IV))
(setf Vlc-harm-nat-III (pitch-transpose -12 Vla-harm-nat-III))
(setf Vlc-harm-nat-II (pitch-transpose -12 Vla-harm-nat-II))
(setf Vlc-harm-nat-I (pitch-transpose -12 Vla-harm-nat-I))
;; Bass
(setf Cb-harm-nat-IV '(e2 b2 e3 gs3 b3))
(setf Cb-harm-nat-III (pitch-transpose 5 Cb-harm-nat-IV))
(setf Cb-harm-nat-II (pitch-transpose 5 Cb-harm-nat-III))
(setf Cb-harm-nat-I (pitch-transpose 5 Cb-harm-nat-II))

;;; ------------------------------------------------------------
;;; Adjacent-string Markov transitions (no skipping over strings)
;;; ------------------------------------------------------------
(setf string-adjacent-transitions
'((I (I 1) (II 1))
  (II (I 1) (II 1) (III 1))
  (III (II 1) (III 1) (IV 1))
  (IV (III 1) (IV 1))))

;;; ------------------------------------------------------------
;;; gen-string-nat-harm-walk
;;; ------------------------------------------------------------
;; n number of notes to generate
;; :instrument 'Violin | 'Viola | 'Cello | 'Bass (default 'Violin)
;; :repeat t allows identical consecutive notes; nil forbids (default t)
;; :start 'first | '?' | one of 'I 'II 'III 'IV (default '?)
;; :seed integer for reproducible state walk (passed to GEN-MARKOV-FROM-TRANSITIONS)

(defun gen-string-nat-harm-walk
       (n &amp;key (instrument 'violin) (repeat t) (start '?) seed)
  (labels
      (;; map (instrument, string) -&gt; the corresponding harmonic list
       (string-pool (inst s)
         (case inst
           (violin (case s (I Vln-harm-nat-I) (II Vln-harm-nat-II)
                     (III Vln-harm-nat-III) (IV Vln-harm-nat-IV)))
           (viola (case s (I Vla-harm-nat-I) (II Vla-harm-nat-II)
                    (III Vla-harm-nat-III) (IV Vla-harm-nat-IV)))
           (cello (case s (I Vlc-harm-nat-I) (II Vlc-harm-nat-II)
                    (III Vlc-harm-nat-III) (IV Vlc-harm-nat-IV)))
           (bass (case s (I Cb-harm-nat-I) (II Cb-harm-nat-II)
                   (III Cb-harm-nat-III) (IV Cb-harm-nat-IV)))
           (otherwise (error "Unknown instrument: ~a" inst))))

       ;; is there at least one element in pool different from LAST?
       (has-alternative (pool last)
         (loop for p in pool thereis (not (eql p last))))

       ;; pick one pitch from the relevant pool; honour :repeat NIL
       (pick-pitch (pool last)
         (let ((choice (rnd-pick pool)))
           (if (and (not repeat) last (eql choice last) (has-alternative pool last))

               ;; re-pick until different (keeps pool weighting)
               (loop for c = (rnd-pick pool)
                     until (not (eql c last))
                     finally (return c))
             choice))))

    (let* ((states (gen-markov-from-transitions
                    string-adjacent-transitions
                    :size n :start start :seed seed)))
      (loop
         with last = nil
         for s in states
         for pool = (string-pool instrument s)
         for p = (pick-pitch pool last)
         do (setf last p)
         collect p))))

;;; ------------------------------------------------------------
;;; Examples
;;; ------------------------------------------------------------
;; 24 notes, start anywhere, forbid immediate repeats, for Violin:
(gen-string-nat-harm-walk 24 ; size of the list
                          :instrument 'violin
                          :repeat nil)

;; Start on string II, reproducible state-walk:
(gen-string-nat-harm-walk 24 :instrument 'viola :repeat t :start 'II :seed 123)

;; Cello, start on the first state in the table (I), no repeats:
(gen-string-nat-harm-walk 16 :instrument 'cello :repeat nil :start 'first)
</code></pre>]]></description><guid isPermaLink="false">3970</guid><pubDate>Sun, 14 Sep 2025 19:36:23 +0000</pubDate></item><item><title>Controlling the high/low values in euclidean-rhythm with a ramp or function</title><link>https://opusmodus.com/forums/topic/3967-controlling-the-highlow-values-in-euclidean-rhythm-with-a-ramp-or-function/</link><description><![CDATA[<p>Hello,</p><p></p><p>I am looking for a way to control the <strong>high</strong> and <strong>low</strong> values in <strong>euclidean-rhythm</strong> function so as to <strong>increase</strong> or <strong>decrease</strong> the values (meaning increase or decrease the <strong>density</strong> of the rhythm) with a ramp or function? </p><p></p><p>What would be the best way to achieve this without resorting to assemble-seq? </p><p></p><p>Thank you very much for any suggestions or help and my apologies if this has been asked before,</p><p>JM</p>]]></description><guid isPermaLink="false">3967</guid><pubDate>Mon, 08 Sep 2025 14:25:59 +0000</pubDate></item><item><title>Additional method of specifying key signature</title><link>https://opusmodus.com/forums/topic/3890-additional-method-of-specifying-key-signature/</link><description><![CDATA[<p>Hi,</p><p>I posted this question to the forum a few days ago: <a rel="" href="https://opusmodus.com/forums/topic/3886-incorrect-pitch-notation-for-minor-key-in-def-score/#comment-13346">https://opusmodus.com/forums/topic/3886-incorrect-pitch-notation-for-minor-key-in-def-score/#comment-13346</a>. The main issue was that OM was respelling my accidentals when I rendered my score with def-score and set the key-signature to '(d minor). For example it was rendering cs4 as db4, etc. I partially solved the problem by setting the key-signature to 'chromatic or 'atonal. Now all the accidentals are rendered correctly as per my OMN. What's missing is that my score does not have a b-flat in the key signature.<br><br>My suggestion: Allow the key-signature parameter in def-score to specify a custom key-signature such that the OMN rendered in the is not respelled as per a common key signature. This could also allow composers to render uncommon key signatures like those found in some Bartok scores, like just having a b-flat and a-flat with no e-flat. I imagine it could look something like:<br>:key-signature '(bb ab), or ('bb fs) to combine sharps and flats.</p><p></p><p>OM is by far the most powerful software available for algorithmic composition, but I, maybe others, have gotten pretty quick with writing raw OMN to sketch out music I've written on paper or otherwise. In many cases, it can be a more efficient and ergonomic way of entering music than tools like Sibelius which often require switching between a mouse, keyboard (computer or musical).</p><p></p><p>Thanks for taking the time to read this.</p>]]></description><guid isPermaLink="false">3890</guid><pubDate>Sat, 12 Apr 2025 02:59:41 +0000</pubDate></item><item><title>Import music xml?</title><link>https://opusmodus.com/forums/topic/3883-import-music-xml/</link><description><![CDATA[<p>Is there a plan for a function that would import music xml into omn?  That would make it smoother/easier to pull in scores from notation software.  Currently when I do a midi import to omn, it sometimes has a problem deciphering complex rhythms.  </p>]]></description><guid isPermaLink="false">3883</guid><pubDate>Fri, 28 Mar 2025 15:53:47 +0000</pubDate></item><item><title>Native Plug-In Support?</title><link>https://opusmodus.com/forums/topic/3881-native-plug-in-support/</link><description><![CDATA[<p>I asked this a year or two ago but I think it would be nice to be able to host basic AU and/or VST plugins for sound generation directly in OM.</p><p>An example of this, that I have been using in standalone mode is RapidComposer.</p><p><a rel="external nofollow" href="https://www.musicdevelopments.com/">Rapid Composer</a></p><p>Overall it's a basic version of OM with a more extensive GUI.</p><p>It does however, host VST's making it very convenient to write in one environment without having to route midi and saving multiple documents per Project.</p><p>per the OMN docs: "Wouldn’t it be good to be able to do everything in one place?"</p><p>Yes please.</p>]]></description><guid isPermaLink="false">3881</guid><pubDate>Tue, 25 Mar 2025 03:25:15 +0000</pubDate></item><item><title>Is it possible to add features to the midi player or create a new view component</title><link>https://opusmodus.com/forums/topic/3874-is-it-possible-to-add-features-to-the-midi-player-or-create-a-new-view-component/</link><description><![CDATA[<p>Is it possible to upgrade the midi player or create an additional component to present the piano roll in this way? I would like to have another visual analysis tool.<img class="ipsImage ipsRichText__align--block" data-fileid="4093" src="https://opusmodus.com/forums/uploads/monthly_2025_03/1.png.b28f761a15f1ababccaa4d72c149d177.png" alt="1.png" width="2826" height="1412" loading="lazy"></p>]]></description><guid isPermaLink="false">3874</guid><pubDate>Tue, 11 Mar 2025 19:20:51 +0000</pubDate></item><item><title>Docu update get-harmonic-path</title><link>https://opusmodus.com/forums/topic/3836-docu-update-get-harmonic-path/</link><description><![CDATA[<p>
	In my version of OM (3.0.29550) the docu of the function refers a couple of times to :span parameter, which to my understanding is now called :time.
</p>
]]></description><guid isPermaLink="false">3836</guid><pubDate>Wed, 22 Jan 2025 08:52:37 +0000</pubDate></item><item><title>post seed value when evaluating snippet</title><link>https://opusmodus.com/forums/topic/3835-post-seed-value-when-evaluating-snippet/</link><description><![CDATA[<p>
	Please make the seed value post when using snippet evaluation, e.g. Snippet&gt;Notation (cmd-1)<br>
	This would IMO be a great improvement to the workflow when trying to find a good seed value.<br>
	As of now the seed value only posts when evaluating expression (cmd-E) or score (opt-cmd-1).
</p>

<p>
	 
</p>

<p>
	For example:
</p>

<pre class="ipsCode" id="ips_uid_2931_5">(setf m6 (rnd-order m2 :type :all :seed nil))</pre>

<p>
	 
</p>

<p>
	When evaluating the above as snippet notation, you could quickly go through a number of trials and then copy and paste the seed value that you like.
</p>
]]></description><guid isPermaLink="false">3835</guid><pubDate>Tue, 21 Jan 2025 12:00:38 +0000</pubDate></item><item><title>Play some midi sound with MIDI controller for MIDI ENTRY monitoring</title><link>https://opusmodus.com/forums/topic/3790-play-some-midi-sound-with-midi-controller-for-midi-entry-monitoring/</link><description><![CDATA[<p>
	Dear Friends,
</p>

<p>
	I have a simple suggestion:
</p>

<p>
	- An option for assigning some sound for live playing in the midi entry option. Just a sound like a piano, for monitoring the midi input from the midi controller.
</p>

<p>
	To make this, I usually have to open a DAW, put a VST sound, redirect to Opusmodus via virtual port.
</p>

<p>
	 
</p>

<p>
	- Sometimes is nice to work only with Opusmodus gm midi simple sounds just to sketch and reserving a better surprise of hearing with better libraries for later in the process.
</p>

<p>
	 
</p>

<p>
	Best
</p>

<p>
	Julio
</p>
]]></description><guid isPermaLink="false">3790</guid><pubDate>Sun, 13 Oct 2024 17:19:28 +0000</pubDate></item><item><title>I asked chatGPT to write a Bach chorale for Opusmodus</title><link>https://opusmodus.com/forums/topic/2990-i-asked-chatgpt-to-write-a-bach-chorale-for-opusmodus/</link><description><![CDATA[<p>
	I asked a wide variety of chat bots to write code for Opusmodus.  All of them produced results with mistakes, and all of them repeated mistakes after being corrected.  The free version of chatGPT 3.5 (chat.openai.com) was the best of them all.  It still repeats mistakes sometimes when asked to modify previous code or generate new code, but overall I'm happy with the results.  I still struggle to create original works from scratch with Opusmodus, and this gives me lots of working examples I can generate by describing what I want to make.
</p>
<p>
<a class="ipsAttachLink" href="https://opusmodus.com/forums/applications/core/interface/file/attachment.php?id=3550&amp;key=a4b3215d3ad2a8b35a144ce7b20cc469" data-fileExt='opmo' data-fileid='3550' data-filekey='a4b3215d3ad2a8b35a144ce7b20cc469'>chatgpt bach corale3.opmo</a></p>]]></description><guid isPermaLink="false">2990</guid><pubDate>Fri, 25 Aug 2023 20:43:08 +0000</pubDate></item><item><title>ChatGPT</title><link>https://opusmodus.com/forums/topic/3721-chatgpt/</link><description><![CDATA[<p>
	It's a good thing. for my part, I was already using it for some time.
</p>

<p>
	The problem is the number of requests...you have to pay!
</p>

<p>
	 
</p>

<p>
	<img class="ipsImage ipsImage_thumbnailed" data-fileid="3753" width="1616" alt="image.png.5dd3adb9f262bbd019911242a84f9cfd.png" src="https://opusmodus.com/forums/uploads/monthly_2024_07/image.png.5dd3adb9f262bbd019911242a84f9cfd.png" loading="lazy" height="177.76">
</p>
]]></description><guid isPermaLink="false">3721</guid><pubDate>Fri, 26 Jul 2024 10:59:04 +0000</pubDate></item><item><title>NotePerformer / NPPE integration?</title><link>https://opusmodus.com/forums/topic/3695-noteperformer-nppe-integration/</link><description><![CDATA[<p>
	It would be great if OM integrated with NotePerformer and NPPE ( Note Performer Playback Engines) like Dorico does.  Any thought about that?  Not only would it provide a more musical playback ( using AI look-ahead tech and better sounds than GM ), but it would greatly simplify integration with many of the best orchestral libraries ( VSL, Spitfire, CSS etc.), since you wouldn't need to create separate custom expression maps per library.  NPPE handles all that behind the scenes, and makes it very easy to mix and match libraries for high quality score playback.  
</p>
]]></description><guid isPermaLink="false">3695</guid><pubDate>Sat, 22 Jun 2024 23:11:53 +0000</pubDate></item><item><title>Circle-pitch-plot microtonal implementation</title><link>https://opusmodus.com/forums/topic/3130-circle-pitch-plot-microtonal-implementation/</link><description><![CDATA[<p>
	Hi all,
</p>

<p>
	 
</p>

<p>
	I don't know if this exists, but I couldn't find anything.
</p>

<p>
	Would it be possible to implement an argument for a 24-tet and 48-tet subdivision?
</p>

<p>
	 
</p>

<p>
	That would really help me out a lot!<br />
	<br />
	Best regards,
</p>

<p>
	Tibor
</p>
]]></description><guid isPermaLink="false">3130</guid><pubDate>Sat, 10 Feb 2024 22:45:22 +0000</pubDate></item><item><title>repeat option to play in loop</title><link>https://opusmodus.com/forums/topic/2931-repeat-option-to-play-in-loop/</link><description><![CDATA[<p>
	It would be very useful to have a repeat option for all players in OM
</p>

<p>
	 
</p>

<p>
	Patrick
</p>

<p><a href="https://opusmodus.com/forums/uploads/monthly_2023_05/Screenshot2023-05-27at10_36_50.png.a36de536e7729f26729b39251ef9c176.png" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="3470" src="https://opusmodus.com/forums/uploads/monthly_2023_05/Screenshot2023-05-27at10_36_50.thumb.png.d818c4379fd74d91ab8d0cd5e0484aec.png" width="1000" class="ipsImage ipsImage_thumbnailed" alt="Screenshot 2023-05-27 at 10.36.50.png" loading="lazy" height="440"></a></p>]]></description><guid isPermaLink="false">2931</guid><pubDate>Sat, 27 May 2023 08:39:41 +0000</pubDate></item><item><title>print lessons</title><link>https://opusmodus.com/forums/topic/2924-print-lessons/</link><description><![CDATA[<p>
	Hi,
</p>

<p>
	is it possible to print at once "steps 01-30" directly from opus modus or from a folder?
</p>
]]></description><guid isPermaLink="false">2924</guid><pubDate>Mon, 15 May 2023 16:37:22 +0000</pubDate></item><item><title>sysex to re-tune MTS synth for full microtonality</title><link>https://opusmodus.com/forums/topic/2908-sysex-to-re-tune-mts-synth-for-full-microtonality/</link><description><![CDATA[<p>
	I have a Waldorf Kyra that I retune in real-tme with my own sequencer written for the Sonic Pi platform. Real-time tuning allows the full 10+ music octaves of any division of the octave as opposed to loading a tuning and being limit to the 128 MIDI semitone numbers, which is barely 4 octaves of EDO-31 (for example). MTS's real-time tuning also exploits the Kyra's full polyphony across its 8 timbres, as opposed to the limitation to 16-polyphony of pitch bend microtuning.
</p>

<p>
	 
</p>

<p>
	My request is for Opusmodus to provide a SendSysex function. I would like to be able to send the re-tuning sysex's from Opusmodus, and then it would be up to me to use its EDO-12-based notation to access where those re-tuned notes are. That way, I could use Opusmodus for full-spectrum microtonal composition in Opusmodus's much more feature-packed composition environment than my little personal system. Actually, my system isn't so little, but compared to Opusmodus it is, so I would really like to change over to the much richer Opusmodus, though not at the expense of the very flexible microtonality I currently enjoy.
</p>

<p>
	 
</p>

<p>
	I used to have a Black Corporation Deckard's Dream and Xerxes that also support MTS real-time tuning, which worked fine, but I sold them, keeping the multitimbral Kyra as the most practical option. The only other synth I know of that supports real-time tuning is Moog's Matriarch, but I've never tried one.
</p>
]]></description><guid isPermaLink="false">2908</guid><pubDate>Fri, 21 Apr 2023 07:28:55 +0000</pubDate></item><item><title>E-book version of "Fundamentals of Composition with Opusmodus" Available?</title><link>https://opusmodus.com/forums/topic/2894-e-book-version-of-fundamentals-of-composition-with-opusmodus-available/</link><description><![CDATA[<p>
	Hi,
</p>

<p>
	After a long gap, I upgraded to Ver 3.0 a few days ago! Noticed the announcement regarding the book "Fundamentals of Composition with Opusmodus". Is it available in e-book form? Hopefully that will be less expensive and more accessible!
</p>

<p>
	 
</p>

<p>
	- Rangarajajan
</p>
]]></description><guid isPermaLink="false">2894</guid><pubDate>Sun, 26 Mar 2023 03:18:09 +0000</pubDate></item></channel></rss>
