Jump to content

opmo

Administrators
  • Posts

    2,903
  • Joined

  • Last visited

Reputation Activity

  1. Like
    opmo got a reaction from o_e in Opusmodus 2.2.26880 Update   
    2.2.26880
     
    – New function:
    GET-BEATS ATTRIBUTE-SERIES  
    – Changes:
    PITCH-EXPANSION-VARIANT now PITCH-SEGMENT-VARIANT GET-EVENTS - additional functionality  
    Downloads
     
     
    GET-BEATS
     
    The function GET-BEATS allows you to assemble a new sequence from a number of beats of a given bar and a given omn sequence. The beat value is taken from the bar time-signature. The variant - if defined - is applied to the entire bar before the beat collection.
     
    Examples:
    (setf omn '((q c4 eb4 g4 bb4) (h g3f4cs5 p c5))) (get-beats '(1 1) omn) => (q c4 mf eb4 g4 bb4) (get-beats '(1 1 1) omn) => (q c4 mf) (get-beats '(1 1 (1 4)) omn) => (q c4 mf bb4) (get-beats '((1 1 (1 3))              (1 2 1)) omn) => ((q c4 mf g4) (q g3f4cs5 p tie)) (get-beats '((1 1 (1 3) r)              (1 2 1 i)) omn) => ((q bb4 mf eb4) (q g3a2cs2 p tie))  
    Collecting beat values from two voices with variant set to '? (at random):
    (setf seq1 '((s g4 pp e s cs5 c4 -e s fs5 g4 mf q s gs5 mp e)         (s a3 f g4 pp e s gs5 gs5 -e s a3 gs4 mf q s a5 mp a5)) seq2  '((h e4f5 p c5a4) (h b3d3 gs4eb2fs3) (h bb2g5cs5 gs4d4eb2)          (w bb2 mp) (h g3f4cs5 p c5) (h fs5a5b3 e4b3) (h bb2)          (w e2eb4) (h c5cs6 a5) (h f4g3 gs4d3) (h fs5 bb2fs5g3)          (h d3e5eb4 gs4) (h a2c6 f2) (h b0 cs6c5) (h gs4d3))) (get-beats '((1 1 1 ?)              (2 3 2 ?)              (1 2 2..4 ?)              (2 5 2 ?)) (list seq1 seq2) :seed 42) => ((s gs5 pp e s fs5)     (q g5cs5bb2 p)     (s gs5 pp a5 -e s a5 gs5 mf e gs4 tie gs4 s g4 mp a3)     (q g3f4cs5 p))  
    Collecting beat values from four voices:
    (setf cello1 '((s g2 p d3 b3 a3 b3 d3 b3 d3)                (s g2 d3 b3 a3 b3 d3 b3 d3))       cello2 '((s g2 p e3 c4 b3 mf c4 e3 c4 e3)                (s g2 e3 c4 b3 c4 e3 c4 e3))       cello3 '((s g2 mf fs3 c4 b3 c4 fs3 c4 fs3)                (s g2 fs3 c4 b3 c4 fs3 c4 fs3))       cello4 '((s g2 mf g3 b3 a3 b3 g3 b3 g3)                (s g2 g3 b3 a3 b3 g3 b3 fs3))) (get-beats '((1 1 2 ?)              (2 1 2 ri)              (3 2 2 ?)              (4 2 1 ?)              (2 2 2 ?)              (3 2 2 ?))            (list cello1 cello2 cello3 cello4)            :seed 59) => ((s a3 p g2 b3 b3)     (s a2 mf gs2 e3 cs4)     (s c4 mf c4 fs3 fs3)     (s g2 mf g3 a3 b3)     (s c4 mf c4 e3 e3)     (s b3 mf c4 c4 c4))  
     
     
    ATTRIBUTE-SERIES
     
    The function ATTRIBUTE-SERIES inserts a series of attributes into an omn-form sequence. The series list consists of two values: attribute and its count.
     
    Examples:
    (attribute-series '(leg 8) '(s g2 d3 b3 a3 b3 d3 b3 d3 g2 d3 b3 a3 b3 d3 b3 d3))
     
    (attribute-series '((leg 4) (- 4)) '(s g2 d3 b3 a3 b3 d3 b3 d3 g2 d3 b3 a3 b3 d3 b3 d3))
     
    (setf omn       (make-omn        :length '(s)        :pitch (vector-to-pitch '(c2 c5) (gen-sine 64 5 .4))        :span :pitch))
     
    (attribute-series '((leg 4) (stacc 4)) omn)
     
     
    In this example we generate the attribute values and its count separately:
    (setf attr (rnd-sample 12 '(leg stacc -))) => (- - stacc stacc leg - leg - leg stacc leg stacc) (setf div (rnd-sample 12 '(2 3 4 5))) => (4 2 3 5 2 5 4 5 5 5 3 4)  
    The next step is to create lists with two values each containing attribute and its count. The MCLIST function helps us to create such lists:
    (setf series (mclist attr div)) => ((- 4) (- 2) (stacc 3) (stacc 5) (leg 2) (- 5)     (leg 4) (- 5) (leg 5) (stacc 5) (leg 3) (stacc 4)) (attribute-series series omn)  

     
     
     
    PITCH-SEGMENT-VARIANT
     
    This function returns a number of segments of a sequence from an existing list or lists with a defined variant. The segment is defined by the size value (percent) and the number of returned segments. The segment start position is defined by the position value.
     
    (pitch-segment-variant '(c4 d4 e4 f4 g4 a4 b4)                         :percent 50                         :segment 1                         :position 's                         :variant 'r) => (b4 a4 g4 f4)  
     
    Examples:
     
    In the following example the segment count is set to 2. The first segment is 50 percent in size with a retrograde variant, while the second segment is 30 percent in size with an inversion variant:
    (pitch-segment-variant '(c4 d4 e4 f4 g4 a4 b4)                         :percent '(50 30)                         :segment 2                         :position 'e                         :variant '(r i)) => ((f4 e4 d4 c4) (eb3 cs3))  
    To retain the initial sequence in the result we set the :initial option to T. The :lists option set to NIL will flatten the entire process:
    (pitch-segment-variant '(c4 d4 e4 f4 g4 a4 b4)                        :percent '(50 30)                        :segment 2                        :position 'e                        :variant '(r i)                        :initial t                        :lists nil) => (c4 d4 e4 f4 g4 a4 b4 f4 e4 d4 c4 eb3 cs3)  
    (setf omn       (omn-to-time-signature        (make-omn         :length '(s)         :pitch (vector-to-pitch '(c2 c5) (gen-sine 64 5 .4))         :span :pitch)        '(4 4)))
     
     
    The following expression will return 4 segments each 15 percent in size taken from every bar. Each segment is transposed by 13 semitones. The total of return bars is 16 (4 bars x 4 segments):
    (pitch-segment-variant omn :percent 15 :segment 4 :position '? :variant '? :transpose 13 :seed 32)
     
     
    (pitch-segment-variant omn :percent '((20) (30) (40) (100)) :segment '(1 2 3 4) :position '? :variant '? :transpose '((0) (13)) :seed 32)
     
     
    In this example every segment in each bar has its own size, start position, variant and transposition value:
    (setf percent '((30 50 20) (20 50 70) (40 60 70) (50 20 70))) (setf transp '((0 0 0) (13 0 0) (0 0 13) (0 0 13))) (pitch-segment-variant omn :percent percent :segment 3 :position '? :variant '? :transpose transp :seed 32)
     
     
    (pitch-segment-variant omn :percent (gen-eval 3 '(rnd-sample 3 '(40 50 60 80 20 70)) :seed 45) :segment 3 :position '? :variant '? :omit '(a d ad da p) :transpose (gen-eval 3 '(rnd-sample 3 '(0 13)) :seed 35) :seed 45)
     
     
    More examples:
     
    (progn   (init-seed 53)      (setf segments         (quantize          (pitch-segment-variant           (library 'maderna 'serenata-per-un-satellite nil :random 12)           :percent 20           :segment '(1 2 1 2 1 2)           :position '?           :variant '?           :transpose 6)          '(1 2 3 4 5 6 7 8)))      (ps 'gm :treble (list segments)       :tempo 72)      (init-seed nil)   )
     
     
    (progn   (init-seed 34)      (setf segments         (quantize          (pitch-segment-variant           (library 'maderna 'serenata-per-un-satellite nil :random 12)           :percent 20           :segment '(1 2 1 2 1 2)           :position '?           :variant '?           :transpose 6)          '(1 2 3 4 5 6 7 8)))      (ps 'gm :treble (list segments)       :tempo 72)      (init-seed nil)   )
     
     
     
    Best wishes,
    Janusz
  2. Like
    opmo got a reaction from AM in Opusmodus 2.2.26880 Update   
    2.2.26880
     
    – New function:
    GET-BEATS ATTRIBUTE-SERIES  
    – Changes:
    PITCH-EXPANSION-VARIANT now PITCH-SEGMENT-VARIANT GET-EVENTS - additional functionality  
    Downloads
     
     
    GET-BEATS
     
    The function GET-BEATS allows you to assemble a new sequence from a number of beats of a given bar and a given omn sequence. The beat value is taken from the bar time-signature. The variant - if defined - is applied to the entire bar before the beat collection.
     
    Examples:
    (setf omn '((q c4 eb4 g4 bb4) (h g3f4cs5 p c5))) (get-beats '(1 1) omn) => (q c4 mf eb4 g4 bb4) (get-beats '(1 1 1) omn) => (q c4 mf) (get-beats '(1 1 (1 4)) omn) => (q c4 mf bb4) (get-beats '((1 1 (1 3))              (1 2 1)) omn) => ((q c4 mf g4) (q g3f4cs5 p tie)) (get-beats '((1 1 (1 3) r)              (1 2 1 i)) omn) => ((q bb4 mf eb4) (q g3a2cs2 p tie))  
    Collecting beat values from two voices with variant set to '? (at random):
    (setf seq1 '((s g4 pp e s cs5 c4 -e s fs5 g4 mf q s gs5 mp e)         (s a3 f g4 pp e s gs5 gs5 -e s a3 gs4 mf q s a5 mp a5)) seq2  '((h e4f5 p c5a4) (h b3d3 gs4eb2fs3) (h bb2g5cs5 gs4d4eb2)          (w bb2 mp) (h g3f4cs5 p c5) (h fs5a5b3 e4b3) (h bb2)          (w e2eb4) (h c5cs6 a5) (h f4g3 gs4d3) (h fs5 bb2fs5g3)          (h d3e5eb4 gs4) (h a2c6 f2) (h b0 cs6c5) (h gs4d3))) (get-beats '((1 1 1 ?)              (2 3 2 ?)              (1 2 2..4 ?)              (2 5 2 ?)) (list seq1 seq2) :seed 42) => ((s gs5 pp e s fs5)     (q g5cs5bb2 p)     (s gs5 pp a5 -e s a5 gs5 mf e gs4 tie gs4 s g4 mp a3)     (q g3f4cs5 p))  
    Collecting beat values from four voices:
    (setf cello1 '((s g2 p d3 b3 a3 b3 d3 b3 d3)                (s g2 d3 b3 a3 b3 d3 b3 d3))       cello2 '((s g2 p e3 c4 b3 mf c4 e3 c4 e3)                (s g2 e3 c4 b3 c4 e3 c4 e3))       cello3 '((s g2 mf fs3 c4 b3 c4 fs3 c4 fs3)                (s g2 fs3 c4 b3 c4 fs3 c4 fs3))       cello4 '((s g2 mf g3 b3 a3 b3 g3 b3 g3)                (s g2 g3 b3 a3 b3 g3 b3 fs3))) (get-beats '((1 1 2 ?)              (2 1 2 ri)              (3 2 2 ?)              (4 2 1 ?)              (2 2 2 ?)              (3 2 2 ?))            (list cello1 cello2 cello3 cello4)            :seed 59) => ((s a3 p g2 b3 b3)     (s a2 mf gs2 e3 cs4)     (s c4 mf c4 fs3 fs3)     (s g2 mf g3 a3 b3)     (s c4 mf c4 e3 e3)     (s b3 mf c4 c4 c4))  
     
     
    ATTRIBUTE-SERIES
     
    The function ATTRIBUTE-SERIES inserts a series of attributes into an omn-form sequence. The series list consists of two values: attribute and its count.
     
    Examples:
    (attribute-series '(leg 8) '(s g2 d3 b3 a3 b3 d3 b3 d3 g2 d3 b3 a3 b3 d3 b3 d3))
     
    (attribute-series '((leg 4) (- 4)) '(s g2 d3 b3 a3 b3 d3 b3 d3 g2 d3 b3 a3 b3 d3 b3 d3))
     
    (setf omn       (make-omn        :length '(s)        :pitch (vector-to-pitch '(c2 c5) (gen-sine 64 5 .4))        :span :pitch))
     
    (attribute-series '((leg 4) (stacc 4)) omn)
     
     
    In this example we generate the attribute values and its count separately:
    (setf attr (rnd-sample 12 '(leg stacc -))) => (- - stacc stacc leg - leg - leg stacc leg stacc) (setf div (rnd-sample 12 '(2 3 4 5))) => (4 2 3 5 2 5 4 5 5 5 3 4)  
    The next step is to create lists with two values each containing attribute and its count. The MCLIST function helps us to create such lists:
    (setf series (mclist attr div)) => ((- 4) (- 2) (stacc 3) (stacc 5) (leg 2) (- 5)     (leg 4) (- 5) (leg 5) (stacc 5) (leg 3) (stacc 4)) (attribute-series series omn)  

     
     
     
    PITCH-SEGMENT-VARIANT
     
    This function returns a number of segments of a sequence from an existing list or lists with a defined variant. The segment is defined by the size value (percent) and the number of returned segments. The segment start position is defined by the position value.
     
    (pitch-segment-variant '(c4 d4 e4 f4 g4 a4 b4)                         :percent 50                         :segment 1                         :position 's                         :variant 'r) => (b4 a4 g4 f4)  
     
    Examples:
     
    In the following example the segment count is set to 2. The first segment is 50 percent in size with a retrograde variant, while the second segment is 30 percent in size with an inversion variant:
    (pitch-segment-variant '(c4 d4 e4 f4 g4 a4 b4)                         :percent '(50 30)                         :segment 2                         :position 'e                         :variant '(r i)) => ((f4 e4 d4 c4) (eb3 cs3))  
    To retain the initial sequence in the result we set the :initial option to T. The :lists option set to NIL will flatten the entire process:
    (pitch-segment-variant '(c4 d4 e4 f4 g4 a4 b4)                        :percent '(50 30)                        :segment 2                        :position 'e                        :variant '(r i)                        :initial t                        :lists nil) => (c4 d4 e4 f4 g4 a4 b4 f4 e4 d4 c4 eb3 cs3)  
    (setf omn       (omn-to-time-signature        (make-omn         :length '(s)         :pitch (vector-to-pitch '(c2 c5) (gen-sine 64 5 .4))         :span :pitch)        '(4 4)))
     
     
    The following expression will return 4 segments each 15 percent in size taken from every bar. Each segment is transposed by 13 semitones. The total of return bars is 16 (4 bars x 4 segments):
    (pitch-segment-variant omn :percent 15 :segment 4 :position '? :variant '? :transpose 13 :seed 32)
     
     
    (pitch-segment-variant omn :percent '((20) (30) (40) (100)) :segment '(1 2 3 4) :position '? :variant '? :transpose '((0) (13)) :seed 32)
     
     
    In this example every segment in each bar has its own size, start position, variant and transposition value:
    (setf percent '((30 50 20) (20 50 70) (40 60 70) (50 20 70))) (setf transp '((0 0 0) (13 0 0) (0 0 13) (0 0 13))) (pitch-segment-variant omn :percent percent :segment 3 :position '? :variant '? :transpose transp :seed 32)
     
     
    (pitch-segment-variant omn :percent (gen-eval 3 '(rnd-sample 3 '(40 50 60 80 20 70)) :seed 45) :segment 3 :position '? :variant '? :omit '(a d ad da p) :transpose (gen-eval 3 '(rnd-sample 3 '(0 13)) :seed 35) :seed 45)
     
     
    More examples:
     
    (progn   (init-seed 53)      (setf segments         (quantize          (pitch-segment-variant           (library 'maderna 'serenata-per-un-satellite nil :random 12)           :percent 20           :segment '(1 2 1 2 1 2)           :position '?           :variant '?           :transpose 6)          '(1 2 3 4 5 6 7 8)))      (ps 'gm :treble (list segments)       :tempo 72)      (init-seed nil)   )
     
     
    (progn   (init-seed 34)      (setf segments         (quantize          (pitch-segment-variant           (library 'maderna 'serenata-per-un-satellite nil :random 12)           :percent 20           :segment '(1 2 1 2 1 2)           :position '?           :variant '?           :transpose 6)          '(1 2 3 4 5 6 7 8)))      (ps 'gm :treble (list segments)       :tempo 72)      (init-seed nil)   )
     
     
     
    Best wishes,
    Janusz
  3. Like
    opmo reacted to AM in convert-to-binary   
    ANTON WEBERN - Variationen für Klavier Op.27, I 
    converted into BINARY INFORMATION // "Verdoppelung der Welt" //
     
    (inspired by Armin Nassehi's Book  "Muster - Theorie der digitalten Gesellschaft")
     
     
     

    Bildschirmaufnahme 2022-01-29 um 13.10.42.mov  
  4. Like
    opmo got a reaction from AM in tempo as FLOAT   
    Maybe a part of the next update 🙂
  5. Like
    opmo reacted to AM in convert-to-binary   
    here is another little function to COMBINE the binary-information i got from CONVERT-TO-BINARY  -> gen a new structure from it
     
    so, with CONVERT-FROM-BINARY and BINARY-LAYER-ADD you could do things like:
    compose music => convert to binary data => generate music by this data  .... ad infinitum 😄 conceptual ....
     
     
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; ADDING 3 BINARY-LAYERS IN A WAY THAT INFORMATION COULD BE ENCODED ;;; first layer with 0/1 ;;; second layer with 0/2 ;;; third layer with 0/4 (defun binary-layer-add (lists) (loop for i in (first lists) for j in (second lists) for k in (if (null (third lists)) (gen-repeat (length (second lists)) 0) (third lists)) collect (+ i (* j 2) (* k 4)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (list-plot (binary-layer-add (list (flatten (convert-to-binary '(c4 cs5 fs3 c5 f5) :bitlength 8)) (flatten (convert-to-binary '(-e h -q h e) :bitlength 8)) (flatten (convert-to-binary '(p p ffff mp mf ) :bitlength 8)))) :join-points t :point-radius 0) (list-plot (binary-layer-add (list (flatten (convert-to-binary '(c4 cs5 fs3 c5 f5) :bitlength 32)) (flatten (convert-to-binary '(-e h -q h e) :bitlength 32)) (flatten (convert-to-binary '(p p ffff mp mf ) :bitlength 32)))) :join-points t :point-radius 0) (list-plot (binary-layer-add (list (flatten (convert-to-binary '(c4 cs5 fs3 c5 f5) :bitlength 16)) (flatten (convert-to-binary '(-e h -q h e) :bitlength 16 :length-resolution 64)) (flatten (convert-to-binary '(p p ffff mp mf ) :bitlength 16)))) :join-points t :point-radius 0)  
  6. Thanks
    opmo reacted to AM in midi-entry / data saving   
    MIDI KEYBOARD
    to
    OSCulator (translates MIDI to OSC)
    to
    OPMO (reading pitch (midi number) and set to variable X)
     
    1) evaluate (setq *osc-receive*.......)
    2) start/evaluate LOOP-section
    3) start LIVE-CODE
    4) play your midi-keyboard
     
    => in every cycle of LIVE-CODING the "keyboard-pitch" will be read --- to variable X -> tempo and pitch are changing (by new cycle start)
     
    5) stop all, incl.  evaluate (process-kill *osc-receive*)
  7. Like
    opmo got a reaction from o_e in Opusmodus 2.2.26862 Update   
    DROP-VOICING
     
    (setf mat '(b2cs4eb4e4 cs3eb4f4gs4 c3d4e4f4 fs2bb3cs4e4))
     
     
    (drop-voicing mat)
     
    The following example returns all chords of type 1:
    (drop-voicing mat :type '(1))
     
     
    In this example we apply a different type to each chord:
    (drop-voicing mat :type '(0 1 2 3))
     
     
    Here the leading voice is set to 'l (lowest voice):
    (drop-voicing mat :type '(0 1 2 3) :leading 'l)
     
    (setf chords '(w b3c4d4e4g4 p h g3b3c4d4e4 mf c4d4e4g4b4 p -                q d4fs4g4b4 b3d4e4fs4g4 b3c4e4g4a4 mf a3c4d4e4f4 p                c4d4e4f4a4 mp d4e4f4a4c5 w bb3d4f4a4 bb3d4eb4f4g4 p                -q eb4f4g4bb4d5 mf c4d4f4a4bb4 mp e4f4g4a4c5 w c4e4g4b4))
     
     
     (drop-voicing chords :type '(0 1 2 3 4 5 4 3 3 1 2 3 4 5 5))
     
     
    (drop-voicing (omn :pitch (library 'standard 'chords 'Giant-Steps)) :type (rnd-sample 32 '(0 1 2 3 4 5) :seed 753) :leading 'l)
     
     
    (setf harm-prog       '(c3g4c5ds5 c3fs4a4d5 g2g4as4d5 c3ds4as4d5         c3ds4a4c5 a2e4a4cs5 d3f4a4d5 e3e4gs4b4 a2e4a4c5         b2ds4fs4b4 e3e4g4b4 ds3c4fs4fs5 e3b3g4e5 e3as4cs5         as2f4as4d5 d3f4as4f5 ds3g4as4ds5 e3g4as4d5 a2e4a4cs5         d3fs4a4d5 g3g4b4d5 c3g4c5ds5 f3gs4c5d5 f3gs4f5         d3g4b4f5 c3g4c5ds5 gs2gs4c5ds5 gs2f4c5d5 d3fs4a4d5         g2f4b4d5 c3ds4g4c5 c3ds4g4c5))
     
    (drop-voicing harm-prog               :type (rnd-sample 32 '(0 1 2 3) :seed 45))
     
    (drop-voicing harm-prog               :type (rnd-sample 32 '(0 1 2 3) :seed 45)               :leading 'l)
  8. Like
    opmo got a reaction from JulioHerrlein in Opusmodus 2.2.26862 Update   
    DROP-VOICING
     
    (setf mat '(b2cs4eb4e4 cs3eb4f4gs4 c3d4e4f4 fs2bb3cs4e4))
     
     
    (drop-voicing mat)
     
    The following example returns all chords of type 1:
    (drop-voicing mat :type '(1))
     
     
    In this example we apply a different type to each chord:
    (drop-voicing mat :type '(0 1 2 3))
     
     
    Here the leading voice is set to 'l (lowest voice):
    (drop-voicing mat :type '(0 1 2 3) :leading 'l)
     
    (setf chords '(w b3c4d4e4g4 p h g3b3c4d4e4 mf c4d4e4g4b4 p -                q d4fs4g4b4 b3d4e4fs4g4 b3c4e4g4a4 mf a3c4d4e4f4 p                c4d4e4f4a4 mp d4e4f4a4c5 w bb3d4f4a4 bb3d4eb4f4g4 p                -q eb4f4g4bb4d5 mf c4d4f4a4bb4 mp e4f4g4a4c5 w c4e4g4b4))
     
     
     (drop-voicing chords :type '(0 1 2 3 4 5 4 3 3 1 2 3 4 5 5))
     
     
    (drop-voicing (omn :pitch (library 'standard 'chords 'Giant-Steps)) :type (rnd-sample 32 '(0 1 2 3 4 5) :seed 753) :leading 'l)
     
     
    (setf harm-prog       '(c3g4c5ds5 c3fs4a4d5 g2g4as4d5 c3ds4as4d5         c3ds4a4c5 a2e4a4cs5 d3f4a4d5 e3e4gs4b4 a2e4a4c5         b2ds4fs4b4 e3e4g4b4 ds3c4fs4fs5 e3b3g4e5 e3as4cs5         as2f4as4d5 d3f4as4f5 ds3g4as4ds5 e3g4as4d5 a2e4a4cs5         d3fs4a4d5 g3g4b4d5 c3g4c5ds5 f3gs4c5d5 f3gs4f5         d3g4b4f5 c3g4c5ds5 gs2gs4c5ds5 gs2f4c5d5 d3fs4a4d5         g2f4b4d5 c3ds4g4c5 c3ds4g4c5))
     
    (drop-voicing harm-prog               :type (rnd-sample 32 '(0 1 2 3) :seed 45))
     
    (drop-voicing harm-prog               :type (rnd-sample 32 '(0 1 2 3) :seed 45)               :leading 'l)
  9. Like
    opmo got a reaction from Stephane Boussuge in Opusmodus 2.2.26862 Update   
    DROP-VOICING
     
    (setf mat '(b2cs4eb4e4 cs3eb4f4gs4 c3d4e4f4 fs2bb3cs4e4))
     
     
    (drop-voicing mat)
     
    The following example returns all chords of type 1:
    (drop-voicing mat :type '(1))
     
     
    In this example we apply a different type to each chord:
    (drop-voicing mat :type '(0 1 2 3))
     
     
    Here the leading voice is set to 'l (lowest voice):
    (drop-voicing mat :type '(0 1 2 3) :leading 'l)
     
    (setf chords '(w b3c4d4e4g4 p h g3b3c4d4e4 mf c4d4e4g4b4 p -                q d4fs4g4b4 b3d4e4fs4g4 b3c4e4g4a4 mf a3c4d4e4f4 p                c4d4e4f4a4 mp d4e4f4a4c5 w bb3d4f4a4 bb3d4eb4f4g4 p                -q eb4f4g4bb4d5 mf c4d4f4a4bb4 mp e4f4g4a4c5 w c4e4g4b4))
     
     
     (drop-voicing chords :type '(0 1 2 3 4 5 4 3 3 1 2 3 4 5 5))
     
     
    (drop-voicing (omn :pitch (library 'standard 'chords 'Giant-Steps)) :type (rnd-sample 32 '(0 1 2 3 4 5) :seed 753) :leading 'l)
     
     
    (setf harm-prog       '(c3g4c5ds5 c3fs4a4d5 g2g4as4d5 c3ds4as4d5         c3ds4a4c5 a2e4a4cs5 d3f4a4d5 e3e4gs4b4 a2e4a4c5         b2ds4fs4b4 e3e4g4b4 ds3c4fs4fs5 e3b3g4e5 e3as4cs5         as2f4as4d5 d3f4as4f5 ds3g4as4ds5 e3g4as4d5 a2e4a4cs5         d3fs4a4d5 g3g4b4d5 c3g4c5ds5 f3gs4c5d5 f3gs4f5         d3g4b4f5 c3g4c5ds5 gs2gs4c5ds5 gs2f4c5d5 d3fs4a4d5         g2f4b4d5 c3ds4g4c5 c3ds4g4c5))
     
    (drop-voicing harm-prog               :type (rnd-sample 32 '(0 1 2 3) :seed 45))
     
    (drop-voicing harm-prog               :type (rnd-sample 32 '(0 1 2 3) :seed 45)               :leading 'l)
  10. Like
    opmo got a reaction from AM in Opusmodus 2.2.26862 Update   
    DROP-VOICING
     
    (setf mat '(b2cs4eb4e4 cs3eb4f4gs4 c3d4e4f4 fs2bb3cs4e4))
     
     
    (drop-voicing mat)
     
    The following example returns all chords of type 1:
    (drop-voicing mat :type '(1))
     
     
    In this example we apply a different type to each chord:
    (drop-voicing mat :type '(0 1 2 3))
     
     
    Here the leading voice is set to 'l (lowest voice):
    (drop-voicing mat :type '(0 1 2 3) :leading 'l)
     
    (setf chords '(w b3c4d4e4g4 p h g3b3c4d4e4 mf c4d4e4g4b4 p -                q d4fs4g4b4 b3d4e4fs4g4 b3c4e4g4a4 mf a3c4d4e4f4 p                c4d4e4f4a4 mp d4e4f4a4c5 w bb3d4f4a4 bb3d4eb4f4g4 p                -q eb4f4g4bb4d5 mf c4d4f4a4bb4 mp e4f4g4a4c5 w c4e4g4b4))
     
     
     (drop-voicing chords :type '(0 1 2 3 4 5 4 3 3 1 2 3 4 5 5))
     
     
    (drop-voicing (omn :pitch (library 'standard 'chords 'Giant-Steps)) :type (rnd-sample 32 '(0 1 2 3 4 5) :seed 753) :leading 'l)
     
     
    (setf harm-prog       '(c3g4c5ds5 c3fs4a4d5 g2g4as4d5 c3ds4as4d5         c3ds4a4c5 a2e4a4cs5 d3f4a4d5 e3e4gs4b4 a2e4a4c5         b2ds4fs4b4 e3e4g4b4 ds3c4fs4fs5 e3b3g4e5 e3as4cs5         as2f4as4d5 d3f4as4f5 ds3g4as4ds5 e3g4as4d5 a2e4a4cs5         d3fs4a4d5 g3g4b4d5 c3g4c5ds5 f3gs4c5d5 f3gs4f5         d3g4b4f5 c3g4c5ds5 gs2gs4c5ds5 gs2f4c5d5 d3fs4a4d5         g2f4b4d5 c3ds4g4c5 c3ds4g4c5))
     
    (drop-voicing harm-prog               :type (rnd-sample 32 '(0 1 2 3) :seed 45))
     
    (drop-voicing harm-prog               :type (rnd-sample 32 '(0 1 2 3) :seed 45)               :leading 'l)
  11. Like
    opmo got a reaction from JulioHerrlein in Opusmodus 2.2.26846 Update   
    2.2.26846
     
    – New Functions:
    PAUSE-SERIES  
    – Fixed:
    VOICE-VARIANT (:rest 's and 'e )  
     
    PAUSE-SERIES
     
    This function removes a series of empty bars when lager then a given number (n).
    (setf omn '((h b5 pp f6) (-w) (-w) (q cs6 p - b5)             (-q. s cs6 mp b5 e gs5 -q.)             (-e b5 mp gs5 b5 -h) (-w) (-w) (q c6 f - cs6)             (-q s e6 ff e g5 s fs6 -q s fs6 b5 e6 g5)             (-w) (-w) (-w)))
     
    (pause-series 1 omn)
     
    (pause-series 0 omn)
     
     
    https://opusmodus.com/forums/downloads/
     
  12. Like
    opmo got a reaction from JulioHerrlein in Opusmodus 2.2.26839 Update   
    2.2.26839

    – New Functions:
    GET-EVENTS VOICE-VARIANT  
    – Changes and Enhancements:
    ELEMENT-ANALYSIS RECURRING-ANALYSIS VARIANT-ANALYSIS  
    – Fixed:
    LENGTH-DIVIDE  
    – Documentation:
    Edit and corrections.
     
    https://opusmodus.com/forums/downloads/
     
     
    VARIANT-ANALYSIS
     
    (setf GV '(#|1|# (h d4 0.54 a4 0.5)            #|2|# (h f4 0.54 d4 0.5)            #|3|# (h db4 0.54 q d4 0.5 e4)            #|4|# (h f4 0.54 tie e e g4 0.5 f4 e4)            #|5|# (q d4 0.54 e4 0.5 f4 g4)            #|6|# (q a4 0.54 e a3 0.5 b3 c4 a3 q f4 tie)            #|7|# (e f4 b3 0.53 q. e4 0.5 e f4 e4 d4)            #|8|# (q e4 0.54 gb4 0.5 h g4 tie)            #|9|# (e g4 a4 0.53 g4 0.5 f4 h e4)            #|10|# (w d4)))  

     
     
    Pitches:
    (variant-analysis '(d4 e4 f4) GV :name "Analisi re-mi-fa") -------------------------------------------------------------- Score: Analisi re-mi-fa Pitches: (d4 e4 f4) -------------------------------------------------------------- P:   4 ((3.5 (d4 e4 f4)) (5.0 (d4 e4 f4)) (6.25 (a3 b3 c4)) (8.0 (e4 gb4 g4))) R:   3 ((4.75 (f4 e4 d4)) (7.625 (f4 e4 d4)) (9.375 (f4 e4 d4))) I:   2 ((4.625 (g4 f4 e4)) (9.25 (g4 f4 e4))) RI:  4 ((3.0 (db4 d4 e4)) (3.75 (e4 f4 g4)) (5.25 (e4 f4 g4)) (8.25 (gb4 g4 a4))) --------------------------------------------------------------  
    (variant-analysis '(f4 b3) GV :name "Analisi re-si") -------------------------------------------------------------- Score: Analisi re-si Pitches: (f4 b3) -------------------------------------------------------------- P:   1 ((6.75 (f4 b3))) R:   0 I:   0 RI:  1 ((6.75 (f4 b3))) --------------------------------------------------------------  
    Intervals:
    (variant-analysis '(2 1) GV :name "tricordo minore melodico ascendente") -------------------------------------------------------------- Score: tricordo minore melodico ascendente Intervals: (2 1) -------------------------------------------------------------- P:   4 ((3.5 (2 1)) (5.0 (2 1)) (6.25 (2 1)) (8.0 (2 1))) R:   3 ((4.75 (-1 -2)) (7.625 (-1 -2)) (9.375 (-1 -2))) I:   2 ((4.625 (-2 -1)) (9.25 (-2 -1))) RI:  4 ((3.0 (1 2)) (3.75 (1 2)) (5.25 (1 2)) (8.25 (1 2))) --------------------------------------------------------------  
    Lengths:
    (variant-analysis '(q e) GV :name "GV - q e") -------------------------------------------------------------- Score: GV - q e Lengths: (1/4 1/8) -------------------------------------------------------------- P:   1 (1/4 1/8) (6.0) R:   0 I:   0 RI:  2 (1/8 1/4) (4.875 7.875) --------------------------------------------------------------  
     
     
    ELEMENT-ANALYSIS
     
    (setf GV '(#|1|# (h d4 0.54 a4 0.5)            #|2|# (h f4 0.54 d4 0.5)            #|3|# (h db4 0.54 q d4 0.5 e4)            #|4|# (h f4 0.54 tie e e g4 0.5 f4 e4)            #|5|# (q d4 0.54 e4 0.5 f4 g4)            #|6|# (q a4 0.54 e a3 0.5 b3 c4 a3 q f4 tie)            #|7|# (e f4 b3 0.53 q. e4 0.5 e f4 e4 d4)            #|8|# (q e4 0.54 gb4 0.5 h g4 tie)            #|9|# (e g4 a4 0.53 g4 0.5 f4 h e4)            #|10|# (w d4)))  

     
     
    (element-analysis GV :name "Analisi statistica") -------------------------------------------------------------- Score: Analisi statistica Number of bars: 10 Span: 10 -------------------------------------------------------------- Length Values: (1/8 1/4 3/8 1/2 5/8 1) Low: 1/8 High: 1 --------------------------------------------------------------     Values | Times |     Percent | Duration | Span Percent     -----------|-------|-------------|----------|-----------------        1/8 |    14 |     41.1765 |     1.75 |         17.5        1/4 |     9 |     26.4706 |     2.25 |         22.5        1/2 |     6 |     17.6471 |      3.0 |         30.0        5/8 |     2 |      5.8824 |     1.25 |         12.5        3/8 |     2 |      5.8824 |     0.75 |          7.5          1 |     1 |      2.9412 |      1.0 |         10.0 --------------------------------------------------------------      Total      34         100.0       10.0          100.0 -------------------------------------------------------------- Length Rest Values: none -------------------------------------------------------------- Pitch Values: (a3 b3 c4 cs4 d4 e4 f4 fs4 g4 a4) Low: a3 High: a4 --------------------------------------------------------------     Values | Times |     Percent | Duration | Span Percent     -----------|-------|-------------|----------|-----------------         f4 |     7 |     20.5882 |    2.125 |        21.25         e4 |     7 |     20.5882 |    1.875 |        18.75         d4 |     6 |     17.6471 |    2.625 |        26.25         g4 |     4 |     11.7647 |    1.125 |        11.25         a4 |     3 |      8.8235 |    0.875 |         8.75         b3 |     2 |      5.8824 |     0.25 |          2.5         a3 |     2 |      5.8824 |     0.25 |          2.5        fs4 |     1 |      2.9412 |     0.25 |          2.5        cs4 |     1 |      2.9412 |      0.5 |          5.0         c4 |     1 |      2.9412 |    0.125 |         1.25 --------------------------------------------------------------      Total      34         100.0       10.0          100.0 -------------------------------------------------------------- Interval Values: (0 1 2 3 4 5 6 7 8 12) Low: 0 High: 12 --------------------------------------------------------------     Values | Times |     Percent | Duration | Span Percent     -----------|-------|-------------|----------|-----------------          2 |    15 |     44.1176 |    3.625 |        36.25          1 |    10 |     29.4118 |     3.25 |         32.5          3 |     2 |      5.8824 |    0.625 |         6.25         12 |     1 |      2.9412 |    0.125 |         1.25          8 |     1 |      2.9412 |    0.375 |         3.75          7 |     1 |      2.9412 |      0.5 |          5.0          6 |     1 |      2.9412 |    0.125 |         1.25          5 |     1 |      2.9412 |    0.375 |         3.75          4 |     1 |      2.9412 |      0.5 |          5.0          0 |     1 |      2.9412 |      0.5 |          5.0 --------------------------------------------------------------      Total      34         100.0       10.0          100.0 -------------------------------------------------------------- Velocity Values: (0.5 0.53 0.54) Low: 0.5 High: 0.54 --------------------------------------------------------------     Values | Times |     Percent | Duration | Span Percent     -----------|-------|-------------|----------|-----------------        0.5 |    25 |     73.5294 |    6.875 |        68.75       0.54 |     7 |     20.5882 |    2.875 |        28.75       0.53 |     2 |      5.8824 |     0.25 |          2.5 --------------------------------------------------------------      Total      34         100.0       10.0          100.0 -------------------------------------------------------------- Articulation Values: none --------------------------------------------------------------  
    Bar analysis:
    (element-analysis GV :name "Analisi statistica 3" :bar 3) -------------------------------------------------------------- Score: Analisi statistica 3 Bar number: 3 Bar span: 1 -------------------------------------------------------------- Length Values: (1/4 1/2) Low: 1/4 High: 1/2 --------------------------------------------------------------     Values | Times |     Percent | Duration | Span Percent     -----------|-------|-------------|----------|-----------------        1/4 |     2 |     66.6667 |      0.5 |         50.0        1/2 |     1 |     33.3333 |      0.5 |         50.0 --------------------------------------------------------------      Total       3         100.0        1.0          100.0 -------------------------------------------------------------- Length Rest Values: none -------------------------------------------------------------- Pitch Values: (cs4 d4 e4) Low: cs4 High: e4 --------------------------------------------------------------     Values | Times |     Percent | Duration | Span Percent     -----------|-------|-------------|----------|-----------------         e4 |     1 |     33.3333 |     0.25 |         25.0         d4 |     1 |     33.3333 |     0.25 |         25.0        cs4 |     1 |     33.3333 |      0.5 |         50.0 --------------------------------------------------------------      Total       3         100.0        1.0          100.0 -------------------------------------------------------------- Interval Values: (0 1 2) Low: 0 High: 2 --------------------------------------------------------------     Values | Times |     Percent | Duration | Span Percent     -----------|-------|-------------|----------|-----------------          2 |     1 |     33.3333 |     0.25 |         25.0          1 |     1 |     33.3333 |     0.25 |         25.0          0 |     1 |     33.3333 |      0.5 |         50.0 --------------------------------------------------------------      Total       3         100.0        1.0          100.0 -------------------------------------------------------------- Velocity Values: (0.5 0.54) Low: 0.5 High: 0.54 --------------------------------------------------------------     Values | Times |     Percent | Duration | Span Percent     -----------|-------|-------------|----------|-----------------        0.5 |     2 |     66.6667 |      0.5 |         50.0       0.54 |     1 |     33.3333 |      0.5 |         50.0 --------------------------------------------------------------      Total       3         100.0        1.0          100.0 -------------------------------------------------------------- Articulation Values: none --------------------------------------------------------------  
     
     
    RECURRING-ANALYSIS
     
    (setf rh '((-s) (e f4e5 pp -s db5)            (-s) (-s eb4 pp c4d5 -)            (-s) (-s c4d5 pp eb4 -)            (-s) (e db5 pp -s f4e5)            (-s) (s gb4f5 p a5 -)            (s d4ab4db5 p bb4 -) (-s a5 p gb4f5)            (-s) (s b5 f gb4g5 -)            (s a3bb4 f ab4 -) (s c4d5 f> eb4 -)            (s db5 f> f4e5 -) (-s)            (s gb4f5 p a5 d4ab4db5 bb4 -) (-s)            (-s a5 pp gb4f5) (-s)            (-t b2 f e3 bb3 - d5 c4eb4) (-s)            (s db3 f - s. g5 -t) (s gb4f5 p)            (-t a3 mp ab3 mf -s. t db5f5 f c4 -) (s e3e4 p)            (-t s. d2 f -s ab5 mf) (-s)            (t gb4a4 p g3 mp - b2 f e3 bb3 e3 a3 eb4 - g5 mf f4ab4 mp) (-s)            (s f2 f - s. c6 -t) (s b2bb3 p)            (-s t db5 mp -s. t gb5bb5 f4 f -) (t a3 f ab2 - ab2 a3)            (-t f4 f gb5bb5 mf) (-t a3 mp d4ab4 c4 p bb5db6 mf)            (-t b2 f3 b2 -) (t bb5db6 c5 f d4ab4 a3 p)            (-s) (t b4eb5 p bb3 -)            (t d4 p db3 - db3 d4) (-t bb3 p b4eb5)            (-s) (-s eb5 p bb3b4 -) (-s)            (e d4db5 p -s c5) (-s)            (e c5 p -s d4db5) (-s)            (-s bb3b4 p eb5 -) (-s)            (-s ab3g4 p e4 mf) (-s c4gb4b4 f5)            (-s db5 mp bb3a4) (-s)            (-s eb4d5 p gb4) (-s e4 p f3g4)            (-s b3 p a2bb3) (-s c5db6 pp ab5)            (-s) (-s e5eb6 p g5 c4f4b4 p> gb4)            (-s) (-e) (e d5ab5db6 pp)))  
    Searching for pitches:
    (recurring-analysis :pitch rh                     :name "Webern, Variationen für Klavier Op.27, I, rh") -------------------------------------------------------------- Score: Webern, Variationen für Klavier Op.27, I, rh -------------------------------------------------------------- Frequently recurring series: Found: 5 (gb4 f5) Longest recurring series: Found: 2 (c4 d5 eb4 db5 f4 e5 gb4 f5 a5 d4 ab4 db5 bb4 a5 gb4 f5) --------------------------------------------------------------  
    Searching for intervals:
    (recurring-analysis :interval rh                     :name "Webern, Variationen für Klavier Op.27, I, rh") -------------------------------------------------------------- Score: Webern, Variationen für Klavier Op.27, I, rh -------------------------------------------------------------- Frequently recurring series: Found: 6 (5 6) Longest recurring series: Found: 2 (14 -11 10 -8 11 -10 11 4 -19 6 5 -3 11 -15 11) --------------------------------------------------------------  
    Searching for lengths:
    (recurring-analysis :length rh                     :name "Webern, Variationen für Klavier Op.27, I, rh") -------------------------------------------------------------- Score: Webern, Variationen für Klavier Op.27, I, rh -------------------------------------------------------------- Frequently recurring series: Found: 29 (s -) Longest recurring series: Found: 2 (s - = = - = = - - = = - = = - = = - = = -) --------------------------------------------------------------  
    Searching for velocities:
    (recurring-analysis :velocity rh                     :name "Webern, Variationen für Klavier Op.27, I, rh") -------------------------------------------------------------- Score: Webern, Variationen für Klavier Op.27, I, rh -------------------------------------------------------------- Frequently recurring series: Found: 18 (p =) Longest recurring series: Found: 2 (mp f = = = = = mf mp) Found: 2 (p = = = = = = = =) --------------------------------------------------------------  
    Searching for values:
    (setf population (gen-population 16 3 7 :seed 453)) (setf pitches (vector-to-pitch '(0 24) population)) (recurring-analysis :values pitches) -------------------------------------------------------------- Frequently recurring series: Found: 5 (c6 c4) Longest recurring series: Found: 2 (gs5 c6) Found: 2 (fs5 c4) Found: 3 (c4 e4) Found: 2 (e4 c6) Found: 2 (c6 gs5) Found: 5 (c6 c4) Found: 2 (cs4 c6) Found: 4 (c4 c6) Found: 2 (c4 cs4) Found: 2 (bb4 c4) Found: 2 (c6 c6) --------------------------------------------------------------  
    (recurring-analysis :values (modus pitches) :name "Modus") -------------------------------------------------------------- Score: Modus -------------------------------------------------------------- Frequently recurring series: Found: 11 (0 0) Longest recurring series: Found: 2 (0 4 0 1) --------------------------------------------------------------  
     
     
    GET-EVENTS
     
    This function allows you to assemble a new sequence from a number of events of a given bar and a given omn sequence.
     
    (setf seq1 '((e c4e4g4 he c5)              (q c4 c4 c4 - - c4)              (q cs4 cs4 - - cs4 cs4)              (e c4 cs4d4eb4 d4 cs4 c4 cs5)              (e c4 e4 g4 he c5)              (q c4 c4 c4 - - c4)              (q cs4cs4 - - cs4 cs4)              (e c4 cs4d6 d4 cs4 c4 cs5))) (setf seq2 '((he. c5) (q cs7) (s a4 q.. e7 qs d6) (h f6)              (-he) (e. gs6) (e bb4) (-hs) (h. g6) (-q.))) (setf seq3       '((h e4f5 p c5a4) (h b3d3 gs4eb2fs3) (h bb2g5cs5 gs4d4eb2)         (w bb2 mp) (h g3f4cs5 p c5) (h fs5a5b3 e4b3) (h bb2)         (w e2eb4) (h c5cs6 a5) (h f4g3 gs4d3) (h fs5 bb2fs5g3)         (h d3e5eb4 gs4) (h a2c6 f2) (h b0 cs6c5) (h gs4d3)))  
    (get-events '((seq1 1)               (seq2 3)               (seq3 5))) => (e c4e4g4 mf he c5 s a4 q.. e7 qs d6 h g3f4cs5 p c5)  
    (get-events '((seq1 1 1..3)               (seq2 3 1)               (seq3 5 1))) => (e c4e4g4 mf he c5 s a4 h g3f4cs5 p)  
     
    (get-events '((seq1 2 1..3)               (seq3 3)               (seq3 1 (1 2)))) => (q c4 mf c4 c4 h bb2g5cs5 p gs4d4eb2 e4f5 c5a4)  
     
     
    VOICE-VARIANT
     
    This generates a new sequence by applying a number of processes and mixing the result with the original material.
     
    Starting material:
    (setf vec (gen-noise 60 :type :gaussian :seed 45)) (setf pitches (filter-repeat 1 (vector-to-pitch '(e4 g5) vec))) (setf omn (make-omn :length '(e) :pitch pitches :span :pitch)) (setf mat (omn-to-time-signature omn '(4 4)))   
     
    I.
    In the first example we use the default division 2 value on each of the given lengths (1/8 equal 1/16 1/16) with interval transposition set to 4, for the entier process. Please note, before applying the function the original material is transposed by one semitone:
    (progn   (setf mat-transp (pitch-transpose 1 mat))   (setf variant (voice-variant mat-transp :interval 4))      (def-score var1              (               :key-signature 'chromatic               :flexible-clef t               :time-signature '(2 4)               :tempo 86               :layout (list                        (treble-layout 'v1 :name "Material" :abbr "M")                        (treble-layout 'v2 :name "Variant" :abbr "V"))               )     (v1 :omn mat         :channel 1         :sound 'gm         :program 1)          (v2 :omn variant         :channel 2))      (audition-musicxml-last-score)   )
     
    II.
    Below the time-signature 4/4 defines the time for each of the two interval values. To the first bar of the original material we applied interval 4, to the second bar we applied interval 13, and so on. Both values are looped to satisfy the original bar count:
    (progn   (setf mat-transp (pitch-transpose 1 mat))   (setf variant (voice-variant mat-transp :interval '((4) (13))))      (def-score var2              (               :key-signature 'chromatic               :flexible-clef t               :time-signature '(2 4)               :tempo 86               :layout (list                        (treble-layout 'v1 :name "Material" :abbr "M")                        (treble-layout 'v2 :name "Variant" :abbr "V"))               )     (v1 :omn mat         :channel 1         :sound 'gm         :program 1)          (v2 :omn variant         :channel 2))      (audition-musicxml-last-score)   )
     
    III.
    In this example the measure value overwrites the original time-signature 4/4 to 1/4 which in effect will shorten the time by 4 for each interval value. The variant 'i (inversion) is applied to a  measure and to the original material before other processes happen:
    (progn   (setf mat-transp (pitch-transpose 1 mat))   (setf variant (voice-variant mat-transp                           :measure 1/4                           :interval '((4) (13))                           :variant 'i))      (def-score var3              (               :key-signature 'chromatic               :flexible-clef t               :time-signature '(2 4)               :tempo 86               :layout (list                        (treble-layout 'v1 :name "Material" :abbr "M")                        (treble-layout 'v2 :name "Variant" :abbr "V"))               )     (v1 :omn mat         :channel 1         :sound 'gm         :program 1)          (v2 :omn variant         :channel 2))      (audition-musicxml-last-score)   )
     
    IV.
    In the following example we generate two sequences using the same material with equal processing values. With the :variant set to '? (random) we potentially get a different result in each of the sequences on every-other measure:
    (progn   (setf vec (gen-noise 30 :type :gaussian :seed 45))   (setf pitches (filter-repeat 1 (vector-to-pitch '(e1 g6) vec)))      (setf omn (make-omn :length '(q q q q)                       :pitch pitches                       :span :pitch))      (setf mat (omn-to-time-signature omn '(4 4)))   (setf mat-transp (pitch-transpose -12 mat))      (setf v1 (voice-variant mat                           :measure 1                           :divide 5                           :interval '((0) (13))                           :variant '(p ?)))      (setf v2 (voice-variant mat-transp                           :measure 1                           :divide 5                           :interval '((0) (13))                           :variant '(p ?)))      (def-score var4              (               :key-signature 'chromatic               :flexible-clef t               :time-signature '(2 4)               :tempo 86               :layout (list                        (treble-layout 'v1 :name "Variant1" :abbr "V1")                        (treble-layout 'v2 :name "Variant2" :abbr "V2"))               )     (v1 :omn v1         :channel 1         :sound 'gm         :program 1)          (v2 :omn v2         :channel 2))      (audition-musicxml-last-score)   )
     
    V.
    To create more interesting rhythms, we can set the multiply value to control how the basic value is divided up. If, for example the length is 1/4 and the divide value is 5, therefore our basic value is 1/20. If the multiply value is 2 (maximum) the basic value 1/20 is to be multiplied by either 1 (giving a 1/20 length) or 2 (giving a 1/10 length). We can therefore create more interesting divisions to a given duration by introducing this form of variation:
    (progn   (setf vec (gen-noise 60 :type :gaussian :seed 9847))   (setf pitches (filter-repeat 1 (vector-to-pitch '(e1 g4) vec)))      (setf omn (make-omn :length '(q q q q h h w e e e e e e e e)                       :pitch pitches                       :span :pitch))      (setf lv (length-weight omn :weight '(6 1)))   (setf mat (omn-to-time-signature lv '(4 4)))   (setf transp (pitch-transpose 12 mat))      (setf variant (voice-variant transp                                :divide '(2 3 2 2 5 5 4 2 2 2 2 2 2 2 2)                                :multiply '(2 1 1 2 2 2 1 2 2 1 2 1 1)                                :rest '?                                :interval '((0 1 2 3) (13) (3 2 1 0) (13))                                :variant '?))      (def-score var5              (               :key-signature 'chromatic               :flexible-clef t               :time-signature '(2 4)               :tempo 86               :layout (list                        (treble-layout 'v1 :name "Material" :abbr "M")                        (treble-layout 'v2 :name "Variant" :abbr "V"))               )     (v1 :omn mat         :channel 1         :sound 'gm         :program 1)          (v2 :omn variant         :channel 2)     )   (audition-musicxml-last-score)   )
     
    VI.
    Source material: Right hand part of the variations op.27 by A. Webern:
    (progn   (setf rh         '((-s) (e f4e5 pp -s db5)           (-s) (-s eb4 pp c4d5 -)           (-s) (-s c4d5 pp eb4 -)           (-s) (e db5 pp -s f4e5)           (-s) (s gb4f5 p a5 -)           (s d4ab4db5 p bb4 -) (-s a5 p gb4f5)           (-s) (s b5 f gb4g5 -)           (s a3bb4 f ab4 -) (s c4d5 f> eb4 -)           (s db5 f> f4e5 -) (-s)           (s gb4f5 p a5 d4ab4db5 bb4 -) (-s)           (-s a5 pp gb4f5) (-s)           (-t b2 f e3 bb3 - d5 c4eb4) (-s)           (s db3 f - s. g5 -t) (s gb4f5 p)           (-t a3 mp ab3 mf -s. t db5f5 f c4 -) (s e3e4 p)           (-t s. d2 f -s ab5 mf) (-s)           (t gb4a4 p g3 mp - b2 f e3 bb3 e3 a3 eb4 - g5 mf f4ab4 mp) (-s)           (s f2 f - s. c6 -t) (s b2bb3 p)           (-s t db5 mp -s. t gb5bb5 f4 f -) (t a3 f ab2 - ab2 a3)           (-t f4 f gb5bb5 mf) (-t a3 mp d4ab4 c4 p bb5db6 mf)           (-t b2 f3 b2 -) (t bb5db6 c5 f d4ab4 a3 p)           (-s) (t b4eb5 p bb3 -)           (t d4 p db3 - db3 d4) (-t bb3 p b4eb5)           (-s) (-s eb5 p bb3b4 -) (-s)           (e d4db5 p -s c5) (-s)           (e c5 p -s d4db5) (-s)           (-s bb3b4 p eb5 -) (-s)           (-s ab3g4 p e4 mf) (-s c4gb4b4 f5)           (-s db5 mp bb3a4) (-s)           (-s eb4d5 p gb4) (-s e4 p f3g4)           (-s b3 p a2bb3) (-s c5db6 pp ab5)           (-s) (-s e5eb6 p g5 c4f4b4 p> gb4)           (-s) (-e) (e d5ab5db6 pp)))      (setf augmentation (length-augmentation 4 rh))   (setf mat (omn-to-time-signature augmentation '(4 4)))   (setf mat1 (pitch-transpose 12 mat))   (setf mat2 (pitch-transpose -12 mat))      (setf p1 (voice-variant mat1                           :measure '(1/2 1 1)                           :divide (rnd-sample 24 '(2 3 5))                           :rest '(? n n n ?)                           :interval (rnd-sample 24 '((0) (6) (13)))                           :variant (rnd-sample 24 '(i r ri))))      (setf p2 (voice-variant mat2                           :measure '(1/2 1 1)                           :divide (rnd-sample 24 '(1 2))                           :rest '(? n n n ?)                           :interval (rnd-sample 24 '((0) (6) (13)))                           :variant (rnd-sample 24 '(i r ri))))      (setf v1 (length-weight p1 :weight '(7 2)))   (setf v2 (length-weight p2 :weight '(7 1)))      (def-score var6              (               :key-signature 'chromatic               :flexible-clef t               :time-signature '(2 4)               :tempo 86               :layout (list                        (treble-layout 'v1 :name "Variant1" :abbr "V1")                        (treble-layout 'v2 :name "Variant2" :abbr "V2"))               )     (v1 :omn v1         :channel 1         :sound 'gm         :program 1)          (v2 :omn v2         :channel 2))      (audition-musicxml-last-score)   )  
     
    Best wishes,
    Janusz
     
     
  13. Like
    opmo reacted to Stephane Boussuge in Septuor "Trapped in process"   
  14. Thanks
    opmo got a reaction from o_e in OMN decoding problem with ties   
    The tie is a special case and is not part of the length.
     
    (setf len (omn-merge-ties '((q c5 b4 q. a4 e g4) (q db4 tie e e c4 bb3 ab4 q f4)))) (omn :length len) => ((1/4 1/4 3/8 1/8) (3/8 1/8 1/8 1/8 1/4))
    Example:
    (disassemble-omn len) => (:length ((1/4 1/4 3/8 1/8) (1/4 1/8 1/8 1/8 1/8 1/4))             :pitch ((c5 b4 a4 g4) (db4 db4 c4 bb3 ab4 f4))             :velocity ((mf mf mf mf) (mf mf mf mf mf mf))             :articulation ((- - - -) (tie - - - - -))) (apply 'make-omn (disassemble-omn len)) => ((q c5 b4 q. a4 e g4) (q db4 tie e e c4 bb3 ab4 q f4))  
  15. Like
    opmo got a reaction from JulioHerrlein in OMN decoding problem with ties   
    The tie is a special case and is not part of the length.
     
    (setf len (omn-merge-ties '((q c5 b4 q. a4 e g4) (q db4 tie e e c4 bb3 ab4 q f4)))) (omn :length len) => ((1/4 1/4 3/8 1/8) (3/8 1/8 1/8 1/8 1/4))
    Example:
    (disassemble-omn len) => (:length ((1/4 1/4 3/8 1/8) (1/4 1/8 1/8 1/8 1/8 1/4))             :pitch ((c5 b4 a4 g4) (db4 db4 c4 bb3 ab4 f4))             :velocity ((mf mf mf mf) (mf mf mf mf mf mf))             :articulation ((- - - -) (tie - - - - -))) (apply 'make-omn (disassemble-omn len)) => ((q c5 b4 q. a4 e g4) (q db4 tie e e c4 bb3 ab4 q f4))  
  16. Thanks
    opmo got a reaction from JulioHerrlein in Bug on file icons   
    You have two apps in you computer.
  17. Like
    opmo got a reaction from JulioHerrlein in Bug on file icons   
    If you open .opmo file in other text editor (like Emacs etc...) then the icon can/will change.
    Open Info with the file and select Open with: Opusmodus.
    This is how macOS works.
  18. Like
    opmo reacted to Stephane Boussuge in Short study, Melody on texture   
    Hi,
    here's a short experiment/study composed today for mezzo-soprano, flute, clarinet and bassoon.
     
    Score is a bit commented for clarity and study purpose.
     
    All the best to all OM users.
     
    SB.
     
     
    MelodyOnTexture.mp3
    MelodyOnTexture1GM.opmo
  19. Like
    opmo reacted to Stephane Boussuge in Trapped Septuor 413188   
    Hi,
     
    one more output just for fun !
     
    S.
     
     
    Trapped-Septuor-888684.mp3
  20. Like
    opmo reacted to Stephane Boussuge in Trapped Septuor 413188   
    Hi,
     
    here's one of raw outputs from an Opusmodus score I'm working on actually.
     
    That's a work in progress but will be fully documented later in the future...
     
    Stéphane
     
    TrappedSeptuor413188.mp3
    Trapped-Septuor-413188.pdf
  21. Like
    opmo got a reaction from AM in Opusmodus 2.2.26807 Update   
    2.2.26807 

    – Fixed:
    POLYPHONY OMN-DICTUM
    – Additions:
    MICROPOLYPHONY - length-prob, interval-prob (probability).  POLYPHONY - sustain (overlap).
    – Documentation:
    Edit and changes   
  22. Like
    opmo got a reaction from JulioHerrlein in Opusmodus 2.2.26807 Update   
    2.2.26807 

    – Fixed:
    POLYPHONY OMN-DICTUM
    – Additions:
    MICROPOLYPHONY - length-prob, interval-prob (probability).  POLYPHONY - sustain (overlap).
    – Documentation:
    Edit and changes   
  23. Thanks
    opmo reacted to Stephane Boussuge in Producing new lines of pitches of various lengths, all ending on the same bar.   
    Hi Tom,
    hope this help...
     
    (setf pitches '(fs3 e3 gs3 b2 a3 fs4 d4 b5 e4 gs4 fs4 gs4 cs4 fs4 b3 e4 fs4)) (setf basspitches '(fs2 cs3 a2 e3 fs3 d3 b3 gs3 cs4 e3 cs3 fs3 d3 b3 gs2 fs2)) ;; generate some length for basspitches (setf basslen (rnd-sample (length basspitches) '(1/2 1/4))) ;; get the span of basslen (setf basspan (get-span basslen)) ;; generate some length for pitches (setf pitcheslen (rnd-sample (length pitches) '(1/2 1/4))) ;; apply the span of basslength to pitchlen using the length-span function (setf pitcheslen-spanned (length-span basspan pitcheslen)) ;; Assemble the material into 2 OMN phrases (setf ph1 (make-omn :pitch pitches :length pitcheslen-spanned )) (setf ph2 (make-omn :pitch basspitches :length basslen )) ;; Output the 2 phrases (ps 'gm :afl (list ph1) :bn (list ph2))  
    S.
  24. Like
    opmo got a reaction from Stephane Boussuge in Opusmodus 2.2.26807 Update   
    2.2.26807 

    – Fixed:
    POLYPHONY OMN-DICTUM
    – Additions:
    MICROPOLYPHONY - length-prob, interval-prob (probability).  POLYPHONY - sustain (overlap).
    – Documentation:
    Edit and changes   
  25. Thanks
    opmo reacted to Stephane Boussuge in Counterpoint Compilation Time   
    Hi,
     
    some small corrections :
     
    (progn ;; Global SEED (init-seed 15342) (setf melody1a (length-augmentation 2'((-h. q g4) (q. g4 e e4 q e4 -q) (-h. q g4) (q. g4 e d4 q d4 -q) (-h. q e4) (q f4 g4 a4 b4) (h. g4 -q)))) (setf melody1b (length-augmentation 3 '((-h. q g4) (q. g4 e e4 q e4 -q) (-h. q g4) (q. g4 e d4 q d4 -q)))) ;; Patterns (setf scale '(c4 eb4 f4 g4 ab4)) (setf p1 (tonality-map '(scale :map octave :closest up) melody1a) p2 (tonality-map '(scale :map octave :closest up) melody1b) ) (setf patterns (list p1 p1 p2)) (setf dictum-a '(((1 2 3) :methods ((dl1) (dl1 t-12 pr1) (dl1 t-24))))) ;; Sections (setf sec-a (counterpoint patterns dictum-a )) ;; Assemble Voices (assemble-voices 'voice sec-a) ;; Preview Score (ps 'gm :hn (list voice1) :tbn (list voice2) :tbn (list voice3) :time-signature '(4 4) ) ;; Global SEED back to NIL (init-seed nil) ) S.
×
×
  • Create New...

Important Information

Terms of Use Privacy Policy