Jump to content

opmo

Administrators
  • Posts

    2,885
  • Joined

  • Last visited

Reputation Activity

  1. Like
    opmo got a reaction from Jorgalad in Opusmodus 3.0.29232 Update   
    COUNTERPOINT additional functionality:
     
    orchestra (Optional): Lists all instruments involved in the composition. This comprehensive list ensures that the counterpoint function can consider the full ensemble when applying transformations and generating output.
     
    instruments (Optional): Identifies a subset of instruments from the orchestra to which the counterpoint operations are specifically applied. This allows for targeted manipulation of particular voices or sections within the ensemble.
     
    Orchestra and Instruments
    The :orchestra and :instruments options are employed within the COUNTERPOINT function for orchestrating ensemble or orchestral compositions. These options ensure precise alignment and synchronisation of all instruments, particularly vital when focusing on specific sections and a selected list of instruments. The key objective is to maintain coherence across the ensemble, ensuring that instruments not actively participating in a given section are appropriately paused, yet still accounted for in the overall section result. The :instruments option explicitly designates the instruments engaged in the COUNTERPOINT operation. The orchestra variable is defined to encompass a comprehensive range of instruments across different families, including woodwind, brass, percussion, keyboard and harp, and strings.
     
    (setf orchestra '(pic flt obo cla bsn cbn ; woodwind hrn tpt tbn tba ; brass tmp glk chi ; percussion cel plh prh hrp ; keyboard, harp vn1 vn2 vla vlc ctb ; strings ) )  
    In the COUNTERPOINT function below, sequences (seq1, seq2, seq3) are processed through specified dictum configurations, with attention to sequence patterns, tempo, and the orchestrated ensemble layout.
     
    (counterpoint (list seq1 seq2 seq3) '(((- 1 2 1 2 1) :sequence (1 1 1 1 1 1) :tempo 88) ((4 3 1 2 1 1) :sequence (3 1 1 1 1 1))) :orchestra orchestra :instruments '(vn1 vn2 vla vlc ctb) :time-signature '(4 4) :global-tonality '((d4f4a4 :map octave)) :index ‘s1-)  
    By specifying :orchestra and :instruments, this approach ensures that only the selected string instruments (vn1, vn2, vla, vlc, ctb) are actively engaged in the COUNTERPOINT, while other orchestral sections are paused but included in the overall texture (output).

    Best wishes,
    Janusz
  2. Like
    opmo got a reaction from lviklund in Opusmodus 3.0.29232 Update   
    COUNTERPOINT additional functionality:
     
    orchestra (Optional): Lists all instruments involved in the composition. This comprehensive list ensures that the counterpoint function can consider the full ensemble when applying transformations and generating output.
     
    instruments (Optional): Identifies a subset of instruments from the orchestra to which the counterpoint operations are specifically applied. This allows for targeted manipulation of particular voices or sections within the ensemble.
     
    Orchestra and Instruments
    The :orchestra and :instruments options are employed within the COUNTERPOINT function for orchestrating ensemble or orchestral compositions. These options ensure precise alignment and synchronisation of all instruments, particularly vital when focusing on specific sections and a selected list of instruments. The key objective is to maintain coherence across the ensemble, ensuring that instruments not actively participating in a given section are appropriately paused, yet still accounted for in the overall section result. The :instruments option explicitly designates the instruments engaged in the COUNTERPOINT operation. The orchestra variable is defined to encompass a comprehensive range of instruments across different families, including woodwind, brass, percussion, keyboard and harp, and strings.
     
    (setf orchestra '(pic flt obo cla bsn cbn ; woodwind hrn tpt tbn tba ; brass tmp glk chi ; percussion cel plh prh hrp ; keyboard, harp vn1 vn2 vla vlc ctb ; strings ) )  
    In the COUNTERPOINT function below, sequences (seq1, seq2, seq3) are processed through specified dictum configurations, with attention to sequence patterns, tempo, and the orchestrated ensemble layout.
     
    (counterpoint (list seq1 seq2 seq3) '(((- 1 2 1 2 1) :sequence (1 1 1 1 1 1) :tempo 88) ((4 3 1 2 1 1) :sequence (3 1 1 1 1 1))) :orchestra orchestra :instruments '(vn1 vn2 vla vlc ctb) :time-signature '(4 4) :global-tonality '((d4f4a4 :map octave)) :index ‘s1-)  
    By specifying :orchestra and :instruments, this approach ensures that only the selected string instruments (vn1, vn2, vla, vlc, ctb) are actively engaged in the COUNTERPOINT, while other orchestral sections are paused but included in the overall texture (output).

    Best wishes,
    Janusz
  3. Thanks
    opmo reacted to dazjjackson in CLM Installation on Windows   
    I've managed to get this working, so putting my notes here in case it is any use to anyone else, or helps to fix the underlying issue.

    As per my notes above, I've got Visual Studio 2022 Community installed with the C/C++ compiler set up, I'm not sure this is a requirement as such for Opusmodus itself, but a compiler appears to be needed to build CLM and I had it installed already.

    My starting point was where I'd got to before, but for clarity:

    1. In the Opusmodus user folder, inside the CLM folder, create two new folders, bin and libclm
        For me, the Opusmodus folder is located here: C:\Users\username\Opusmodus, so the new folders are as follows:
        C:\Users\username\Opusmodus\CLM\bin
        C:\Users\username\Opusmodus\CLM\libclm
    2. In Opusmodus, uncomment the contents of 'Load CLM Instruments.lisp'
    3. Run 'Evaluate All' - At this point an error will occur in the Opusmodus listener window, ignore it for now.
        This step is required to make sure Opusmodus copies the libclm-o64.dll into the libclm folder.
    4. Open a 'Developer Command Prompt for VS 2022'
    5. Change directory in the CMD window to C:\Users\username\Opusmodus\CLM\libclm
    6. Run: dumpbin.exe /exports libclm-o64.dll
        This will output information about libclm-o64.dll to the terminal window, use this information to create a libclm-o64.def file containing the function names (generated def file attached)
        This article was helpful, there are many other ways to do it with scripts etc, but I went the manual route: https://www.asawicki.info/news_1420_generating_lib_file_for_dll_library.html
    7. Make sure to create the libclm-o64.def file is in the same folder as the libclm-o64.dll
    8. With the CMD window still set to C:\Users\username\Opusmodus\CLM\libclm
        Run: lib.exe /def:libclm-o64.def /out:libclm-o64.lib /machine:x64
        This will generate the required libclm-o64.lib and libclm-o64.exp files.
    9. Back in Opusmodus, run 'Evaluate All' again, assuming there have been no errors above, the instruments should build correctly.
        Took a while, 10-15 minutes.

    I've attached the def file as it's just a plan text file so it's easy to see what's in it, but it can be used to save having to do step 6. I haven't included the lib or exp files as these can be generated with step 8.

    Hope that helps. Once the build had completed, I have tested and can now use all of the examples.

    The above was done using Opusmodus 3.0.29226
    libclm-o64.def
  4. Thanks
    opmo reacted to Stephane Boussuge in Easter Sales on all courses   
    Hi folks,
     
    Get this opportunity to improve you Opusmodus knowledge, until 2.4.24, you will get -30% on everything on Composer Workshop with the coupon code: easter24.
     
    Enjoy !
  5. Thanks
    opmo reacted to Stephane Boussuge in Forme étrange pour piano   
    Basic row definition 
    (setf row '(c4 e4 g4 bb4 d5 fs5 a5 gs5 f5 eb4 cs4 b4))  
    Extract some subsets from the row.
    (setf set1 (subseq row 0 6)) (setf set2 (subseq row 3 9)) (setf set3 (subseq row 6 12))  
    Chords generation from sets
    (setf couleur1 (gen-chord 12 5 5 -6 6 (gen-repeat 12 set1))) (setf couleur2 (gen-chord 12 5 5 -6 6 (gen-repeat 12 set2))) (setf couleur3 (gen-chord 12 5 5 -6 6 (gen-repeat 12 set3)))  
    Preparing tonality-series for futur mapping (create harmonics paths)
    (setf path1 (tonality-series couleur1)) (setf path2 (tonality-series couleur2)) (setf path3 (tonality-series couleur3))
    Section1
    Define ch1, a repeated generative process with GEN-LOOP
    (setf ch1 (mclist (position-insert '(0) '(ped) (assemble-seq (gen-loop 24 (make-omn :length (rnd-sample 1 '((q h -q) (h =) (e = = = h) (w) (q =) (q e = q) (q -))) :pitch (rnd-sample 6 couleur1) :velocity (rnd-sample 1 '((f) (ff) (fff) (mf) (mp) (p) (pp)))))))))  
    Define un1, a repeated generative process with GEN-LOOP
    (setf un1 (mclist (position-insert '(0) '(ped) (assemble-seq (gen-loop 24 (make-omn :length (rnd-sample 1 '((h -q) (w) (q -h))) :pitch (pitch-transpose -48 (rnd-sample 1 (melodize (rnd-sample 1 couleur1)))) :velocity '((ffff))))))))  
    Define ar1, a repeated generative process with GEN-LOOP
    (setf ar1 (mclist (position-insert '(0) '(ped) (assemble-seq (gen-loop 24 (make-omn :length (rnd-sample 1 '((t = = = = q -) (t = = = = = = = = = = =) (s = = = = = = =) (t = = = = = e = q -))) :pitch (pitch-transpose (rnd-pick '(10 11 12 13 14 15 16 17)) (tonality-map (rnd-sample 1 path1) (rnd-sample 1 '((c2 e2 g2 b2 d3 fs3 c4 e4 g4 b4 d5 fs5) (c2 e2 g2 b2 d3 fs3 d3 fs3 a4 e5 b5) (fs5 d5 b4 g4 e4 c4 b4 g4 e4 c4 b3 g3 e3 c3) (fs5 d5 b4 d5 b4 g4 b4 g4 e4 g4 e4 c4 g3 c3))))) :velocity (rnd-sample 1 '((f) (ff) (fff) (mf) (mp) (p) (pp)))))))))  
    Define ar1b, a repeated generative process with GEN-LOOP
    (setf ar1b (mclist (position-insert '(0) '(ped) (assemble-seq (gen-loop 24 (make-omn :length (rnd-sample 1 '((t = = = = q -) (t = = = = = = = = = = =) (s = = = = = = =) (t = = = = = e = q -))) :pitch (filter-repeat 1 (pitch-transpose 12 (tonality-map (rnd-sample 1 path1) (rnd-sample 6 '(c4 d4 e4 f4 g4 a4 b4 c5 d5 e4 fs5))))) :velocity (rnd-sample 1 '((f) (ff) (fff) (mf) (mp) (p) (pp)))))))))  
    Assembly section1.
    (setf s1 (rnd-sample 24 (append ch1 un1 ar1 ar1b)))  
    Score FormeEtrange-s1
    (def-score FormeEtrange-s1 (:title "FormeEtrange" :composer "S.Boussuge" :copyright "Copyright © 2014 S.Boussuge" :key-signature atonal :time-signature (get-time-signature s1) :tempo 108 :layout (piano-grand-layout 'piano)) (piano :omn s1 :channel 1 :sound 'gm :program 'acoustic-grand-piano))
    Section2
    (setf ch2 (mclist (position-insert '(0) '(ped) (assemble-seq (gen-loop 24 (make-omn :length (rnd-sample 1 '((q h -q) (h =) (e = = = h) (w) (q =) (q e = q) (q -))) :pitch (rnd-sample 6 couleur2) :velocity (rnd-sample 1 '((f) (ff) (fff) (mf) (mp) (p) (pp)))))))))  
    (setf un2 (mclist (position-insert '(0) '(ped) (assemble-seq (gen-loop 24 (make-omn :length (rnd-sample 1 '((h -q) (w) (q -h))) :pitch (pitch-transpose -48 (rnd-sample 1 (melodize (rnd-sample 1 couleur2)))) :velocity '((ffff))))))))  
    (setf ar2 (mclist (position-insert '(0) '(ped) (assemble-seq (gen-loop 24 (make-omn :length (rnd-sample 1 '((t = = = = q -) (t = = = = = = = = = = =) (s = = = = = = =) (t = = = = = e = q -))) :pitch (pitch-transpose (rnd-pick '(10 11 12 13 14 15 16 17)) (tonality-map (rnd-sample 1 path2) (rnd-sample 1 '((c2 e2 g2 b2 d3 fs3 c4 e4 g4 b4 d5 fs5) (c2 e2 g2 b2 d3 fs3 d3 fs3 a4 e5 b5) (fs5 d5 b4 g4 e4 c4 b4 g4 e4 c4 b3 g3 e3 c3) (fs5 d5 b4 d5 b4 g4 b4 g4 e4 g4 e4 c4 g3 c3))))) :velocity (rnd-sample 1 '((f) (ff) (fff) (mf) (mp) (p) (pp)))))))))  
    (setf ar2b (mclist (position-insert '(0) '(ped) (assemble-seq (gen-loop 24 (make-omn :length (rnd-sample 1 '((t = = = = q -) (t = = = = = = = = = = =) (s = = = = = = =) (t = = = = = e = q -))) :pitch (filter-repeat 1 (pitch-transpose 12 (tonality-map (rnd-sample 1 path2) (rnd-sample 6 '(c4 d4 e4 f4 g4 a4 b4 c5 d5 e4 fs5))))) :velocity (rnd-sample 1 '((f) (ff) (fff) (mf) (mp) (p) (pp)))))))))  
    Assembly section2.
    (setf s2 (rnd-sample 24 (append ch2 un2 ar2 ar2b)))  
    Score FormeEtrange-s2
    (def-score FormeEtrange-s2 (:title "FormeEtrange" :composer "S.Boussuge" :copyright "Copyright © 2014 S.Boussuge" :key-signature atonal :time-signature (get-time-signature s2) :tempo 108 :layout (piano-grand-layout 'piano)) (piano :omn s2 :channel 1 :sound 'gm :program 'acoustic-grand-piano))  
    Section3
    (setf ch3 (mclist (position-insert '(0) '(ped) (assemble-seq (gen-loop 24 (make-omn :length (rnd-sample 1 '((q h -) (h =) (e = = = h) (w) (q =) (q e = q) (q -))) :pitch (rnd-sample 6 couleur3) :velocity (rnd-sample 1 '((f) (ff) (fff) (mf) (mp) (p) (pp)))))))))  
    (setf un3 (mclist (position-insert '(0) '(ped) (assemble-seq (gen-loop 24 (make-omn :length (rnd-sample 1 '((h -q) (w) (q -h))) :pitch (pitch-transpose -48 (rnd-sample 1 (melodize (rnd-sample 1 couleur3)))) :velocity '((ffff))))))))  
    (setf ar3 (mclist (position-insert '(0) '(ped) (assemble-seq (gen-loop 24 (make-omn :length (rnd-sample 1 '((t = = = = q -) (t = = = = = = = = = = =) (s = = = = = = =) (t = = = = = e = q -))) :pitch (pitch-transpose (rnd-pick '(10 11 12 13 14 15 16 17)) (tonality-map (rnd-sample 1 path3) (rnd-sample 1 '((c2 e2 g2 b2 d3 fs3 c4 e4 g4 b4 d5 fs5) (c2 e2 g2 b2 d3 fs3 d3 fs3 a4 e5 b5) (fs5 d5 b4 g4 e4 c4 b4 g4 e4 c4 b3 g3 e3 c3) (fs5 d5 b4 d5 b4 g4 b4 g4 e4 g4 e4 c4 g3 c3))))) :velocity (rnd-sample 1 '((f) (ff) (fff) (mf) (mp) (p) (pp)))))))))  
    (setf ar3b (mclist (position-insert '(0) '(ped) (assemble-seq (gen-loop 24 (make-omn :length (rnd-sample 1 '((t = = = = q -) (t = = = = = = = = = = =) (s = = = = = = =) (t = = = = = e = q -))) :pitch (filter-repeat 1 (pitch-transpose 12 (tonality-map (rnd-sample 1 path3) (rnd-sample 6 '(c4 d4 e4 f4 g4 a4 b4 c5 d5 e4 fs5))))) :velocity (rnd-sample 1 '((f) (ff) (fff) (mf) (mp) (p) (pp)))))))))  
    Assembly Section 3
    (setf s3 (rnd-sample 24 (append ch3 un3 ar3 ar3b)))  
    Score FormeEtrange-s3
    (def-score FormeEtrange-s3 (:title "FormeEtrange" :composer "S.Boussuge" :copyright "Copyright © 2014 S.Boussuge" :key-signature atonal :time-signature (get-time-signature s3) :tempo 108 :layout (piano-grand-layout 'piano)) (piano :omn s3 :channel 1 :sound 'gm :program 'acoustic-grand-piano))   Final score (compile-score '(FormeEtrange-s1 FormeEtrange-s2 FormeEtrange-s3)) SB.
    FormeEtrange.opmo
  6. Like
    opmo reacted to TimotheeBoussuge in Texture 1   
    Hello everyone !
     
    Here is a small ambient piece i made using Opusmodus and VCVRack.
     
    Enjoy !
     
     
     
  7. Like
    opmo reacted to torstenanders in ADSF support for Opusmodus 3: could you please set :keep-modules to T when creating the Opusmodus delivery?   
    Oh, thanks for clarifying that for loading modules is still possible to use asdf:load-system as a workaround. Nice. I can confirm that this is working!
     
    I still get errors, e.g., when loading cluster-engine, but it is now up to me trying to get that fixed. 😉
  8. Thanks
  9. Thanks
  10. Thanks
    opmo reacted to Stephane Boussuge in Pillars Of Creation   
    Hi folks,
    a short electronic track in honor of Hubble telescope discovery...
    I've used the template shared here as starting point:
    Attached the Audio file, Opmo score and VCVRack.
    Best
    S.
    PillarsOfCreation.wav PillarsOfCreation.vcv PillarsOfCreation.opmo
  11. Like
    opmo got a reaction from marqrdt in Fuction for sequence polarity   
    Is this what you are looking for:
     
    (defun polarity (seq &key sum)   (do-verbose ("polarity")     (flet ((polarity-i (in-seq)              (let ((integers (if (omn-pitchp (car in-seq)) (pitch-to-midi in-seq) in-seq)))                (when (equal (length integers) 0)                  return 0                  )                (let ((accum 0) (int-pairs (interval-class integers)))                  (mapcar (lambda (x) (when (evenp x) (incf accum) )) int-pairs)                  (/ (* accum 1.0) (- (length integers) 1))                  ))))       (let ((result (loop for i in (lists! seq)                           collect (polarity-i i))))         (if sum (/ (find-sum (flatten result)) (length result)) result))))) (polarity '(1 3 6 4 2)) => (0.75) (polarity '((c4 e4 c3 ds4 b5) (c4 cs4 d4 ds4 f4))) => (0.75 0.25) (polarity '((c4 e4 c3 ds4 b5) (c4 cs4 d4 ds4 f4)) :sum t) => 0.5  
  12. Like
    opmo got a reaction from Stephane Boussuge in Fuction for sequence polarity   
    Is this what you are looking for:
     
    (defun polarity (seq &key sum)   (do-verbose ("polarity")     (flet ((polarity-i (in-seq)              (let ((integers (if (omn-pitchp (car in-seq)) (pitch-to-midi in-seq) in-seq)))                (when (equal (length integers) 0)                  return 0                  )                (let ((accum 0) (int-pairs (interval-class integers)))                  (mapcar (lambda (x) (when (evenp x) (incf accum) )) int-pairs)                  (/ (* accum 1.0) (- (length integers) 1))                  ))))       (let ((result (loop for i in (lists! seq)                           collect (polarity-i i))))         (if sum (/ (find-sum (flatten result)) (length result)) result))))) (polarity '(1 3 6 4 2)) => (0.75) (polarity '((c4 e4 c3 ds4 b5) (c4 cs4 d4 ds4 f4))) => (0.75 0.25) (polarity '((c4 e4 c3 ds4 b5) (c4 cs4 d4 ds4 f4)) :sum t) => 0.5  
  13. Like
    opmo reacted to marqrdt in Fuction for sequence polarity   
    OMers,
    I wrote this function and use it in my composition work. Please feel free to steal use it. It returns the "polarity" of a sequence, defined as the ratio of consecutive uneven and even interval classes (IC) in a sequence. I use this as a way of testing if a generated sequence contains a balanced mix of even or uneven ICs.
     
    (defun polarity (in-seq)     (when (equal (length in-seq) 0)       return 0       )     (let((accum 0) (int-pairs (interval-class in-seq)))       (mapcar (lambda (x) (when (evenp x) (incf accum) )) int-pairs)       (/ (* accum 1.0) (- (length in-seq) 1))       )     )  
    Some examples:
    ;; The polarity of a chromatic scale is 0.0, as there are no even interval classes.
    OM 9 > (polarity '(0 1 2 3 4 5 6 7 8 9 10)) 0.0  
    ;; The polarity of a whole-tone scale is 1.0, as there are no uneven interval classes.
    OM 10 > (polarity '(0 4 8 2 6 10)) 1.0  
    ;; The polarity of a chromatic scale is 0.0, as there are no even interval classes.
    OM 9 > (polarity '(0 1 2 3 4 5 6 7 8 9 10)) 0.0  
    ;; The polarity of a sequence of alternating even and uneven ICs is 0.5.
    OM 14 > (polarity `(0 6 11 5 10 4 9 3 8 2 7 1 6)) interval-class  
    Right now it only works on sequences of numbers and there's no error handling. I would appreciate very much any advice on a concise and OM-ian way to extend it to accepts either integers or pitch symbols like '(c4 fs4 b4 f5 bb5).
     
    Thanks!
    Paul Marquardt
     
  14. Like
    opmo reacted to strumm in Auto-save problems   
    I concur with the original poster.   It is happening every time I use Opusmodus, and the pop up dialog doesn't work, so you are stuck.  My new workflow before I ever start Opusmodus is to go to Finder, and delete all autosave files.
     
    Strange, this seems to be working now properly for me.  I guess I can stop that workflow of deleting the autosave files.
  15. Thanks
    opmo got a reaction from Pricto in Activation on Mac and PC   
    Yes, it is. Your license permits you to activate Opusmodus on two personal computers that you own, under the condition that the program is used on only one computer at a time.
  16. Like
    opmo reacted to Stephane Boussuge in Non linear abstraction I   
    New composition :
     
  17. Thanks
    opmo got a reaction from JulioHerrlein in Pedal on Piano   
    Not all publishing softwares are up to scratch with Music XML conversion, sadly.
  18. Like
    opmo got a reaction from Stephane Boussuge in Opusmodus Update 3.0.29206   
    Additional DICTUM types: :grace-note and :previous
     
    Executes a specified function applied exclusively to grace note events.
     
    (:do (pitch-transpose 12 x) :grace-note t)  
    Executes a specified function within the specified bar(s) exclusively to grace note events.
     
    (:do (pitch-transpose 12 x) :grace-note t :bar 2)  
    This operation alters elements meeting certain predefined conditions from the preceding event, replacing them in the current event with a new element. Such conditional manipulation facilitates intricate, criteria-driven modifications.
     
    (:previous ff :do p) (:previous (h c4 f) :do (pp tr))  
    Example:
     
    (setf omn7 '((s fs3 mf d4 a4 c5 b4 f4 bb3 cs3)              ((acc e f2 cs2) q c2 f stacc)              (s e2 b2 gs3 e4 bb4 c5 bb4 e4)              ((acc e gs3 b2) q e2 f stacc)              (s c2 cs2 f2 cs3 bb3 f4 b4 c5))) (dictum '(:previous c5 :do (cs6 tr1+fermata)) omn7) => ((s fs3 mf d4 a4 c5 cs6 tr1+fermata f4 bb3 cs3) ((acc e f2 mf cs2) q c2 f stacc) (s e2 mf b2 gs3 e4 bb4 c5 cs6 tr1+fermata e4) ((acc e gs3 mf b2) q e2 f stacc) (s c2 mf cs2 f2 cs3 bb3 f4 b4 c5))  
      
  19. Thanks
    opmo got a reaction from JulioHerrlein in Opusmodus Update 3.0.29206   
    Additional DICTUM types: :grace-note and :previous
     
    Executes a specified function applied exclusively to grace note events.
     
    (:do (pitch-transpose 12 x) :grace-note t)  
    Executes a specified function within the specified bar(s) exclusively to grace note events.
     
    (:do (pitch-transpose 12 x) :grace-note t :bar 2)  
    This operation alters elements meeting certain predefined conditions from the preceding event, replacing them in the current event with a new element. Such conditional manipulation facilitates intricate, criteria-driven modifications.
     
    (:previous ff :do p) (:previous (h c4 f) :do (pp tr))  
    Example:
     
    (setf omn7 '((s fs3 mf d4 a4 c5 b4 f4 bb3 cs3)              ((acc e f2 cs2) q c2 f stacc)              (s e2 b2 gs3 e4 bb4 c5 bb4 e4)              ((acc e gs3 b2) q e2 f stacc)              (s c2 cs2 f2 cs3 bb3 f4 b4 c5))) (dictum '(:previous c5 :do (cs6 tr1+fermata)) omn7) => ((s fs3 mf d4 a4 c5 cs6 tr1+fermata f4 bb3 cs3) ((acc e f2 mf cs2) q c2 f stacc) (s e2 mf b2 gs3 e4 bb4 c5 cs6 tr1+fermata e4) ((acc e gs3 mf b2) q e2 f stacc) (s c2 mf cs2 f2 cs3 bb3 f4 b4 c5))  
      
  20. Thanks
    opmo reacted to Stephane Boussuge in Miniature I from "Quatre miniatures en duo pour Violon et Piano"   
    Hi folks,
     
    a work in progress, a first short piece from a series of four called "Quatre miniatures en duo" for Violin and Piano.
     
    S.
     
     
    Score1V4B.mp3 Quatre miniatures en duo.pdf
  21. Like
    opmo got a reaction from Stephane Boussuge in rnd-pick doesn't seem to work with subsets of omn   
    (gen-loop 4 (list (rnd-pick (list bird1 bird2 bird3)) (rnd-pick (list rest1 rest2 rest3))))  
  22. Like
    opmo got a reaction from LeopoldMozart in rnd-pick doesn't seem to work with subsets of omn   
    (gen-loop 4 (list (rnd-pick (list bird1 bird2 bird3)) (rnd-pick (list rest1 rest2 rest3))))  
  23. Like
    opmo got a reaction from Cliff in Mapping 'Alle meine Entchen'   
    Algorithmic 'play' with the song "Alle meine Entchen" (All my little ducklings) popular german children song.
    An example with TONALITY-MAP and GEN-PAUSE functions. A fun exercise for four voices in five parts.   The original song     Global seed. (init-seed 35)  
    Song in OMN script.
    (setf song '((e c4 d4 e4 f4) (q g4 =) (e a4 = = =) (q g4 -) (e a4 = = =) (q g4 -) (e f4 = = =) (q e4 =) (e g4 = = =) (q c4 -)))   Creating four voices based on the original song. Processing three voices, each with its own random order of its bars. (setf s-rnd (rnd-order song :list t)) (setf a-rnd (rnd-order song :list t)) (setf t-rnd (rnd-order song :list t))  
    The fourth voice is 10 repetitions of the first bar of the original song.
    (setf b-rep (gen-repeat 10 (list (first song))))   Transposition of each bar to start pitch. (setf s-trs (pitch-transpose-start '(0 1 2 3 4 5 6 7 8 9 10) s-rnd)) (setf t-trs (pitch-transpose-start '(0 7) t-rnd)) (setf b-trs (pitch-transpose-start '(0 -1 2 -3 4 -5 6 -7 8 -9) b-rep))   Adding accents to the bass voice. (setf b-dyn (subseq (gen-accent 0.2 '(2 3) b-trs) 0 4))   Three voices of the 2nd part are mapped to dorico-flamenco scale. (setf s-2 (tonality-map '(dorico-flamenco :root f3 :ambitus soprano :shift t) s-trs)) (setf t-2 (tonality-map '(dorico-flamenco :root f3 :ambitus tenor :shift t) t-trs)) (setf b-2 (tonality-map '(dorico-flamenco :root f3 :ambitus bass :shift t) b-trs))   The 'bass' voice in the 3rd part is mapped to prometheus-liszt scale. (setf b-3 (tonality-map '(prometheus-liszt :root f3 :ambitus bass :shift t) b-dyn))   All four voices of the 4th part are mapped to minor tonality.  (setf s-4 (tonality-map '(minor :root gs4 :ambitus soprano :shift t) s-rnd)) (setf a-4 (tonality-map '(minor :root gs4 :ambitus alto :shift t) a-rnd)) (setf t-4 (tonality-map '(minor :root gs4 :ambitus tenor :shift t) t-rnd)) (setf b-4 (tonality-map '(minor :root gs4 :ambitus bass :shift t) b-rep))   End bar with fermata. (setf end-bar '(e gs3 b3 eb4 e4 fermata))   10, 4 and 1 bar pause. (setf pause10 (gen-pause song)) (setf pause4 (gen-pause b-dyn)) (setf pause1 (gen-pause end-bar))   Assembling voices. (setf soprano (assemble-seq song s-2 pause4 s-4 pause1)) (setf alto (assemble-seq pause10 pause10 pause4 a-4 pause1)) (setf tenor (assemble-seq pause10 t-2 pause4 t-4 pause1)) (setf bass (assemble-seq pause10 b-2 b-3 b-4 end-bar))   Defining the score and the layout. (def-score Alle-meine-Entchen (:title "Alle meine Entchen" :key-signature '(c maj) :time-signature '(2 4) :tempo '((120 34) (:rit 120 30 1/16 1)) :layout (choir-satb-layout 'soprano 'alto 'tenor 'bass :ignore-velocity t)) (soprano :omn soprano :channel 1 :sound 'gm :program '0) (alto :omn alto) (tenor :omn tenor) (bass :omn bass))  
  24. Like
    opmo got a reaction from RST in Timeline for upcoming books   
    Second in the series: Book 2.
    We too planing to update the Book 1.
  25. Like
    opmo got a reaction from RST in Timeline for upcoming books   
    The second book in the series will be released in the spring.
×
×
  • Create New...

Important Information

Terms of Use Privacy Policy