Jump to content

JulioHerrlein

Members
  • Posts

    819
  • Joined

  • Last visited

Reputation Activity

  1. Like
    JulioHerrlein reacted to opmo in Opusmodus 1.3.24622   
    Free update for Opusmodus 1.3. users.
    It includes a support for a second screen and multi voice snippets.
    The new UNFOLD system opens up a whole new set of possibilities for the composer using OPUSMODUS.
    Additional library directory: 'Def-Instrument-Sets'. 
     
    New functions:
    DEF-INSTRUMENT-SETS
    Use this function to define the instrument-sets with a given name. With named instrument-sets a composer can customise OPUSMODUS to reflect MIDI synthesisers or samplers which a studio system (inboard or outboard) might contain. The DEF-INSTRUMENT-SETS function is an essential companion to the PS function (PS stands for ‘Preview Score’ or, ‘Preview Snippet’). To create instrument-sets is fairly easy to do as it resembles the instrument setup from the DEF-SCORE instance.
     
    The instrument-set template:
    <instrument-name> (:layout <layout>   :port <port>   :channel <channel>   :sound <sound-set>   :program <program>   :controllers <controllers>   :pan <panning>   :volume <volume>)  
    To explain how it all works we will define new instrument-sets with two instruments. In our example we will use :oboe and :bassoon as our instrument names with a library name: my-inst. The next step we need to do is to select the corresponding instrument layout. The predefined layouts you will find in the ‘Instrument Layout Presets’ document in the System/Layout library:
     

     
    Examples:
    (def-instrument-sets my-inst                      :instruments   (:group group           :oboe           (:layout oboe-layout                    :port nil                    :channel 1                    :sound 'gm                    :program '(oboe)                    :controllers nil                    :pan (pan 0)                    :volume 92)           :bassoon           (:layout bassoon-layout                    :port nil                    :channel 2                    :sound 'gm                    :program '(bassoon)                    :controllers nil                    :pan (pan -10)                    :volume 92)           ))  
    Here is how an instrument from a defined instrument-sets name might be entered into PS:
    (ps 'my-inst     :oboe (list '((s a4 leg d5 leg fs4 leg d5 leg g4 leg d5)                   (s a4 leg d5 leg fs4 leg d5 leg g4 leg d5)                   (s a4 leg d5 leg cs5 leg b4 leg a4 leg g4 leg)                   (s fs4 leg d4 leg e4 leg cs4 leg e d4)))     :bassoon (list '((e fs3 d3 e3)                      (e fs3 d3 e3)                      (e fs3 g3 a3)                      (e d3 a2 d2)))     :key-signature '(d maj)     :time-signature '(3 8 1)     :tempo 112)  
    You can define as many instrument-sets instances as needed.
     
     
    PS
    Use this function if you are looking for a quick preview of your score or when a snippet (especially for education) needs a full representation of the intended notation. The PS function name stands for ‘Preview Score’ or ‘Preview Snippet’. In the following examples we use the default instrument-sets library, defined in the ‘GM Instrument Sets.lisp’ file, which you will find in the Library panel. How to create your own instrument-sets library, you will find in the DEF-INSTRUMENT-SETS document.
     
    Instrument treble:
    (ps 'gm :treble (list '((s a4 leg d5 leg fs4 leg d5 leg g4 leg d5)                 (s a4 leg d5 leg fs4 leg d5 leg g4 leg d5)                 (s a4 leg d5 leg cs5 leg b4 leg a4 leg g4 leg)                 (s fs4 leg d4 leg e4 leg cs4 leg e d4)))     :key-signature '(d maj)     :time-signature '(3 8 1)     :tempo 112)
     
    Instrument piano:
    (ps 'gm :p (list '((s a4 leg d5 leg fs4 leg d5 leg g4 leg d5)                (s a4 leg d5 leg fs4 leg d5 leg g4 leg d5)                (s a4 leg d5 leg cs5 leg b4 leg a4 leg g4 leg)                (s fs4 leg d4 leg e4 leg cs4 leg e d4))              '((e fs3 d3 e3)                (e fs3 d3 e3)                (e fs3 g3 a3)                (e d3 a2 d2)))     :key-signature '(d maj)     :time-signature '(3 8 1)     :tempo 112     :title "G. Ph. Telemann, 12 Fantasie per clavicembalo TWV 33-n.1, 1732")  

     
    Examples:
    The examples below demonstrate how quickly you can preview your progress at any stage of your work ie. voices, instrumentation etc…
     
    (setf p1 '(q d4 pp s eb4 < leg g4 < leg bb4 < leg a4 q. cs5 mf -e       3q gs5 > leg fs5 > leg c5 > b4 > leg f4 leg e4) p2 '(t d4 < leg eb4 < leg g4 < leg bb4 q. a4 marc       t fs4 mf leg gs4 leg e. c5 e b4 t f5 leg e5 leg d5 leg       eb5 3q bb5 > a4 > bb5 > e a4 pp stacc -e) p3 '(q d5 leg eb5 3q g4 stacc bb4 stacc a4 stacc       e. cs4 marc s gs4 leg q gs4 -q) p4 '(-q. e d4 pp q. eb5 mf e g4 q bb4 trem a4 trem) p5 '(q. fs3 pp 3e c3 < leg b4 < leg f4 e d3 mf s eb3 leg       g3 leg bb3 leg a3 e fs3 leg fs3 3e gs4 > stacc       c5 > stacc b5 > stacc t f5 pp e.. e5) p6 '(q cs3 pp -q t gs3 marc e.. fs3 mf leg e c3 -e       t b3 leg f3 q.. e4 pp) )  
    Please note how the list function is used to enclose the instrument voices. The number of voices in an instrument should not exceed the layout of a particular instrument. For example a piano uses a two staff notation therefore the input should be a two lists in a list (list (list right-hand) (list left-hand)).
     
    (ps 'gm :p (list (list p1) (list p6)))  

     
     
    Instrument oboe, clarinet and bassoon:
    (ps 'gm :ob (list p1)     :cl (list p3)     :bn (list p6))  

     
    Brass Quintet:
    (ps 'gm :b5 (list p1 p2 p3 p4 p5))  
     

     
     
     
    DEF-UNFOLD
    UNFOLD
     
    The DEF-UNFOLD and UNFOLD function opens up a whole new set of possibilities for the composer using OPUSMODUS. It can prove a very powerful tool in defining methods (functions) from the outset, for a specific work or as a global index of your most used functions. To be able to store methods, processes and solutions and call them at anytime becomes a valuable resource for a composers workflow. This function is a companion to the UNFOLD function.
    (def-unfold m1   var (:pitch (pitch-variant x :variant '?))   dyn (:velocity (velocity-to-dynamic x))   )  
    (setf omn '(s bb4 p a4 h. db4 t gs4 mf fs4 c5 b4 q f5 e5))  
    To run the defined methods in a given omn-form sequence use the UNFOLD function:
    (unfold 'm1 '(var dyn) omn)  
    Examples:
    (def-unfold m2   7   (:pitch (pitch-transpose 7 x))   -12 (:pitch (pitch-transpose -12 x))   ret (:all (gen-retrograde x :flatten t))   var (:pitch (pitch-variant x :variant '?))   gf  (nil (gen-fragment '(3) '(3) x))   lrq (:length (length-rational-quantize x))   dyn (:velocity (velocity-to-dynamic x))   ls  (nil (length-span '(6/4 6/4) x))   ob  (:pitch (ambitus 'oboe x))   bn  (:pitch (ambitus 'bassoon x))   hn  (:pitch (ambitus 'french-horn x))   )  
    Please note that the number of methods within an instance can be much bigger than in the example above.
     
    Two bars of omn - opusmodus notation
    (setf mat '((q d4 pp s eb4 < leg g4 < leg bb4 < leg a4 q. cs5 mf              -e 3q gs5 > leg fs5 > leg c5 > b4 > leg f4 leg e4)             (t d4 < leg eb4 < leg g4 < leg bb4 q. a4 marc              t fs4 mf leg gs4 leg e. c5 e b4 t f5 leg e5 leg d5 leg eb5              3q bb5 > a4 > bb5 > e a4 pp stacc -e)))  
    Applying methods:
    (setf t1 (unfold 'm2 7 mat) t2 (unfold 'm2 '(-12 var ob) mat) t3 (unfold 'm2 'var mat) t4 (unfold 'm2 '(-12 gf lrq ls dyn ret var hn) t3) t5 (unfold 'm2 '(gf lrq ls dyn bn) t2) )  
    The result with a Wind-Quintet layout:
    (ps 'gm :w5 (list t1 t2 t3 t4 t5))  

     
     
     
    BIND-TO-INTERVAL
     
    The function BIND-TO-INTERVAL will bind (connect) a series of lists (patterns) to each-other with the given interval. Each transposition value is the sum of the last pitch in the list plus the given interval. The result of the process is a start transposition value for the next list. If rotate and variant options are used, the rotate process is the first followed by variant and finally the start transposition.
     
    In the example below the last pitch in the first list is g4, with binding interval 1 (semitone), therefore the start transposition value of the next list is gs4:
    (bind-to-interval '(1) '((s c4 d4 e4 g4) (s c4 d4 g4 e4))) => ((s c4 d4 e4 g4) (s gs4 bb4 eb5 c5))  
    Examples:
    (setf pattern '((s c4 d4 e4 g4)                 (s c4 d4 g4 e4)                 (s g4 e4 c4 d4)                 (s c4 d4 f4 g4)                 (s c4 d4 g4 f4)                 (s g4 f4 c4 d4)                 (s c4 d4 g4 f4)                 (s g4 gb4 f4 g4)                 (s g4 gb4 f4 a4)                 (s d4 f4 g4 a4)                 (s a4 g4 f4 d4)                 (s d4 f4 g4 c5)))  
    In this example the binding intervals are 1 and 2 randomly selected:
    (bind-to-interval (rnd-sample (length pattern) '(1 2)) pattern) => ((s c4 d4 e4 g4) (s gs4 bb4 eb5 c5) (s d5 b4 g4 a4) (s b4 cs5 e5 fs5)     (s g5 a5 d6 c6) (s d6 c6 g5 a5) (s bb5 c6 f6 eb6) (s f6 e6 eb6 f6)     (s g6 fs6 f6 a6) (s bb6 cs7 eb7 f7) (s fs7 e7 d7 b6) (s cs7 e7 fs7 b7))  
    In the next example the binding intervals are 13 and -13 with random variant:
    (bind-to-interval (rnd-sample (length pattern) '(13 -13)) pattern :variant '?) => ((s c4 d4 e4 g4) (s fs3 a3 e3 d3) (s eb4 fs4 bb4 gs4) (s g3 f3 d3 c3)     (s b1 a1 e1 fs1) (s g2 f2 bb2 c3) (s b1 a1 d2 e2) (s eb1 eb1 d1 cs1)     (s d2 cs2 c2 e2) (s f3 d3 c3 bb2) (s b3 d4 e4 fs4) (s g5 bb5 c6 f6))  
    Here the binding intervals are 1, -1, 2 -2:
    (bind-to-interval '(1 -1 2 -1 2 -1 2) pattern) => ((s c4 d4 e4 g4) (s gs4 bb4 eb5 c5) (s b4 gs4 e4 fs4) (s gs4 bb4 cs5 eb5)     (s d5 e5 a5 g5) (s a5 g5 d5 e5) (s eb5 f5 bb5 gs5) (s bb5 a5 gs5 bb5)     (s b5 bb5 a5 cs6) (s c6 eb6 f6 g6) (s a6 g6 f6 d6) (s cs6 e6 fs6 b6)) (bind-to-interval '(1 -1 2 -1 2 -1 2) pattern :variant '?) => ((s c4 d4 e4 g4) (s gs4 f4 bb4 c5) (s b4 gs4 e4 fs4) (s gs4 bb4 cs5 eb5)     (s d5 c5 a4 g4) (s a4 g4 e4 d4) (s cs4 eb4 gs4 fs4) (s gs4 a4 bb4 gs4)     (s a4 bb4 b4 g4) (s fs4 a4 b4 cs5) (s eb5 c5 bb4 gs4) (s g4 e4 d4 a3))  
    Example with rotation:
    (bind-to-interval (rnd-sample (length pattern) '(1 2)) pattern                   :rotate '(1 2 1 2 1)) => ((s c4 d4 e4 g4) (s a4 f4 g4 c5) (s d5 e5 a5 fs5) (s gs5 cs5 eb5 fs5)     (s gs5 fs5 cs5 eb5) (s e5 a5 g5 d5) (s e5 b4 cs5 fs5) (s g5 a5 a5 gs5)     (s bb5 gs5 g5 fs5) (s g5 a5 d5 f5) (s g5 d6 c6 bb5) (s c6 d5 f5 g5))  
     
    PAN
     
    This function converts mixer panning values in the range from -100(L) to 100(R) into MIDI pan values. The centre position value in the PAN function is 0.
     
    Examples:
    (pan 0) => 64 (pan '(-12 0 12)) => (56 64 72) (pan '(-30 -10 10 30)) => (45 58 70 83)  
    PAN in DEF-SCORE instrument instants definition:
    (def-score SQ            (:title "String Quartet - VSL Show"             :key-signature 'chromatic             :time-signature (get-time-signature vln1)             :tempo tempo             :layout (string-quartet-layout                      'violin1 'violin2 'viola 'cello))      (violin1    :omn vln1    :port 0    :channel 1 :sound 'vsl-violin-solo    :program 0 :pan (pan -30))      (violin2    :omn vln2    :channel 2 :sound 'vsl-violin-solo    :program 0 :pan (pan -10))      (viola    :omn vla    :channel 3 :sound 'vsl-viola-solo    :program 0 :pan (pan 10))      (cello    :omn vlc    :channel 4 :sound 'vsl-cello-solo    :program patches-vc :pan (pan 30))   )  
    PAN in DEF-INSTRUMENT-SETS instance:
    :string-quartet   (:layout string-quartet-layout            :port nil            :channel '(1 2 3 4)            :sound 'gm            :program '(violin violin viola cello)            :controllers nil            :pan (pan '(-30 -10 10 30))            :volume 92)  
     
    Multi Voice Snippet
     
    Select or place the mouse cursor at the end of the expression and press ⌘2.
    This snippet is very useful in sketching and testing the progress of your work ie. instrumentation, voice density etc…
    (setf p1 '(q d4 pp s eb4 < leg g4 < leg bb4 < leg a4 q. cs5 mf -e            3q gs5 > leg fs5 > leg c5 > b4 > leg f4 leg e4)       p2 '(t d4 < leg eb4 < leg g4 < leg bb4 q. a4 marc            t fs4 mf leg gs4 leg e. c5 e b4 t f5 leg e5 leg d5 leg            eb5 3q bb5 > a4 > bb5 > e a4 pp stacc -e)       p3 '(q d5 leg eb5 3q g4 stacc bb4 stacc a4 stacc            e. cs4 marc s gs4 leg q gs4 -q)       p4 '(q. fs3 pp 3e c3 < leg b4 < leg f4 e d3 mf s eb3 leg            g3 leg bb3 leg a3 e fs3 leg fs3 3e gs4 > stacc            c5 > stacc b5 > stacc t f5 pp e.. e5)       p5 '(-q. e d4 pp q. eb5 mf e g4 q bb4 trem a4 trem)       p6 '(q cs4 pp -q t gs4 marc e.. fs4 mf leg e c4 -e            t b4 leg f4 q.. e4 pp)       p7 '(-q e d4 leg eb4 h g4 mf leg q. g4 > -e)       p8 '(s bb3 pp leg a3 h. db3 t gs4 mp fs3 < c5 < b3 q f4 marc e4)       ) (list p1 p2 p3 p4)  

     
     
     
     
    New window display:
    (display-midi *last-score* :display :window) (display-musicxml 'score :display :window)  
    Changes to ‘Evaluate Score’ and ‘Last Score’ shortcut keys.
     
    Best wishes,
    Janusz
  2. Thanks
    JulioHerrlein reacted to opmo in HELP needed on Jazz Lines from fragments   
    Function name: BIND-TO-INTERVAL in Opusmodus version 1.3.24622
  3. Thanks
    JulioHerrlein reacted to Stephane Boussuge in Providing code examples to students   
    (setf op25arnie '(e4 f4 g4 cs4 fs4 ds4 gs4 d4 b4 c4 a4 as4)) (respell (gen-chord2 20 '(3) op25arnie :offset '(2 1 2 3))) Using the :offset parameter in the gen-chord2 function could be interesting too, for example for keeping notes between chords for smoother transitions with common tones.
     
    S.
  4. Like
    JulioHerrlein got a reaction from TomTolleson in Providing code examples to students   
    Dear Friends,
     
    Here 's a way to produce chords from 12 tone rows (Schoenberg opus 25 row):
    (setf op25arnie '(e4 f4 g4 cs4 fs4 ds4 gs4 d4 b4 c4 a4 as4)) (respell (gen-chord2 20 '(3 3 3 1) op25arnie)) Hope it helps a little.
     
    Best,
    Julio
     
     
    Also check this !
    And the Nigel Morgan Parametric Composition book, of course !
    More specific, to keep track of the row:
    (setf op29webernLib (expand-libraries '(library vienna webern r19))) (setf rowint (pitch-to-integer op29webernLib)) (setf pitches (gen-repeat 10 op29webernLib)) (setf lengths (span pitches (gen-repeat 10 '(s s s s -s s e -s s s -s e e -q q)))) (setf text (span pitches rowint)) (def-score Stage-1 (:key-signature 'chromatic :time-signature '(4 4) :tempo 80 :layout (treble-layout 'piano-rh)) (piano-rh :length lengths :pitch pitches :text text ;:velocity dynamics :channel 1 :sound 'gm :program 'acoustic-grand-piano) ) Best,
    Julio
  5. Like
    JulioHerrlein got a reaction from Jorgalad in Harmonic Systems - Harmonizing from top notes (melodies)   
    In the jazz world, Barry Harris came up with the idea of harmonizing a bebop scale.
    Combining a C6 (C, E, G, A) and a Bdim7 (B, D, F, Ab) chords, we have this scale:
     

     
    From this stantpoint we can alternate tonic and dominant sounds, like this:
     

     
    Every pair of chords have all the 8-note set.
    The notes C,E, G and A are always harmonized with a C6 chord.
    The notes D, F, Ab and B are always harmonized with a Bdim7 chord.
     
    So, from the point of view of sets, there is no problem.
     
    WHAT IS NEEDED:
     
    I want a way to start FROM the melody, and then make a four part block harmonization with this (or any other) harmonic system
     from the melody as an OMN expression.
     
    So, I need a way to filter the notes to aply the right chord:
     
    FOR EXAMPLE:
     
    For the notes C, E, G and A
    If the note is an C (in any register), I will apply a chord like , I will add the notes A, G and E, below the melody.
    If the note is an  (in any register), I will apply a chord like , I will add the notes G, E and C, below the melody.
    And so on...
    For the notes D, F, Ab and B:
     
    If the note is an B (in any register), I will apply a chord like , I will add the notes Ab, F and D, below the melody.
    And so on:
     
    So, to make any procedure:
     
    I need first find a way to apply a specific procedure only over the notes I want, over all the C notes, all the B notes, etc.
     
    How to filter from an OMN expression ?
     
    All the best !
    Julio
     
     
     
     
  6. Thanks
    JulioHerrlein reacted to Stephane Boussuge in HELP needed on Jazz Lines from fragments   
    Great !
    i will be fan of this function !
     
    S.
  7. Thanks
    JulioHerrlein reacted to opmo in Opusmodus - second monitor   
    The upcoming release will allow you to open display-midi, display-musicxml, graphs and snippets in a separate window. For any of you using second monitor this will be great addition to your work flow.
     
    Examples:
    (display-midi 'score :display :window) (display-musicxml 'score :display :window)  
    Best,
    Janusz
  8. Like
    JulioHerrlein got a reaction from Jorgalad in Different Voice for one note in a Chord   
    Very nice, Jordv !
    I'm very interested in Harmony. Let me know about your progress in this matter.
    I did a book about set theory and harmony. If you play guitar, you gonna like it.
    It have all the possible voicings with diagrams for guitarand much more, like
     hexatonics, voice leading, functional harmony, etc.
    Here's the link
     
    https://www.melbay.com/Products/30042BCD/combinatorial-harmony-concepts-and-techniques-for-composing-and-improvising.aspx
     
    And another post related to it
     
     
     
    All the Best,
    Julio
  9. Thanks
    JulioHerrlein reacted to opmo in HELP needed on Jazz Lines from fragments   
    The code is not very complex but it needs to work with pitch sequence, chords (last value) and omn-form sequence.
    The document will explain how it all works.
  10. Thanks
    JulioHerrlein reacted to opmo in HELP needed on Jazz Lines from fragments   
    Will be added to the next release:
    (setf pattern '((s c4 d4 e4 g4) (s c4 d4 g4 e4) (s g4 e4 c4 d4) (s c4 d4 f4 g4) (s c4 d4 g4 f4) (s g4 f4 c4 d4) (s c4 d4 g4 f4) (s g4 gb4 f4 g4) (s g4 gb4 f4 a4) (s d4 f4 g4 a4) (s a4 g4 f4 d4) (s d4 f4 g4 c5))) (pattern-series '(1 1 2 1 2 1 2) pattern) => ((s c4 d4 e4 g4) (s gs4 bb4 eb5 c5) (s cs5 bb4 fs4 gs4) (s bb4 c5 eb5 f5) (s fs5 gs5 cs6 b5) (s cs6 b5 fs5 gs5) (s a5 b5 e6 d6) (s e6 eb6 d6 e6) (s f6 e6 eb6 g6) (s gs6 b6 cs7 eb7) (s f7 eb7 cs7 bb6) (s b6 d7 e7 a7)) (pattern-series '(1 1 2 1 2 1 2) pattern :variant '(p p i r ri p p)) => ((s c4 d4 e4 g4) (s gs4 bb4 eb5 c5) (s cs5 bb4 fs4 gs4) (s bb4 gs4 f4 eb4) (s e4 fs4 cs4 b3) (s cs4 eb4 bb3 gs3) (s a3 b3 e4 d4) (s e4 eb4 d4 e4) (s f4 e4 eb4 g4) (s gs4 b4 cs5 eb5) (s f5 g5 a5 c6) (s cs6 gs5 fs5 eb5)) (pattern-series '(1 -1 2 -1 2 -1 2) pattern) => ((s c4 d4 e4 g4) (s gs4 bb4 eb5 c5) (s b4 gs4 e4 fs4) (s gs4 bb4 cs5 eb5) (s d5 e5 a5 g5) (s a5 g5 d5 e5) (s eb5 f5 bb5 gs5) (s bb5 a5 gs5 bb5) (s b5 bb5 a5 cs6) (s c6 eb6 f6 g6) (s a6 g6 f6 d6) (s cs6 e6 fs6 b6)) (pattern-series '(1 -1 2 -1 2 -1 2) pattern :variant '(p p i r ri p p)) => ((s c4 d4 e4 g4) (s gs4 bb4 eb5 c5) (s b4 gs4 e4 fs4) (s gs4 fs4 eb4 cs4) (s c4 d4 a3 g3) (s a3 b3 fs3 e3) (s eb3 f3 bb3 gs3) (s bb3 a3 gs3 bb3) (s b3 bb3 a3 cs4) (s c4 eb4 f4 g4) (s a4 b4 cs5 e5) (s eb5 bb4 gs4 f4))  
    with random (1 2)
    (pattern-series (rnd-sample (length pattern) '(1 2)) pattern) etc...
    (pattern-series (rnd-sample (length pattern) '(13 -13)) pattern :variant '?) Best,
    Janusz
  11. Like
    JulioHerrlein reacted to opmo in HELP needed on Jazz Lines from fragments   
    Like this:
    (pitch-transpose-n '(2 2 2 2) '(fs4 gs4 as4 cs5)) => (gs4 bb4 c5 eb5) (pitch-transpose-n '(2 2 2 2) '(c5 d5 e5 g5)) => (d5 e5 fs5 a5)  
    Other solution would be to work with intervals only: INTERVAL-MAP
  12. Thanks
    JulioHerrlein reacted to Jorgalad in Different Voice for one note in a Chord   
    Thanks Janusz for the very straightforward example!
     
    @Julio, looks like I'm in for an educational weekend! It seems like there's a lot of useful ideas in there.
    I am currently building a library of functional progressions, I think the ideas you're showing will be incredibly valuable for that, thanks a lot!
  13. Like
    JulioHerrlein got a reaction from Stephane Boussuge in Different Voice for one note in a Chord   
    Dear Jorvd,
     
    Maybe this post can be useful.
    Best,
    Julio
     
     
    Or maybe this. I did it for composing a String Quartet from a piano reduction.
    It brings some ideas to work with harmony.
    Best,
    Julio
     
    ;;;HARMONY METHOD 2 ////////////////////////////////////////SEV CHORDS Basic Functions SETS/// ;;SETS 7-35 - Major Scale (setf Srm7 (pcs-transpose 9 (pcs '4-26) :pitch)) (setf S7M (pcs-transpose 4 (pcs '4-20) :pitch)) (setf Trm7 (pcs-transpose 4 (pcs '4-26) :pitch)) (setf T7M (pcs-transpose -1 (pcs '4-20) :pitch)) (setf Tam7 (pcs-transpose 11 (pcs '4-26) :pitch)) (setf D7 (pcs-transpose 11 (pcs '4-27b) :pitch)) (setf hd (pcs-transpose 9 (pcs '4-27) :pitch)) (setf F7M#11-5 (gen-rotate 2 (pcs-transpose -1 (pcs '4-8) :pitch))) ;;;Establishing a Progression (setf chordprog (chordize (list Srm7 S7M Trm7 T7M Tam7 S7M))) ;; Some repetitions and transpositions from Harmonic functions (setf chordtrp-rpt (pitch-transpose-repeat '((0) (1 2 3) (0 -1)) (chordize (list T7M S7M Trm7 T7M T7M T7M T7M T7M T7M T7M T7M T7M T7M T7M)))) ;;; DEFINE DROP TYPES Position of chords (setf csd '(0 0 0 0) dp2 '(0 -12 0 0) dp3 '(0 0 -12 0) dp2-4 '(0 -12 0 -12) dp2-3 '(0 -12 -12 0) ddp2-3 '(0 -24 0 -12) dp-24 '(-24 -24 -24 -24) dp-ligeti '(-24 -24 24 24)) ;;;DROP ORDER - Order of Positions (setf droplist (flatten (list dp2-4 dp2 dp2-4 dp3 dp2))) ;;;MAKING THE Actual Voicings (setf chordprogdrop (chordize-list (pitch-transpose-n droplist (sort-desc (pitch-melodize chordtrp-rpt))))) ;;;Using the voicings for the final result (setf chordprgtrp chordprogdrop) ;;; Choose how many repeats of the rhythm (setf times 1) ;;;Transform the chords into separate voices (setf voz1 (flatten (pitch-demix 1 chordprgtrp))) (setf voz2 (flatten (pitch-demix 2 chordprgtrp))) (setf voz3 (flatten (pitch-demix 3 chordprgtrp))) (setf voz4 (flatten (pitch-demix 4 chordprgtrp))) ;;; (OPTIONAL) Process AMBITUS Instrumental ou vocal//////////////////////////////////////// ;(setf vozamb1 (ambitus '(c4 c5) voz1) vozamb2 (ambitus '(f3 c5) voz2) vozamb3 (ambitus '(g3 g4) voz3) vozamb4 (ambitus '(c2 e3) voz4)) ;(setf vozamb1 (ambitus (ambitus-instrument 'flute) voz1)vozamb2 (ambitus (ambitus-instrument 'oboe) voz2) vozamb3 (ambitus (ambitus-instrument 'clarinet) voz3) vozamb4 (ambitus (ambitus-instrument 'bassoon) voz4)) (setf vozamb1 voz1 vozamb2 voz2 vozamb3 voz3 vozamb4 voz4) ;;;HOMORHYTHM (setf homorhy (gen-repeat times '(q stacc -q e stacc q e stacc h h -s s pizz s pizz s pizz)) r1 homorhy r2 homorhy r3 homorhy r4 homorhy)(setf arthomo '(stacc stacc ord stacc ord ord leg leg ord)) (setf dynhomo '(f f mf mf p< f mp< < <)) ;; THE DYNAMICS are a little crazy, but this is only to show the stuff ;;;outra possibilidade para homorritmo ;;;lista do ritmo e articulação basica (setf ritrepeat '(-s s s s s -s s s e stacc e stacc -s s ord s s -s s s s e stacc e stacc h ord -s s s s -s s s s e stacc e stacc -e q. ord e stacc e stacc e -s s ord s s -s s -h -q s s -s s h -h)) ;;;repetições (setf homorhy (gen-repeat times ritrepeat) r1 homorhy r2 homorhy r3 homorhy r4 homorhy) ;;;OMN ASSEMBLAGE da LINHA (for poliphony) (setf vozomn1 (make-omn :length r1 :pitch vozamb1 :articulation arthomo :velocity dynhomo)) (setf vozomn2 (make-omn :length r2 :pitch vozamb2 :articulation arthomo :velocity dynhomo)) (setf vozomn3 (make-omn :length r3 :pitch vozamb3 :articulation arthomo :velocity dynhomo)) (setf vozomn4 (make-omn :length r4 :pitch vozamb4 :articulation arthomo :velocity dynhomo)) ;;;--------------------------------------------------------- ;;; SCORE ;;;---------------------------------------------------------- ;;; ;;; (OPTIONAL) Time Signature Sequences (setf time-signatures '((2 4 1) (3 4 2) (4 4 1))) ;;;ONLY ONE TIME SIGNATURE ;(setf time-signatures '((4 4))) (def-score voices (:title "Piano-Red-4-Voices" :subtitle "Estudos Polifônicos" :composer "Julio-Herrlein" :key-signature 'atonal :time-signature time-signatures :tempo '("Meditativo" q 60) :layout (piano-solo-layout '(pno-rh1 pno-rh2) '(pno-lh pno-lh2))) (pno-rh1 :omn vozomn1 :channel 1 :sound 'gm :program 'Violin :volume 100) (pno-rh2 :omn vozomn2 :channel 2 :sound 'gm :program 'Violin :volume 70) (pno-lh :omn vozomn3 :channel 3 :sound 'gm :program 'Viola :volume 80) (pno-lh2 :omn vozomn4 :channel 4 :sound 'gm :program 'Cello :volume 80))  
  14. Like
    JulioHerrlein got a reaction from Jorgalad in Different Voice for one note in a Chord   
    Dear Jorvd,
     
    Maybe this post can be useful.
    Best,
    Julio
     
     
    Or maybe this. I did it for composing a String Quartet from a piano reduction.
    It brings some ideas to work with harmony.
    Best,
    Julio
     
    ;;;HARMONY METHOD 2 ////////////////////////////////////////SEV CHORDS Basic Functions SETS/// ;;SETS 7-35 - Major Scale (setf Srm7 (pcs-transpose 9 (pcs '4-26) :pitch)) (setf S7M (pcs-transpose 4 (pcs '4-20) :pitch)) (setf Trm7 (pcs-transpose 4 (pcs '4-26) :pitch)) (setf T7M (pcs-transpose -1 (pcs '4-20) :pitch)) (setf Tam7 (pcs-transpose 11 (pcs '4-26) :pitch)) (setf D7 (pcs-transpose 11 (pcs '4-27b) :pitch)) (setf hd (pcs-transpose 9 (pcs '4-27) :pitch)) (setf F7M#11-5 (gen-rotate 2 (pcs-transpose -1 (pcs '4-8) :pitch))) ;;;Establishing a Progression (setf chordprog (chordize (list Srm7 S7M Trm7 T7M Tam7 S7M))) ;; Some repetitions and transpositions from Harmonic functions (setf chordtrp-rpt (pitch-transpose-repeat '((0) (1 2 3) (0 -1)) (chordize (list T7M S7M Trm7 T7M T7M T7M T7M T7M T7M T7M T7M T7M T7M T7M)))) ;;; DEFINE DROP TYPES Position of chords (setf csd '(0 0 0 0) dp2 '(0 -12 0 0) dp3 '(0 0 -12 0) dp2-4 '(0 -12 0 -12) dp2-3 '(0 -12 -12 0) ddp2-3 '(0 -24 0 -12) dp-24 '(-24 -24 -24 -24) dp-ligeti '(-24 -24 24 24)) ;;;DROP ORDER - Order of Positions (setf droplist (flatten (list dp2-4 dp2 dp2-4 dp3 dp2))) ;;;MAKING THE Actual Voicings (setf chordprogdrop (chordize-list (pitch-transpose-n droplist (sort-desc (pitch-melodize chordtrp-rpt))))) ;;;Using the voicings for the final result (setf chordprgtrp chordprogdrop) ;;; Choose how many repeats of the rhythm (setf times 1) ;;;Transform the chords into separate voices (setf voz1 (flatten (pitch-demix 1 chordprgtrp))) (setf voz2 (flatten (pitch-demix 2 chordprgtrp))) (setf voz3 (flatten (pitch-demix 3 chordprgtrp))) (setf voz4 (flatten (pitch-demix 4 chordprgtrp))) ;;; (OPTIONAL) Process AMBITUS Instrumental ou vocal//////////////////////////////////////// ;(setf vozamb1 (ambitus '(c4 c5) voz1) vozamb2 (ambitus '(f3 c5) voz2) vozamb3 (ambitus '(g3 g4) voz3) vozamb4 (ambitus '(c2 e3) voz4)) ;(setf vozamb1 (ambitus (ambitus-instrument 'flute) voz1)vozamb2 (ambitus (ambitus-instrument 'oboe) voz2) vozamb3 (ambitus (ambitus-instrument 'clarinet) voz3) vozamb4 (ambitus (ambitus-instrument 'bassoon) voz4)) (setf vozamb1 voz1 vozamb2 voz2 vozamb3 voz3 vozamb4 voz4) ;;;HOMORHYTHM (setf homorhy (gen-repeat times '(q stacc -q e stacc q e stacc h h -s s pizz s pizz s pizz)) r1 homorhy r2 homorhy r3 homorhy r4 homorhy)(setf arthomo '(stacc stacc ord stacc ord ord leg leg ord)) (setf dynhomo '(f f mf mf p< f mp< < <)) ;; THE DYNAMICS are a little crazy, but this is only to show the stuff ;;;outra possibilidade para homorritmo ;;;lista do ritmo e articulação basica (setf ritrepeat '(-s s s s s -s s s e stacc e stacc -s s ord s s -s s s s e stacc e stacc h ord -s s s s -s s s s e stacc e stacc -e q. ord e stacc e stacc e -s s ord s s -s s -h -q s s -s s h -h)) ;;;repetições (setf homorhy (gen-repeat times ritrepeat) r1 homorhy r2 homorhy r3 homorhy r4 homorhy) ;;;OMN ASSEMBLAGE da LINHA (for poliphony) (setf vozomn1 (make-omn :length r1 :pitch vozamb1 :articulation arthomo :velocity dynhomo)) (setf vozomn2 (make-omn :length r2 :pitch vozamb2 :articulation arthomo :velocity dynhomo)) (setf vozomn3 (make-omn :length r3 :pitch vozamb3 :articulation arthomo :velocity dynhomo)) (setf vozomn4 (make-omn :length r4 :pitch vozamb4 :articulation arthomo :velocity dynhomo)) ;;;--------------------------------------------------------- ;;; SCORE ;;;---------------------------------------------------------- ;;; ;;; (OPTIONAL) Time Signature Sequences (setf time-signatures '((2 4 1) (3 4 2) (4 4 1))) ;;;ONLY ONE TIME SIGNATURE ;(setf time-signatures '((4 4))) (def-score voices (:title "Piano-Red-4-Voices" :subtitle "Estudos Polifônicos" :composer "Julio-Herrlein" :key-signature 'atonal :time-signature time-signatures :tempo '("Meditativo" q 60) :layout (piano-solo-layout '(pno-rh1 pno-rh2) '(pno-lh pno-lh2))) (pno-rh1 :omn vozomn1 :channel 1 :sound 'gm :program 'Violin :volume 100) (pno-rh2 :omn vozomn2 :channel 2 :sound 'gm :program 'Violin :volume 70) (pno-lh :omn vozomn3 :channel 3 :sound 'gm :program 'Viola :volume 80) (pno-lh2 :omn vozomn4 :channel 4 :sound 'gm :program 'Cello :volume 80))  
  15. Thanks
    JulioHerrlein reacted to opmo in XML Snippet "open with" context menu option   
    First, you need to create a musicxml file from your score:
    (compile-score 'file-name :output :musicxml :file "file-name") Next:
    (musicxml-to-editor "file-name") To open the file in Finale:
    (musicxml-to-editor "file-name" :application "Finale")  
    If the application name is not working you can use the identifier keyword with the bundle-identifier.
    For example the Sibelius 7.5 version identifier is "com.avid.Sibelius75"
    (musicxml-to-editor "file-name" :identifier "com.avid.Sibelius75")  
  16. Thanks
    JulioHerrlein reacted to Deb76 in Request: make-omn   
    Dear Julio,
    Sorry for the delay of the answer but I finalized a project with a baroque flutist around the tale of Andersen "The Nightingale and the Emperor of China" and whose music was written with OPMO.
    Indeed, the association of notation in integers with the option: text is useful.
    Many thanks
    Best!
    Didier
  17. Thanks
    JulioHerrlein reacted to Andy in The learning curve..thoughts   
    For me, this is a much easier journey than Max/MSP or ACToolbox or Kyma or PWGL or ...in fact any program for composition where there is a bunch of boxes, wires and annoying graphics! The idea of boxes and graphics..the visual paradigm, is it is meant to make it easier somehow.. but I now realise the reverse is true.
    If you are just dealing with text and traditional music notation as in OM,  it's really very straight forward. There is a learning 'bump' initially but then it really starts to make sense.
    I got so annoyed at Max going from 4 to 5 to 6 to 7 and the ridiculous changes in the GUI that meant I had to relearn the program every time. It was all about them. I feel Opusmodus is all about me. And that's quite a unique experience. And actually the real effort visually in Opusmodus has been put in to functionality, the IDE, which to be honest is totally unique. Thanks.
    Onward and upward. (with a few backwards I'm sure)
     
     
  18. Thanks
    JulioHerrlein reacted to opmo in Opusmodus 1.3.24409   
    Whats new:
    —'Check for Updates...' menu in Opusmodus app menu (no more manual downloads). 🙂
    —New CLM instruments with omn-form plist input and documentation.
     
      badd-synth   bandedwg-synth   circular-scanned-synth   fm-bell-synth   fm-insect-synth   fm-violin-synth   grani-synth   piano-synth   pvoc-synth   scanner-synth   singbowl-synth
    —Additional _About documents for various function groups (Wikipedia).
     —CLM bug fixes.
     
    Installation:
    There are some changes to the Opusmodus user system folder and CLM implementation.
    Before opening the new application you need to delete the old Opusmodus folder.
    Make sure you save your personal files (scores, docs etc...) before. A good solution is to rename the Opusmodus folder first and then compress it.
    After you have deleted the Opusmodus user folder you can start the new application.
    At the start Opusmodus will ask you for permission to create a new user folder in your home directory, if you don’t see a window for it, it means the old folder is still on your computer. Make sure the new Opusmodus folder is installed in your home directory.
     
    Hopefully this is the last time we need to delete the previous Opusmodus user folder from the home directory.
     
    Best wishes,
    Janusz

    P.S. Few CLM examples from the "3.Howto Score/CLM/Sound Synthesis.opmo" file:

    fm-bell-synth
    (progn   (defparameter count 50)   (setf partials (library 'marangona-partials 'partials nil :random 20))   (setf par (rnd-sample count (partial :freq (flatten partials))))   (defparameter freq (gen-divide (rnd-sample count '(1 2 3 4 5)) par))   (defparameter dur (list (length-span 42 (rnd-sample count '(w h q w)))))      (do-timeline    '(dur (---xx--xx- ---xx---x- --x--xx--- ---x------ x----x---))    '(gen-pause x) :time '(w))      (defparameter vel (rnd-number count 0.05 0.43))   (defparameter dist (rnd-number count 0.5 1.0))   (defparameter env     '((0 0 40 .1000 60 .2000 75 .4000 82 1 90 1 100 0)       (0 0 60 .1000 80 .2000 90 .4000 95 1 100 0)       (0 0 10 1 16 0 32 .1000 50 1 56 0 60 0 90 .3000 100 0)       (0 0 30 1 56 0 60 0 90 .3000 100 0)       (0 0 50 1 80 .3000 100 0)       (0 0 40 .1000 60 .2000 75 .4000 82 1 90 1 100 0)       (0 0 10 1 32 .1000 50 1 90 .3000 100 0)       (0 0 60 .1000 80 .3000 95 1 100 0)       (0 0 80 .1000 90 1 100 0)))      (with-sound (:reverb jc-reverb :scaled-to .7)     (fm-bell-synth dur freq vel                    :amp-env (rnd-sample count env)                    :index-env (rnd-sample count env)                    :index (rnd-number count 0.3 0.9)                    :reverb-amount 0.30                    :distance dist))   )
    fm-insect-synth
    (progn   (defparameter par (library 'tbn-cs3-partials 'partials nil :random 12))   (defparameter dur '(rnd-sample 12 '(-q q. h -h. -w w. d -d.)))   (defparameter freq '(rnd-sample 12 (flatten (partial :freq par))))   (defparameter amp '(rnd-sample 12 '(pppp ppp p mp)))   (defparameter mod-freq-env '(0 0 40 1 95 1 100 .5))   (defparameter mod-index-env '(0 1 25 .7 75 .78 100 1))   (defparameter amp-env '(0 0 25 1 75 .7 100 0))   (defparameter fm-index '(rnd-number 12 .01 .6))   (defparameter mod-skew '(rnd-number 12 -20.0 -1.0))   (defparameter mod-freq '(rnd-number 12 20 60))      (with-sound '()     (fm-insect-synth (eval dur) (eval freq) (eval amp) amp-env                      (eval mod-freq) (eval mod-skew) mod-freq-env                      500.866 mod-index-env (eval fm-index) .500)          (fm-insect-synth (eval dur) (eval freq) (eval amp) amp-env                      (eval mod-freq) (eval mod-skew) mod-freq-env                      649.490 mod-index-env (eval fm-index) .500)          (fm-insect-synth (eval dur) (eval freq) (eval amp) amp-env                      (eval mod-freq) (eval mod-skew) mod-freq-env                      562.087 mod-index-env (eval fm-index) .500)          (fm-insect-synth (eval dur) (eval freq) (eval amp) amp-env                      (eval mod-freq) (eval mod-skew) mod-freq-env                      300.866 mod-index-env (eval fm-index) .500)     )   )
    grani-synth
    (progn   (defparameter dur '(q h w d -q -h))   (defparameter amp '(pppp p pp f mp))      (with-sound (:reverb jc-reverb :reverb-channels 2)     (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-envelope '(0 0 .2 .2 .5 1 .8 .2 1 0))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grains 10)          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-start '(0 .1 .3 .1 1 .6)                  :amp-envelope '(0 1 1 1)                  :grain-density 8                  :grain-envelope '(0 0 .2 .2 .5 1 .8 .2 1 0)                  :grain-envelope-end '(0 0 .01 1 .99 1 1 0)                  :grain-envelope-transition '(0 0 .4 1 .8 0 1 0))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                   :grain-start '(0 0 1 1)                  :amp-envelope '(0 1 1 1)                  :grain-density 20                  :grain-duration '(0 .003 .2 .01 1 .3))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-start '(0 0 1 1)                   :amp-envelope '(0 1 1 1)                  :grain-density 20                  :grain-duration '(0 .003 .2 .01 1 .3)                  :grain-duration-limit .02)          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :amp-envelope '(0 1 1 1)                  :grain-density 40                  :grain-start '(0 .1 .3 .1 1 .6))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :amp-envelope '(0 1 1 1)                  :grain-density 40                  :grain-start '(0 .1 .3 .1 1 .6)                  :grain-start-spread .01)          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-start '(0 0 1 1)                  :grain-start-spread 0.01                  :amp-envelope '(0 1 1 1)                  :grain-density 40                  :srate '(0 0 .2 0 .6 5 1 5))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-start '(0 0 1 1)                  :grain-start-spread .01                  :amp-envelope '(0 1 1 1)                  :grain-density (rnd-sample 12 '(40 30 20))                  :srate-base 2                  :srate '(0 0 .2 0 .6 -1 1 -1))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-start '(0 0 1 1)                  :grain-start-spread .01                  :amp-envelope '(0 1 1 1)                  :grain-density (rnd-sample 12 '(40 30 20))                  :srate-linear t                  :srate (list 0 1 .2 1 .6 (expt 2 5/12) 1 (expt 2 5/12)))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-start '(0 0 1 1)                  :grain-start-spread .01                  :amp-envelope '(0 1 1 1)                  :grain-envelope '(0 0 .2 .2 .5 1 .8 .2 1 0)                  :grain-density (rnd-sample 12 '(40 30 20))                  :grain-duration '(0 .02 1 0.1)                   :grain-duration-spread '(0 0 .5 .1 1 0))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-start '(0 0 1 1)                  :grain-start-spread 0.01                  :amp-envelope '(0 1 1 1)                  :grain-density (rnd-sample 12 '(40 30 20))                  :grain-degree '(0 0 1 90)                  :grain-degree-spread 10)          (grani-synth (rnd-sample 12 dur)                   (rnd-sample 12 amp) "oboe"                  :grain-duration .06                  :grain-density 20                  :grain-density-spread 2                  :srate 0)          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-duration .08                  :grain-density (rnd-sample 12 '(40 30 20))                  :grain-density-spread 2                  :srate 5                    :grain-degree 0                  :grain-envelope '(0 0 .2 .2 .5 1 .8 .2 1 0)                  :grain-envelope-end '(0 0 .01 1 .99 1 1 0))          (grani-synth (rnd-sample 12 dur)                  (rnd-sample 12 amp) "oboe"                  :grain-duration .05                  :grain-density 35                  :grain-density-spread 3                  :srate -5                  :grain-degree 90                  :srate (list 0 1 .3 1 .3 (expt 2 5/12) 1 (expt 2 5/12))))   )
    piano-synth
    (progn   (setf frames1 (library 'marangona-partials 'partials nil :random 48))   (setf frames2 (library 'marangona-frames 'partials nil :random 48))   (setf par1 (remove-partial frames1 :type :freq :min 27.5 :max 4186))   (setf par2 (remove-partial frames2 :type :freq :min 27.5 :max 4186))      (defparameter freq1     (rnd-order      (gen-collect       (rnd-sample 24 '(3 5 6 7 8)) (partial :freq par1))))      (defparameter freq2     (rnd-order      (gen-collect       (rnd-sample 38  '(2 3 4)) (partial :freq par2))))      (with-sound (:reverb jc-reverb)     (piano-synth '(3e) (flatten freq1) '(.2 .3 .4)                  :bpm 72                  :drypedalresonancefactor .25                  :singlestringdecayrate-table                  '(21 -5 24.000 -5.000 36.000 -5.4                    41.953 -5.867 48.173 -7.113 53.818 -8.016                    59.693 -8.875 66.605 -9.434 73.056 -10.035                    78.931 -10.293 84.000 -12.185)                  :singlestringpole-table                  '(21 .8 24 0.7 36.000 .6 48 .5                    60 .3 84 .1 96 .03 108 .03)                  :stiffnesscoefficient-table                  '(21.000 -0.920 24.000 -0.900 36.000 -0.700                    48.000 -0.250 60.000 -0.100 75.179 -0.040                    82.986 -0.040 92.240 .3 96.000 .5                    99.000 .7 108.000 .7))     (piano-synth '(e) freq2 '(0.1 0.2 0.3)                  :bpm 72                  :drypedalresonancefactor .55                  :detuningfactor-table                  '(24 5 36 7.0 48 7.5 60 12.0 72                    20 84 30 96 100 108 300)))   )
    pvoc-synth
    (with-sound (:scaled-to .99)    (pvoc-synth (rnd-sample 12 '(q h e s w d -q -h))               '(pppp pp ppp f) "marangona"               :input-start 0               :input-end 12               :pitch-scaler (rnd-sample 12 '(.5 .1 .05 .8 .3 .16))               :pitch-offset (rnd-sample 20 '(20 100 200 300 440 150 730))               :pitch-offset-env '(0 0 20 0 50 100 70 100 80 0 100 0)               :pitch-scaler-env '(0 1 50 2 100 1)               :amp-env '(0 1 40 0 50 1 60 0 100 1)               :gate 70)   )
    singbowl-synth
    (progn   (defparameter size 120)   (defparameter partials (library 'marangona-partials 'partials nil :random 50))   (defparameter par (rnd-sample size (partial :freq (flatten partials))))   (defparameter freq (gen-divide (rnd-sample size '(2 3 4 5)) par))   (defparameter length (rnd-sample size '(w h q e)))   (defparameter velocity (rnd-number size .05 .43))      (defparameter env     '((0 0 40 .1000 60 .2000 75 .4000 82 1 90 1 100 0)       (0 0 60 .1000 80 .2000 90 .4000 95 1 100 0)       (0 0 10 1 16 0 32 .1000 50 1 56 0 60 0 90 .3000 100 0)       (0 0 30 1 56 0 60 0 90 .3000 100 0)       (0 0 50 1 80 .3000 100 0)       (0 0 40 .1000 60 .2000 75 .4000 82 1 90 1 100 0)       (0 0 10 1 32 .1000 50 1 90 .3000 100 0)       (0 0 60 .1000 80 .3000 95 1 100 0)       (0 0 80 .1000 90 1 100 0)))      (with-sound (:reverb jc-reverb :scaled-to .7 :output "ma-partials")     (singbowl-synth length freq velocity                     :amp-env (rnd-sample size env)                     :reverb-amount 0.30))   )
    fm-violin-synth
    (progn   (defparameter size 10)   (defparameter count 50)   (setf glc-v1         (gen-length-cartesian          1 3 'd '? 'w 3 (rnd-sample size '(13 11 10 8))          '(1 2 3 4 5)))      (setf glc-v2         (gen-length-cartesian          1 3 'd '? 'w 3 (rnd-sample size '(13 11 10 8))          '(1 2 3 4 5)))      (setf glc-va         (gen-length-cartesian          1 3 'd '? 'w 3 (rnd-sample size '(13 11 10 8))          '(1 2 3 4 5)))      (setf glc-vc         (gen-length-cartesian          1 3 'd '? 'w 3 (rnd-sample size '(13 11 10 8))          '(1 2 3 4 5)))      (setf gu-sq         (gen-unison (list glc-v1 glc-v2 glc-va glc-vc)))      (setf l-v1 (1~ gu-sq))   (setf l-v2 (2~ gu-sq))   (setf l-va (3~ gu-sq))   (setf l-vc (4~ gu-sq))      (setf l-max         (first          (sort-desc           (list (get-count l-v1 :length :note :sum t)                 (get-count l-v2 :length :note :sum t)                 (get-count l-va :length :note :sum t)                 (get-count l-vc :length :note :sum t)))))      (setf    intervals    '((0 7) (0 0) (11 5) (-4 5) (-5 5) (0 13) (-5 18)      (-36 13) (-13 13) (8) (-18 7) (-1 17) (-17 17)      (-26 13) (-27 23) (-19 19) (-23 23) (18) (0) (7)      (-14) (13) (-23 5) (-23 2) (-2 2) (6 2) (6 5)      (19) (-10) (-17 11) (-11 11) (-11 5) (-24 13)      (1 14) (-14 14) (-29 1) (-1 1) (7 0) (12 6)      (-21 7) (-7 7) (-18 0) (1 13) (0 1) (-14 13)      (-10 5) (-14 8) (0 6) (6) (-20 6) (-5 1) (17) (1)      (-17 5) (-1 5) (-10 16) (-12 8) (0 8) (1 11)      (-24 4) (-18 16) (-17) (-6 6) (-18 18) (-15 3)      (-6 31) (-2 5) (-29 6) (-6 13) (-13 6) (7 13)))      (setf pcount (gen-repeat 2 (get-count l-v1 :length :note)))   (setf gr (gen-repeat (length pcount) (list intervals)))   (setf gm-v1 (gen-markov gr :size pcount))   (setf gm-v2 (gen-markov gr :size pcount))   (setf gm-va (gen-markov gr :size pcount))   (setf gm-vc (gen-markov gr :size pcount))   (setf im-v1 (interval-map nil (append-sublist gm-v1)))   (setf im-v2 (interval-map nil (append-sublist gm-v2)))   (setf im-va (interval-map nil (append-sublist gm-va)))   (setf im-vc (interval-map nil (append-sublist gm-vc)))   (setf s-v1 (span l-v1 im-v1))   (setf s-v2 (span l-v2 im-v2))   (setf s-va (span l-va im-va))   (setf s-vc (span l-vc im-vc))   (setf ra-v1 (rnd-octaves 'violin s-v1))   (setf ra-v2 (rnd-octaves 'violin s-v2))   (setf ra-va (rnd-octaves 'viola  s-va))   (setf ra-vc (rnd-octaves 'cello  s-vc))   (setf p-v1 (ambitus 'violin ra-v1 :type :invert))   (setf p-v2 (ambitus 'violin ra-v2 :type :invert))   (setf p-va (ambitus 'viola ra-va :type :invert))   (setf p-vc (ambitus '(a2 c5) ra-vc :type :invert))   (setf weight '(29 19 8 8 17))   (setf vel '(0.07 0.1 0.15 0.2 0.25 0.35))   (setf v-v1 (gen-weight l-max (mapcar 'list vel weight)))   (setf v-v2 (gen-weight l-max (mapcar 'list vel weight)))   (setf v-va (gen-weight l-max (mapcar 'list vel weight)))   (setf v-vc (gen-weight l-max (mapcar 'list vel weight)))      (setf vln1 (make-omn :length l-v1 :pitch p-v1 :velocity v-v1))   (setf vln2 (make-omn :length l-v2 :pitch p-v2 :velocity v-v2))   (setf vla (make-omn :length l-va :pitch p-va :velocity v-va))   (setf vlc (make-omn :length l-vc :pitch p-vc :velocity v-vc))      (do-timeline    '(       vln1 (---x---x-- ---x-x-x-- --x--xx--- ---x------ x-)      vln2 (---x---x-- ---x---x-- --x--xx--- ---x------ x-)      vla  (---x---x-- ---x---x-- --x--xx--- ---x------ --)      vlc  (---x---x-- ---x---xx- --x--xx--- ---x------ --)      )    '(gen-pause x) :time '(h h. w))      (defparameter v1 vln1)   (defparameter v2 vln2)   (defparameter v3 vla)   (defparameter v4 vlc)   (defparameter env     '((0 0 40 .1000 60 .2000 75 .4000 82 1 90 1 100 0)       (0 0 60 .1000 80 .2000 90 .4000 95 1 100 0)       (0 0 10 1 16 0 32 .1000 50 1 56 0 60 0 90 .3000 100 0)       (0 0 30 1 56 0 60 0 90 .3000 100 0)       (0 0 50 1 80 .3000 100 0)       (0 0 40 .1000 60 .2000 75 .4000 82 1 90 1 100 0)       (0 0 10 1 32 .1000 50 1 90 .3000 100 0)       (0 0 60 .1000 80 .3000 95 1 100 0)       (0 0 80 .1000 90 1 100 0)))      (with-sound (:reverb jc-reverb :scaled-to .7)     (fm-violin-synth v1 v1 v1                      :bpm 30                      :degree (rnd-number count 45 85)                      :fm-index (rnd-number count 0.10 1.0)                      :reverb-amount 0.30                      :noise-amount (rnd-number count 0.00 0.004)                      :amp-env (rnd-sample count env)                      :glissando-amount (rnd-number count 0.00 0.8))          (fm-violin-synth v2 v2 v2                      :bpm 30                      :degree (rnd-number count 45 85)                      :fm-index (rnd-number count 0.03 1.0)                      :reverb-amount 0.30                      :noise-amount (rnd-number count 0.00 0.004)                      :amp-env (rnd-sample count env)                      :glissando-amount (rnd-number count 0.00 0.8))          (fm-violin-synth v3 v3 v3                      :bpm 30                      :degree (rnd-number count 45 85)                      :fm-index (rnd-number count 0.10 1.0)                      :reverb-amount 0.30                      :noise-amount (rnd-number count 0.00 0.004)                      :amp-env (rnd-sample count env)                      :glissando-amount (rnd-number count 0.00 0.8))          (fm-violin-synth v4 v4 v4                      :bpm 30                      :degree (rnd-number count 45 85)                      :fm-index (rnd-number count 0.70 1.0)                      :reverb-amount 0.30                      :noise-amount (rnd-number count 0.00 0.004)                      :amp-env (rnd-sample count env)                      :glissando-amount (rnd-number count 0.00 0.8)))   )
    scanned-synth
    (progn   (defparameter size 120)   (setf partials1 (library 'tbn-cs3-partials 'partials nil :random 64))   (setf partials2 (library 'tbn-cs3-partials 'partials nil :random 64))   (setf freq1 (rnd-sample size (partial :freq (flatten partials1))))   (setf freq2 (rnd-sample size (partial :freq (flatten partials2))))   (defparameter dur1 (rnd-sample size '(s s s s)))   (defparameter dur2 (rnd-sample size '(q e s s s -s)))   (defparameter amp1 (rnd-number size .005 .13))   (defparameter amp2 (rnd-number size .005 .13))   (defparameter waves '(1 2 3 4 5 6 7 8 9 10 11 12 13))      (with-sound (:reverb jc-reverb)     (scanned-synth      dur1 freq1 amp1      :wave (rnd-sample size waves) :bpm 96      :pts (rnd-sample size '(192 256 512)))          (scanned-synth      dur2 freq2 amp2      :wave (rnd-sample size waves) :bpm 96      :pts (rnd-sample size '(192 256 512)))     )   )
    circular-scanned-synth
    (progn   (defparameter size 24)   (setf partials1 (library 'tbn-cs3-partials 'partials nil :random 50))   (setf partials2 (library 'tbn-cs3-partials 'partials nil :random 50))   (setf par1 (rnd-sample size (partial :freq (flatten partials1))))   (setf par2 (rnd-sample size (partial :freq (flatten partials2))))   (defparameter dur1 (rnd-sample size '(1 2 3 4 5)))   (defparameter dur2 (rnd-sample size '(1 2 3 4 5)))   (defparameter freq1 (gen-divide (rnd-sample size '(2 3 4 5)) par1))   (defparameter freq2 (gen-divide (rnd-sample size '(2 3 4 5)) par2))   (defparameter amp1 (rnd-number size .05 .43))   (defparameter amp2 (rnd-number size .05 .43))   (defparameter env     '((0 0 40 .1000 60 .2000 75 1 90 1 100 0)       (0 0 60 .1000 80 .2000 90 1 100 0)       (0 0 10 1 16 0 32 .1000 50 1 100 0)       (0 0 30 1 56 0 60 0 90 .3000 100 0)       (0 0 50 1 80 .3000 100 0)       (0 0 40 .1000 60 .2000 82 1 100 0)       (0 0 10 1 32 .1000 50 1 100 0)       (0 0 60 .1000 80 .3000 95 1 100 0)       (0 0 80 .1000 90 1 100 0)))      (with-sound (:reverb jc-reverb)     (circular-scanned-synth      dur1 freq1 amp1      :wave (rnd-sample size '(1 2 3 4))      :recompute-samps (rnd-sample size '(14 222 32 162 211 72))      :pts (rnd-sample size '(192 256 512))      :cycles (rnd-sample size '(1 2 3))      :amp-env (rnd-sample size env))          (circular-scanned-synth      dur2 freq2 amp2      :wave (rnd-sample size '(1 2 3 4))      :recompute-samps (rnd-sample size '(14 222 32 162 211 72))      :pts (rnd-sample size '(192 256 512))      :cycles (rnd-sample size '(1 2 3))      :amp-env (rnd-sample size env))     )   )
    badd-synth
    (progn   (defparameter size 12)   (setf partials (library 'marangona-partials 'partials nil :random 64))   (setf mpar (remove-partial partials :type :freq :max 1800.0))   (setf par (partial :freq mpar))   (setf freq '(rnd-sample size (flatten par)))   (defparameter dur '(rnd-sample size '(1 2 3 4 5)))   (defparameter amp '(rnd-number size .12 .33))      (with-sound (:reverb jc-reverb)     (badd-synth (eval dur) (eval freq) (eval amp))     (badd-synth (eval dur) (eval freq) (eval amp))     (badd-synth (eval dur) (eval freq) (eval amp))     (badd-synth (eval dur) (eval freq) (eval amp))     (badd-synth (eval dur) (eval freq) (eval amp))     (badd-synth (eval dur) (eval freq) (eval amp))     )   )
    bandedwg-synth
    (progn   (setf row (library 'vienna 'berg 'r11))   (setf degree '(0 3 4 0 -2 -3 -1 0 -2))   (setf mat         (gen-eval 6 '(harmonic-progression                       (setf degree (gen-rotate 2 degree))                       row :relative t)))      (setf end1 (harmonic-progression '(-13 -13) row :relative t))   (setf end2 (harmonic-progression '(-12 -12) row :relative t))   (setf end3 (harmonic-progression '(-13 -13) row :relative t))   (setf end4 (harmonic-progression '(-12) row :relative t))      (defparameter omn (make-omn                      :length '((q) (-h))                      :pitch (assemble-seq mat end1 end2 end3 end4)                      :velocity '(mp)                      :span :pitch))      (with-sound (:reverb jc-reverb)     (bandedwg-synth omn omn omn :mode 1)     )   )  
    As you can see it is quite easy to use CLM in OM with OMN.
    More CLM instruments to come.
  19. Like
    JulioHerrlein reacted to opmo in Removing white spaces from a list ?   
    Done in version 1.3.24409.
  20. Thanks
    JulioHerrlein reacted to opmo in Removing white spaces from a list ?   
    This is how all functions work - with span or trim build in. 🙂
  21. Thanks
    JulioHerrlein reacted to Stephane Boussuge in Removing white spaces from a list ?   
    Personally, i like very much to use the loop macro facilities, much clear and easy for me than recursion.
    Also, I am a big fan of it because it is very powerful.
     
    SB.
  22. Thanks
    JulioHerrlein reacted to AM in Removing white spaces from a list ?   
    i know, LOOPS are not very LISPian! but for me the most simple way "to think such processes" (more intuitive then recursion/iteration). and when the function/code is not to large it's not that important...
  23. Thanks
    JulioHerrlein reacted to opmo in Removing white spaces from a list ?   
    I will make the octave-map function work with octaves numbers as well.
    (octave-map '(c3 cs3 e5 f5 fs6 g5 gs4 a4 as3 b3) '(c3 d3 e3 f3 g4 f4 e4 d4 c4 cs4)) => (c3 d3 e5 f5 g6 f5 e4 d4 c3 cs3) (octave-map '(3 3 5 5 6 5 4 4 3 3) '(c3 d3 e3 f3 g4 f4 e4 d4 c4 cs4)) => (c3 d3 e5 f5 g6 f5 e4 d4 c3 cs3)  
  24. Thanks
    JulioHerrlein reacted to AM in Removing white spaces from a list ?   
    (loop for i in (gen-divide 2 '(c 4 d 5 e 3 c 6 eb 4)) collect (compress i)) => (c4 d5 e3 c6 eb4) i didn't read you posts precisely. only the last ONE ...but you could use COMPRESS...?
  25. Thanks
    JulioHerrlein reacted to Stephane Boussuge in Pluton for Orchestra   
    In memoriam Narcis Bonet who was one of my teachers.
     

    Opusmodus score attached.
    SB.
    PlutonV1-02.opmo
×
×
  • Create New...

Important Information

Terms of Use Privacy Policy