Jump to content

JulioHerrlein

Members
  • Posts

    814
  • Joined

  • Last visited

Posts posted by JulioHerrlein

  1. CONNECTING BY SEMITONE

     

    Dear Stephane and friends,

     

    I'm back to this idea of fragments, this time with some Dave Liebman licks.

     

    I have one question:

     

    1) How to ensure that the connection between the lines are made always by semitone or whole tone ?

    Is there some way to make an expression for that?

    I'll try to explain it better:

     

    Lets say I have one fragments and some random transpositions, as in the Stephane's solution:

     

    FRAGMENT 1 (Coltrane Pattern)

    (c4 d4 e4 g4)

     

    For connecting to the preceeding  pattern by semitone, the pattern must be transposed to

     

    (fs4 gs4 as4 cs5) > Tritone above or to (ab4 bb4 c5 eb5) > minor 6 above.

     

    For connecting to the (fs4 gs4 as4 cs5) pattern, the pattern must be transposed to

    (c5 d5 e5 g5) > octave above or to (d5 e5 fs5 a5) > ninth above.

     

    And so on...

     

    Depending on the random transposition, I would need a function to check the last note of each pattern to

     calculate the right transposition depending on the last note.

    Maybe a loop function...

     

    I could write all the patterns beginning in C, so after having the last note the transposition could be calculated.

     

    Any idea ?

     

    All the best !

     

    Julio

     

     

     

  2. Janusz,

    It would be great with some kind of span inside, like this:

     

    (octave-map '(3 5 6)
                '(c3 d3 e3 f3 g3 f3 e3 d3 c3 cs3))
    
    => (c3 d5 e6 f3 g5 f6 e3 d5 c6 cs3)

    Best,

    Julio

    Or better:

     

    (octave-map '(3 5 6)
                '(c3 d3 e3 f3 g3 f3 e3 d3 c3 cs3) :span t)
    
    => (c3 d5 e6 f3 g5 f6 e3 d5 c6 cs3)
    
    Best, 

     

     

  3. Dear All,

     

    I'm trying to find a loop for making substitutions in a list, for changing the ranges of a list of pitches.

     

    SOME PITCHES (AND WHAT TO CHANGE)

     

    (setf pitches '(c4 d4 e4 c4 eb4 f4 c4 eb4 eb5))
    (setf i '(c4 eb4))

     

    This will take out the range of the notes, i.e., c4 db5 will became c db

    (defun convert-pitch (pitches)
      (loop for i in pitches
        when (pitchp i)
        collect (compress (butlast (explode i)))
        else collect i))

     

    Setting a variable for pitches without range indication (pitnorng)

    and a new range list

    (setf pitnorng (convert-pitch pitches))
    (setf rangelist '(4 5 3 6 4))

     

    Function to put back the new range to the notes

    (defun convert-pitchbk (pitnorng)
      (loop for i in pitnorng
        when i
        collect (flatten (mapcar 'list pitnorng rangelist)) else collect i
    ))

    Setting a collection of notes with new ranges:

    (setf convbaklst (convert-pitchbk pitnorng))

    The (problematic) result:

    ((c 4 d 5 e 3 c 6 eb 4) (c 4 d 5 e 3 c 6 eb 4) (c 4 d 5 e 3 c 6 eb 4) (c 4 d 5 e 3 c 6 eb 4) (c 4 d 5 e 3 c 6 eb 4) (c 4 d 5 e 3 c 6 eb 4) (c 4 d 5 e 3 c 6 eb 4) (c 4 d 5 e 3 c 6 eb 4) (c 4 d 5 e 3 c 6 eb 4))

     

    I have WHITE SPACES between the note and the corresponding range...

    LISP PROBLEM:

     

    How to remove the white spaces ?

    Best,

    Julio

    And also...

     

    The list is multiplied 9 times... why?

    Some problem in the loop function, I suppose...

  4. Dear Friends,

    Maybe this could work (in def score, not in make omn)

     

    
    (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)
    )

    RESULT

    Best !

    Julio

     

    image.png.0292bce16daa77c440cddaebf62d1ef7.png

  5. Dear Didier,

     

    Maybe you could try this way, with integer-to-pitch function:

    (setf mkomnpit (gen-repeat 10 (integer-to-pitch '(0 2 4 7))))
    (setf mkomnrhy (gen-repeat 5 '(s s s s e. s q q)))
    
    (make-omn
    :length (span mkomnpit mkomnrhy)
    :pitch (span mkomnrhy mkomnpit))

    Integer to Pitch:

    (integer-to-pitch '(0 2 4 7)

    Will result in

    image.png.ced7bb3900629b89e2e64ff5c429f2e3.png

    Best,

    Julio

  6. It would ve great to have the :port and :channel in the make-omn function. Sometimes is interesting for hearing snippets with different sounds without having to compile the entire score (sometimes it take a while,depending on the complexity of the score). The port would help to deal with vst adresses and libraries on auditioning. Best !

  7. Thanks, André !

     

    I was trying to solve this problem

     

     

    (setf melody '(c5 c5 d5 e5 g5 a5 g5 c6 b5 c6))

    (setf blkharm (pattern-map '(((c3) (e2g2a2c3))((d3) (f2gs2b2d3))((e3) (e3c3a2g2))((f3) (gs2b2d3f3))((g3) (g3e3c3a2))((gs3) (b2d3f3gs3))((ab3) (b2d3f3ab3))((a3) (c3e3g3a3))((b3) (d3f3ab3b3))((c4) (e3g3a3c4))((d4) (f3gs3b3d4))((e4) (e4c4a3g3))((f4) (gs3b3d4f4))((g4) (g4e4c4a3))((gs4) (b3d4f4gs4))((ab4) (b3d4f4ab4))((a4) (g4e4c4a4))((b4) (d4f4ab4b4))((c5) (e4g4a4c5))((d5) (f4gs4b4d5))((e5) (e5c5a4g4))((f5) (gs4b4d5f5))((g5) (g5e5c5a4))((gs5) (b4d5f5gs5))((ab5) (b4d5f5ab5))((a5) (g5e5c5a5))((b5) (d5f5ab5b5))((c6) (e5g5a5c6))((d6) (f5gs5b5d6))((e6) (e6c6a5g5))((f6) (gs5b5d6f6))((g6) (g6e6c6a5))((gs6) (b5d6f6gs6))((ab6) (b5d6f6ab6))((a6) (g6e6c6a6))((b6) (d6f6ab6b6)))
                 melody :otherwise 'c4f4bb4eb5))

    (make-omn
     :length '(q e e e e e e q q q)
     :pitch blkharm)

     

    To make some block harmonizations, like this:

     

    image.png.2f3bc60840d0d7fcfbabc532f9526ae8.png

     

    If you are curious, see this post:

     

     

    Best !! Thank you ! You are the LOOPER MAN !

     

    Julio

     

  8. I found a solution with pattern-match.

     

    Pitches for melody

    (setf melody '(c5 c5 d5 e5 g5 a5 g5 c6 b5 c6))

     

    Block harmonization with pattern-match

    (setf blkharm (pattern-map '(((c3) (e2g2a2c3)) ((d3) (f2gs2b2d3))
                                 ((e3) (e3c3a2g2)) ((f3) (gs2b2d3f3))
                                 ((g3) (g3e3c3a2)) ((gs3) (b2d3f3gs3))
                                 ((ab3) (b2d3f3ab3)) ((a3) (c3e3g3a3))
                                 ((b3) (d3f3ab3b3)) ((c4) (e3g3a3c4))
                                 ((d4) (f3gs3b3d4)) ((e4) (e4c4a3g3))
                                 ((f4) (gs3b3d4f4)) ((g4) (g4e4c4a3))
                                 ((gs4) (b3d4f4gs4)) ((ab4) (b3d4f4ab4))
                                 ((a4) (g4e4c4a4)) ((b4) (d4f4ab4b4))
                                 ((c5) (e4g4a4c5)) ((d5) (f4gs4b4d5))
                                 ((e5) (e5c5a4g4)) ((f5) (gs4b4d5f5))
                                 ((g5) (g5e5c5a4)) ((gs5) (b4d5f5gs5))
                                 ((ab5) (b4d5f5ab5)) ((a5) (g5e5c5a5))
                                 ((b5) (d5f5ab5b5)) ((c6) (e5g5a5c6))
                                 ((d6) (f5gs5b5d6)) ((e6) (e6c6a5g5))
                                 ((f6) (gs5b5d6f6)) ((g6) (g6e6c6a5))
                                 ((gs6) (b5d6f6gs6)) ((ab6) (b5d6f6ab6))
                                 ((a6) (g6e6c6a6)) ((b6) (d6f6ab6b6)))
                                melody :otherwise 'c4f4bb4eb5))

     

    OMN with all

    (make-omn
     :length '(q e e e e e e q q q)
     :pitch blkharm)
  9. Dear All,

     

    Some help needed in wildcard uses in Opusmodus Functions and OMN expressions...

     

    ><><><><><><><><><><>

    The definition....

    https://en.wikipedia.org/wiki/Wildcard_character

    In computer (software) technology, a wildcard is a symbol used to replace or represent one or more characters.[2] Algorithms for matching wildcards have been developed in a number of recursive and non-recursive varieties.

    In Unix-like and DOS operating systems, the question mark ? matches exactly one character.

    ><><><><><><><><><><><><><

     

    I was in need of a wildcard to represent a pitch class in ANY register, like "cs?" meaning all C# pitch classes in any register/octave (cs0, cs1, cs2, cs3, cs4, cs5, cs6, cs7, etc).

     

    There are other interesting uses for this wildcards inside functions, to generalize and make recursions possible elegantly.

     

    Any Hints ?

     

    Best,

    Julio

×
×
  • Create New...

Important Information

Terms of Use Privacy Policy