Jump to content

Stephane Boussuge

Moderators
  • Posts

    1,066
  • Joined

  • Last visited

Reputation Activity

  1. Like
    Stephane Boussuge got a reaction from AM in pitch-trajectory   
    Hi,
     
    here's a function I've made for my personal usage.
    May be it could be useful for some users...
    Best
     
    Stéphane
     
    ;;;=================================== ;;; PITCH-TRAJECTORY ;;;=================================== ;;; SB 1.11.21 ;;;=================================== (defun pitch-trajectory (nbpitch range tendency &key (variance 0.5) (type :around) (quantize 1/2) (smooth 1) filter-repeat seed ) (setf seed (rnd-seed seed)) (do-verbose ("pitch-trajectory :seed ~s" seed) (let* ((values (gen-tendency nbpitch tendency :variance variance :type type :seed (seed))) (smoothedval (vector-smooth smooth values)) (out (vector-to-pitch range smoothedval :quantize quantize)) ) (if filter-repeat (filter-repeat filter-repeat out) out)))) #| ;;; Tests divers (pitch-trajectory 32 '(c4 g5) '(0.1 1 0.1) :seed 1234) (pitch-trajectory 32 '(c4 g5) '(0.1 1 0.1) :seed 1234 :filter-repeat 1) (pitch-trajectory 32 '(c4 g5) '(0.1 1 0.1) :seed 1234 :filter-repeat 1 :variance 1 ) (pitch-trajectory 32 '(c4 g5) '(0.1 1 0.1) :seed 1234 :filter-repeat 1 :variance 0.1 ) (pitch-trajectory 32 '(c4 g5) '(0.1 1 0.1) :seed 1234 :filter-repeat 1 :smooth 0.1 ) (pitch-trajectory 32 '(c4 g5) '(0.1 1 0.1) :seed 1234 :filter-repeat 1 :quantize 1/4 ) (pitch-trajectory 32 '(c4 g5) '(0.1 1 0.1) :seed 1234 :filter-repeat 1 :quantize 1/8 ) (pitch-trajectory 32 '(c4 g5) '(0.1 1 0.1) :seed 1234 :filter-repeat 1 :variance 1 :quantize 1/8 ) (gen-filter-change (pitch-trajectory 32 '(c4 g5) '(0.1 1 0.1) :seed 1234) 's) |#  
  2. Like
    Stephane Boussuge reacted to opmo in String Quartet VEMA (in progress)   
    String Quartet VEMA (work in progress) with micro and spectral strategy.
     
    String Quartet VEMA I.mp3
  3. Thanks
  4. Like
    Stephane Boussuge reacted to JulioHerrlein in [HERRLEIN] Hauer Tropes as Clockface Diagrams: Dialogs among Forte, Carter and Ŝedivý - MUSMAT 2021   
    Hauer Tropes as Clockface Diagrams: Dialogs among Forte, Carter and Ŝedivý - MUSMAT 2021
     
    I just did this presentation now !
    All plots done in Opusmodus !
    Hope you like it !
    Best ! Julio
     
     
    Here is the complete session of the Congress !
     
  5. Thanks
    Stephane Boussuge got a reaction from JulioHerrlein in A.S. Mailbox live performance !   
    Excellent, congrats !
     
  6. Like
    Stephane Boussuge reacted to JulioHerrlein in A.S. Mailbox live performance !   
    Dear Friends !
     
    This is the performance of the piece A.S. Mailbox at the Musmat Congress !
    This piece was all done in Opusmodus (with some post editing in Musescore).
    Happy to share this with you !
    I have one more thing this week...
    There are many great pieces in the concert ! (and also a Schoenberg Quartet)  !  Enjoy
     
     
     
  7. Like
    Stephane Boussuge reacted to YiyangW in Apple M1 Arm processor?   
    I don't know if this information will be helpful for those who are also trapped with M1 or for future debugging, but I found a rather consistent pattern of crashing and potentially a way to avoid it:
     
    Opusmodus on M1 always crash during threading. 
    So be patient. Wait until the interpreter finishes its job and then execute the next block of code. This also applies to any manipulations on the GUI, like saving files, function search, etc.
     
    I know it sucks. But to make it suck less..
     
    A side note. Earlier this year I helped upgrading a bunch of Python apps for M1, which also had issues of intermittent crash and it turned out the problem was also with threads. In that case the issue was solved when some problematic lines of code were removed (calling certain parent class methods during threading).
  8. Like
    Stephane Boussuge reacted to JulioHerrlein in Méditation for String quartet   
    Congratulations, Stephane !!
    Best !
     
  9. Like
    Stephane Boussuge got a reaction from paul in Méditation for String quartet   
    Hi,
     
    here's a short score composed for string quartet.
     
    All the best to all OM users !
     
    Stéphane
     

    stephaneboussuge · Méditation  
    MeditationPourRené.opmo
    01 - Conducteur - Méditation.pdf
  10. Like
    Stephane Boussuge reacted to opmo in Combination Function Result (is it rigth ?)   
    Done:
    (combination 3 '(0 1 2 3 4 5)) => ((0 1 2) (0 1 3) (0 1 4) (0 1 5) (0 2 3) (0 2 4) (0 2 5)     (0 3 4) (0 3 5) (0 4 5) (1 2 3) (1 2 4) (1 2 5) (1 3 4)     (1 3 5) (1 4 5) (2 3 4) (2 3 5) (2 4 5) (3 4 5)) (combination 3 '(0 1 2 3 4 5) :permute t) => ((0 1 2) (0 2 1) (1 0 2) (1 2 0) (2 0 1) (2 1 0) (0 1 3)     (0 3 1) (1 0 3) (1 3 0) (3 0 1) (3 1 0) (0 1 4) (0 4 1)     (1 0 4) (1 4 0) (4 0 1) (4 1 0) (0 1 5) (0 5 1) (1 0 5)     (1 5 0) (5 0 1) (5 1 0) (0 2 3) (0 3 2) (2 0 3) (2 3 0)     (3 0 2) (3 2 0) (0 2 4) (0 4 2) (2 0 4) (2 4 0) (4 0 2)     (4 2 0) (0 2 5) (0 5 2) (2 0 5) (2 5 0) (5 0 2) (5 2 0)     (0 3 4) (0 4 3) (3 0 4) (3 4 0) (4 0 3) (4 3 0) (0 3 5)     (0 5 3) (3 0 5) (3 5 0) (5 0 3) (5 3 0) (0 4 5) (0 5 4)     (4 0 5) (4 5 0) (5 0 4) (5 4 0) (1 2 3) (1 3 2) (2 1 3)     (2 3 1) (3 1 2) (3 2 1) (1 2 4) (1 4 2) (2 1 4) (2 4 1)     (4 1 2) (4 2 1) (1 2 5) (1 5 2) (2 1 5) (2 5 1) (5 1 2)     (5 2 1) (1 3 4) (1 4 3) (3 1 4) (3 4 1) (4 1 3) (4 3 1)     (1 3 5) (1 5 3) (3 1 5) (3 5 1) (5 1 3) (5 3 1) (1 4 5)     (1 5 4) (4 1 5) (4 5 1) (5 1 4) (5 4 1) (2 3 4) (2 4 3)     (3 2 4) (3 4 2) (4 2 3) (4 3 2) (2 3 5) (2 5 3) (3 2 5)     (3 5 2) (5 2 3) (5 3 2) (2 4 5) (2 5 4) (4 2 5) (4 5 2)     (5 2 4) (5 4 2) (3 4 5) (3 5 4) (4 3 5) (4 5 3) (5 3 4)     (5 4 3))
     
  11. Like
    Stephane Boussuge reacted to opmo in Note heads - diamond   
    It is fixed already - next update.
     

  12. Like
    Stephane Boussuge reacted to opmo in Function studies (Improviation No.1)   
    Function studies (Improviation No.1)
    Some of function used in the study: logarithmic-spiral, ambitus-series, length-weight, length-legato, pitch-figurate...
     
       
     
     
    The score will be part of the next update - "4. Score Examples/Piano/Improvisation No.1.opmo"
     
    Best wishes,
    Janusz
  13. Like
    Stephane Boussuge reacted to opmo in Opusmodus 2.2.26603 (Update)   
    function-search
     
    List of property types:
     
    Operation:
    analysis apply array call collect condition construct convert define display distribute evaluation filter find generate import initialize iterate map position print process reference result select test  
    Input:
    array attribute binary cent chord clauses db decimal degree dictum element expression file float form function hertz hexachord instrument integer interval length linear list lists map midi msec name nil null number object omn pitch place radian random ratio row score sec section sequence set stream symbol test tick tonality tonality-form tuning values vector velocity voices  
    Output:
    array articulation attribute binary cent chord data db decimal degree dynamic element external float form freq function graph group hertz index integer interval length linear list midi msec nil number object omn omn-form pitch plot radian ratio row score sec sequence test tick tuning values velocity voices  
    Intent:
    above absolute accumulate add addition adjust alias align ambitus anacrusis analysis append apply array asc assemble assign atom attribute augmentation bar below between binary bind brownian build butlast cadr car cardinal cartesian case cellular cent centered change chord chordize class closest cluster collatz collect combination combine compile complement cond condition cons constant controller convert count create crossover cube curve db decf dechord decimal decode define delta demix density desc dictum difference diminution direction disassemble disjoin display dissolve divide division dynamic edit editor element envelope equal euclidean eval evaluation even everyother expand expansion factor fibonacci field figurate filter find fit flatten fragment function get goldbach group harmonics hertz hexachord highest import incf infinity insert instrument instrument-set integer interference interleave interval inversion invert iterate join klangreihen lambda last layer legato length letters library linear list live-coding lowest magic make mandelbrot map mapcar maplist marco markov matrix max melodize merge messiaen metronome micro midi min minus mix mod modify modus morph multiplication multiply mutate negative Noergaar noise normal normalize note nth nthcdr null number octave octaves odd offset omn omn-form order ornament palindrome pan parallel parameter partial path pattern pause pcs percent permute pick pitch plot plus polygon pop population position power-set preserve prime primes prob prog progn progression push pythagorean quantize quantum radian random range ratio read reduce reduction relation remove reorder repeat replace respell rest result retrograde reverse rewrite rhythm rotate round row sample sawtooth scale score section seed select send sequence series sets signature sine single-events size smooth sort sound-set span spiral square staccato step strawinski stream sub-plot subcomplex subdivision subseq substitute subtraction sum sums surround swallow swap symbol symmetric symmetry sync syncopate tempo tendency test text thread tie time time-signature timeline tonality tonnetz transform transition transpose tree triangle trim trope tuning tuplet ulam unfold-set unique unison variable variance variant variation vector velocity voice voices walk weight weight when zigzag  
    Category:
    ambitus analysis array assemble attribute binary chord construct control convert definition distribute evaluation filter find fractal generate hexachord integer interval iterate length library map math midi mix number omn osc partial permutation pitch plot position predicate print probability quantization random row schillinger score section sequence series sieve signature sort span structure system text tonality transform tuning utilities variant vector velocity voice wave  
    This function returns a list of functions which satisfies the property test.
     
    (function-search :input 'midi :output 'pitch) ..................................................... input: midi output: pitch   midi-to-pitch .....................................................  
    To display the function document we place the mouse cursor on to the function name and press the control/tab keys.
     
    Examples:
     
    Here we search the category with filter properties:
     
    (function-search :category 'filter) ..................................................... category: filter   gen-filter-ambitus   gen-filter-anacrusis   gen-filter-change   gen-filter-euclidean   gen-filter-remove   gen-filter-rnd   filter-exclude   filter-first   filter-last   filter-preserve   filter-remove   filter-repeat   filter-tie .....................................................  
    This expression returns all functions with input float:
     
    (function-search :input 'float) ..................................................... input: float   random*   float-to-ratio   gen-controller   gen-mutate-population   gen-mutate   prob?   prob-map   gen-tendency   micro-quantize   quantize   rnd-centered   rnd-round   rnd-variance   rnd   rnd1   vector-multiply   vector-offset   vector-range   vector-round   vector-smooth   vector-to-envelope   vector-to-envelope2   gen-accent   gen-cresc-dim   gen-cresc   gen-dim-cresc   gen-dim .....................................................  
    More examples:
     
    (function-search :input 'float :output 'velocity) ..................................................... input: float output: velocity   gen-accent   gen-cresc-dim   gen-cresc   gen-dim-cresc   gen-dim .....................................................  
     
    (function-search :input 'float :output 'pitch) ..................................................... input: float output: pitch   micro-quantize .....................................................  
     
    (function-search :operation 'generate :input 'float :output 'float) ..................................................... operation: generate input: float output: float   random*   gen-mutate   gen-tendency   rnd-centered   rnd-round   rnd-variance   rnd   rnd1   vector-offset   vector-range   vector-smooth   vector-to-envelope   vector-to-envelope2   gen-accent   gen-cresc-dim   gen-cresc   gen-dim-cresc   gen-dim .....................................................  
     
    (function-search :operation 'generate :output 'pitch) ..................................................... operation: generate output: pitch   pitch-lsystem   messiaen-permutation   gen-cluster   pitch-fragment   pitch-repeat   pitch-repeat2   pitch-repeat3   pitch-repeat4   harmonics   rnd-form-set   rnd-row   klangreihen   pcs-transpose   pcs   gen-trope   trope-hexachord .....................................................  
     
    (function-search :input 'attribute) ..................................................... input: attribute   disjoin-attributes   join-attributes .....................................................  
     
    (function-search :operation 'test) ..................................................... operation: test   ac-hexachordp   attribute-symbolp   chordp   contain-attributep   event-restp   length-notep   length-restp   lengthp   omn-formp   pattern-matchp   pitchp   twelve-tone-segmentp   twelve-tonep   velocityp   evenp   minusp   oddp   plusp   atom   equal   integerp   listp   null   numberp   ratiop   symbolp   osc-thread-alive?   prob? .....................................................  
     
    (function-search :category 'chord) ..................................................... category: chord   chord-inner-remove   chord-interval-add   chord-interval-remove   chord-interval-replace   chord-inversion   chord-parallel-invert   chord-pitch-unique   chord-progression   chord-variation   chordize-list   chordize   create-chord   dechord   expand-chord-name   expand-chord   gen-chord-series   gen-chord   gen-chord2   gen-chord3   gen-cluster .....................................................  
     
    (function-search :intent 'ambitus) ..................................................... intent: ambitus   ambitus-form   gen-ambitus-series   ambitus   gen-binary-ambitus   gen-filter-ambitus   interval-ambitus .....................................................  
     
    (function-search :category 'structure) ..................................................... category: structure   find-bar   insert-bar   remove-bar   replace-bar   split-lengths   choralis   gen-choralis   assemble-voices   counterpoint   dictum-tempo   gen-dictum   make-dictum   density-analysis   density   filter-density   quantum   gen-group   gen-unison   gen-pause   micropolyphony   polyphony   do-section   do-timeline   do-timeline2   section-to-timeline   timeline-to-section   tonnetz-analysis   tonnetz-structure   tonnetz   mclist .....................................................  
    Best wishes,
    Janusz
  14. Like
    Stephane Boussuge reacted to opmo in listener   
    Soon I will release the documentation for the SCORE-PLAYER and STOP-SCORE-PLAYER function.
  15. Thanks
    Stephane Boussuge reacted to AM in listener   
    dear torsten,
    that works perfect!
    so i can display what my algo is doing in each loop...
    thx
     

     
     
  16. Like
    Stephane Boussuge reacted to opmo in Opusmodus 2.2.26563   
    2.2.26563 
     
    – Additional Functionality:
    COUNTERPOINT - additional dictum keyword :tonality
    GEN-DICTUM - additional dictum keyword :tonality
     
    Additional dictum symbol (=) - repeats last method, harmony or tonality values.
     
    In this example we assign an variabile to a list of tonalities:
    (setf tonality1 '((major :root 'a3 :map step :rotate 1 :variant 'i)                   (minor :root 'e4 :map step)                   (major :root 'd4 :map step :rotate 1 :variant 'ri)                   (minor :root 'fs4 :map step))) (counterpoint patterns '(((1 2 1 2) :methods (r - (ri dl5) (r dl2)) :tonality tonality1)))  
    Tonality defined to all voices:
    ((1 2 1 2) :methods (r - (ri dl5) (r dl2)) :tonality ((major :map step)))  
    Same as above with repeat symbol (=). The symbol (=) means repeat of the last tonality used:
    ((1 2 1 2) :methods (r - (ri dl5) (r dl2)) :tonality ((major :map step) = = =))  
    Assigning variables to a list of methods:
    (setf m1 '((t5 1 3) (t12 r))       m2 '(t4 (i t12 tie))       m3 '((r d7) (t9 dl3)))        (counterpoint patterns               '(((1 2) :methods m1)                 ((2 2) :methods m2)                 ((2 1) :methods m3)))  
  17. Like
    Stephane Boussuge reacted to JulioHerrlein in Replace Stream - Amazing Tool !!!!   
    Dear Janusz, 
     
    Thanks for the explanation.  
    I found my way to use it  !!!
    Finally !!!
    It will be VERY USEFUL (thanks a lot)
     
    Here is my way to use it:
    SCORE BEFORE RE-PITCH
     
    ;;; BEFORE REPITCH (progn (setf rv1 '((1/8) (1/8 3/4 1/8 1/8 3/4) (1/4) (1/12 1/12 1/12 3/16 1/4 1/16 -3/8 1/8 1/4 -1/8 1/8) (3/4) (1/8 1/8 1/2 1/4 1/12 1/12 1/12) (3/16) (1/4 1/16 -3/8 1/8 1/4 -1/8 1/8 1/2) (1/4) (1/8 1/2 1/8 1/4 1/12 1/12 1/12 3/16 1/4 1/16) (-3/8 1/8) (1/4 -1/8 1/8 3/4 1/8 1/8) (1/2) (1/4 1/12 1/12 1/12 3/16 1/4 1/16 -3/8 1/8) (1/4) (-1/8 1/8 1/2 1/4 1/8 1/2 1/8) (1/4) (1/12 1/12 1/12 3/16 1/4 1/16 -3/8 1/8 1/4 -1/8 1/8) (3/4) (1/8 1/8 1/2 1/8 3/8) (1/2) (1/8 3/8) (1/8) (1/8 3/4 1/8 1/8 3/4) (1/4) (1/12 1/12 1/12 3/16 1/4 1/16 -3/8 1/8 1/4 -1/8 1/8) (3/4) (1/8 1/8 1/2 1/4 1/12 1/12 1/12) (3/16) (1/4 1/16 -3/8 1/8 1/4 -1/8 1/8 1/2) (1/4) (1/8 1/2 1/8 1/4 1/12 1/12 1/12 3/16 1/4 1/16) (-3/8 1/8) (1/4 -1/8 1/8 3/4 1/8 1/8) (1/2) (1/4 1/12 1/12 1/12 3/16 1/4 1/16 -3/8 1/8) (1/4) (-1/8 1/8 1/2 1/4 1/8 1/2 1/8) (1/4) (1/12 1/12 1/12 3/16 1/4 1/16 -3/8 1/8 1/4 -1/8 1/8) (3/4) (1/8 1/8 1/2 1/8 3/8) (1/2) (1/8 3/8) (1/8) (1/8 3/4 1/8 1/8 3/4) (1/4) (1/12 1/12 1/12 3/16 1/4 1/16 -3/8 1/8 1/4 -1/8 1/8) (3/4) (1/8 1/8 1/2 1/4 1/12 1/12 1/12) (3/16) (1/4 1/16 -3/8 1/8 1/4 -1/8 1/8 1/2) (1/4) (1/8 1/2 1/8 1/4 1/12 1/12 1/12 3/16 1/4 1/16) (-3/8 1/8) (1/4 -1/8 1/8 3/4 1/8 1/8) (1/2) (1/4 1/12 1/12 1/12 3/16 1/4 1/16 -3/8 1/8) (1/4) (-1/8 1/8 1/2 1/4 1/8 1/2 1/8) (1/4) (1/12 1/12 1/12 3/16 1/4 1/16 -3/8 1/8 1/4 -1/8 1/8) (3/4) (1/8 1/8 1/2 1/8 3/8) (1/2) (1/8 3/8))) (setf rv2 '((-1/4 -1/8 1/8) (1/2 -1/4 -1/8 1/8 1/2) (-1/8 1/8) (3/4 -1/2 -1/8 1/8 1/4) (1/12) (1/12 1/12 3/16 1/4 1/16 -1/8 1/8 1/2 -1/8 1/8 1/4) (1/2) (-1/2 -1/8 1/8 1/4 1/12 1/12 1/12 3/16 1/16) (1/4) (-1/8 1/8 1/2 -1/8 1/8 3/4) (-1/2 -1/8 1/8) (1/4 1/12 1/12 1/12 3/16 1/4 1/16 -1/8 1/8) (1/2) (-1/8 1/8 1/4 1/2) (-1/2 -1/8 1/8) (1/4 1/12 1/12 1/12 3/16 1/16 1/4 -1/8 1/8 1/2) (-1/8 1/8) (3/4 -1/2 -1/8 1/8 1/4) (1/12) (1/12 1/12 3/16 1/4 1/16 -1/8 1/8 1/2 -1/4 -1/8 1/8) (1/2) (-1/4 -1/8 1/8) (-1/4 -1/8 1/8) (1/2 -1/4 -1/8 1/8 1/2) (-1/8 1/8) (3/4 -1/2 -1/8 1/8 1/4) (1/12) (1/12 1/12 3/16 1/4 1/16 -1/8 1/8 1/2 -1/8 1/8 1/4) (1/2) (-1/2 -1/8 1/8 1/4 1/12 1/12 1/12 3/16 1/16) (1/4) (-1/8 1/8 1/2 -1/8 1/8 3/4) (-1/2 -1/8 1/8) (1/4 1/12 1/12 1/12 3/16 1/4 1/16 -1/8 1/8) (1/2) (-1/8 1/8 1/4 1/2) (-1/2 -1/8 1/8) (1/4 1/12 1/12 1/12 3/16 1/16 1/4 -1/8 1/8 1/2) (-1/8 1/8) (3/4 -1/2 -1/8 1/8 1/4) (1/12) (1/12 1/12 3/16 1/4 1/16 -1/8 1/8 1/2 -1/4 -1/8 1/8) (1/2) (-1/4 -1/8 1/8) (-1/4 -1/8 1/8) (1/2 -1/4 -1/8 1/8 1/2) (-1/8 1/8) (3/4 -1/2 -1/8 1/8 1/4) (1/12) (1/12 1/12 3/16 1/4 1/16 -1/8 1/8 1/2 -1/8 1/8 1/4) (1/2) (-1/2 -1/8 1/8 1/4 1/12 1/12 1/12 3/16 1/16) (1/4) (-1/8 1/8 1/2 -1/8 1/8 3/4) (-1/2 -1/8 1/8) (1/4 1/12 1/12 1/12 3/16 1/4 1/16 -1/8 1/8) (1/2) (-1/8 1/8 1/4 1/2) (-1/2 -1/8 1/8) (1/4 1/12 1/12 1/12 3/16 1/16 1/4 -1/8 1/8 1/2) (-1/8 1/8) (3/4 -1/2 -1/8 1/8 1/4) (1/12) (1/12 1/12 3/16 1/4 1/16 -1/8 1/8 1/2 -1/4 -1/8 1/8) (1/2) (-1/4 -1/8 1/8))) (setf rv3 '((-1/4 -1/8 1/8) (1/2 -1/4 -1/8 1/8 1/2) (-1/8 1/8) (3/4 -1/2 -1/8 1/8 1/4) (1/12) (1/12 1/12 3/16 1/4 1/16 -1/8 1/8 1/2 -1/8 1/8 1/4) (1/2) (-1/2 -1/8 1/8 1/4 1/12 1/12 1/12 3/16 1/16) (1/4) (-1/8 1/8 1/2 -1/8 1/8 3/4) (-1/2 -1/8 1/8) (1/4 1/12 1/12 1/12 3/16 1/4 1/16 -1/8 1/8) (1/2) (-1/8 1/8 1/4 1/2) (-1/2 -1/8 1/8) (1/4 1/12 1/12 1/12 3/16 1/16 1/4 -1/8 1/8 1/2) (-1/8 1/8) (3/4 -1/2 -1/8 1/8 1/4) (1/12) (1/12 1/12 3/16 1/4 1/16 -1/8 1/8 1/2 -1/4 -1/8 1/8) (1/2) (-1/4 -1/8 1/8) (-1/4 -1/8 1/8) (1/2 -1/4 -1/8 1/8 1/2) (-1/8 1/8) (3/4 -1/2 -1/8 1/8 1/4) (1/12) (1/12 1/12 3/16 1/4 1/16 -1/8 1/8 1/2 -1/8 1/8 1/4) (1/2) (-1/2 -1/8 1/8 1/4 1/12 1/12 1/12 3/16 1/16) (1/4) (-1/8 1/8 1/2 -1/8 1/8 3/4) (-1/2 -1/8 1/8) (1/4 1/12 1/12 1/12 3/16 1/4 1/16 -1/8 1/8) (1/2) (-1/8 1/8 1/4 1/2) (-1/2 -1/8 1/8) (1/4 1/12 1/12 1/12 3/16 1/16 1/4 -1/8 1/8 1/2) (-1/8 1/8) (3/4 -1/2 -1/8 1/8 1/4) (1/12) (1/12 1/12 3/16 1/4 1/16 -1/8 1/8 1/2 -1/4 -1/8 1/8) (1/2) (-1/4 -1/8 1/8) (-1/4 -1/8 1/8) (1/2 -1/4 -1/8 1/8 1/2) (-1/8 1/8) (3/4 -1/2 -1/8 1/8 1/4) (1/12) (1/12 1/12 3/16 1/4 1/16 -1/8 1/8 1/2 -1/8 1/8 1/4) (1/2) (-1/2 -1/8 1/8 1/4 1/12 1/12 1/12 3/16 1/16) (1/4) (-1/8 1/8 1/2 -1/8 1/8 3/4) (-1/2 -1/8 1/8) (1/4 1/12 1/12 1/12 3/16 1/4 1/16 -1/8 1/8) (1/2) (-1/8 1/8 1/4 1/2) (-1/2 -1/8 1/8) (1/4 1/12 1/12 1/12 3/16 1/16 1/4 -1/8 1/8 1/2) (-1/8 1/8) (3/4 -1/2 -1/8 1/8 1/4) (1/12) (1/12 1/12 3/16 1/4 1/16 -1/8 1/8 1/2 -1/4 -1/8 1/8) (1/2) (-1/4 -1/8 1/8))) (setf rv4 '((-1/4 -1/4 -1/8 1/8) (1/4 -1/4 -1/4 -1/8 1/8 1/4) (1/8) (7/8 1/4 1/12 1/12 1/12 3/16 1/16 1/8 1/8) (3/4) (-1/4 -1/8 1/8 1/4 1/8 3/8) (1/2) (1/4 1/12 1/12 1/12 3/16 1/16 1/8 1/2 1/8) (1/4) (-3/8 1/8 1/4 1/8 7/8) (1/4) (1/12 1/12 1/12 3/16 1/16 1/8 1/8 3/4) (-1/4 -1/8 1/8) (1/4 1/8 3/8 1/2 1/4 1/12 1/12 1/12) (3/16) (1/16 1/8 1/2 1/8 1/4 -3/8 1/8 1/4) (1/8) (7/8 1/4 1/12 1/12 1/12 3/16 1/16 1/8 1/8) (3/4) (-1/4 -1/8 1/8 1/4) (-1/4 -1/4 -1/8 1/8) (1/4) (-1/4 -1/4) (-1/4 -1/4 -1/8 1/8) (1/4 -1/4 -1/4 -1/8 1/8 1/4) (1/8) (7/8 1/4 1/12 1/12 1/12 3/16 1/16 1/8 1/8) (3/4) (-1/4 -1/8 1/8 1/4 1/8 3/8) (1/2) (1/4 1/12 1/12 1/12 3/16 1/16 1/8 1/2 1/8) (1/4) (-3/8 1/8 1/4 1/8 7/8) (1/4) (1/12 1/12 1/12 3/16 1/16 1/8 1/8 3/4) (-1/4 -1/8 1/8) (1/4 1/8 3/8 1/2 1/4 1/12 1/12 1/12) (3/16) (1/16 1/8 1/2 1/8 1/4 -3/8 1/8 1/4) (1/8) (7/8 1/4 1/12 1/12 1/12 3/16 1/16 1/8 1/8) (3/4) (-1/4 -1/8 1/8 1/4) (-1/4 -1/4 -1/8 1/8) (1/4) (-1/4 -1/4) (-1/4 -1/4 -1/8 1/8) (1/4 -1/4 -1/4 -1/8 1/8 1/4) (1/8) (7/8 1/4 1/12 1/12 1/12 3/16 1/16 1/8 1/8) (3/4) (-1/4 -1/8 1/8 1/4 1/8 3/8) (1/2) (1/4 1/12 1/12 1/12 3/16 1/16 1/8 1/2 1/8) (1/4) (-3/8 1/8 1/4 1/8 7/8) (1/4) (1/12 1/12 1/12 3/16 1/16 1/8 1/8 3/4) (-1/4 -1/8 1/8) (1/4 1/8 3/8 1/2 1/4 1/12 1/12 1/12) (3/16) (1/16 1/8 1/2 1/8 1/4 -3/8 1/8 1/4) (1/8) (7/8 1/4 1/12 1/12 1/12 3/16 1/16 1/8 1/8) (3/4) (-1/4 -1/8 1/8 1/4) (-1/4 -1/4 -1/8 1/8) (1/4) (-1/4 -1/4))) (setf v1pit '(f5 e5 f5 e5 f5 e5 f5 e5 f5 e5 f5 e5 f5 e5 f5 e5 f5 e5 f5 e5 f5 e5 f5 e5 f5 e5 f5 e5 f5)) (setf v2pit '(c4 d4 c4 d4 c4 d4 c4 d4 c4 d4 c4 d4 c4 d4 c4 d4 c4 d4 c4 d4 c4 d4 c4 d4 c4 d4 c4 d4 c4)) (setf v3pit '(bb3 gs3 bb3 gs3 bb3 gs3 bb3 gs3 bb3 gs3 bb3 gs3 bb3 gs3 bb3 gs3 bb3 gs3 bb3 gs3 bb3 gs3)) (setf v4pit '(bb2 eb2 bb2 eb2 bb2 eb2 bb2 eb2 bb2 eb2 bb2 eb2 bb2 eb2 bb2 eb2 bb2 eb2 bb2 eb2 bb2 eb2)) (setf len-map1 '((e (stacc)) (s (ord)) (h (long)) (h. (long)) (w (long)))) (setf len-map2 '((e (list (rnd-pick '(mf f)))) (s (mf)) (e. (mf)) (h (p<f)) (h. (p<f)) (w (P<f>p))(wq (P<f>p))(wh (P<f>p))(wh. (P<f>p))(ww (P<f>p)))) (setf v1mat-a (make-omn :length rv1 :pitch (span rv1 v1pit) ;to gen-divide = 1 use v1dtc, instead of v1dtb :span :length :velocity (length-map len-map2 rv1 :otherwise '(mf) :repeat t) :articulation (length-map len-map1 rv1 :otherwise '(ord) :repeat t))) (setf v2mat-a (make-omn :length rv2 :pitch (span rv2 v2pit) :span :length :velocity (length-map len-map2 rv2 :otherwise '(mf) :repeat t) :articulation (length-map len-map1 rv2 :otherwise '(ord) :repeat t))) (setf v3mat-a (make-omn :length rv3 :pitch (span rv3 v3pit) :span :length :velocity (length-map len-map2 rv3 :otherwise '(mf) :repeat t) :articulation (length-map len-map1 rv3 :otherwise '(ord) :repeat t))) (setf v4mat-a (make-omn :length rv4 :pitch (span rv4 v4pit) :span :length :velocity (length-map len-map2 rv4 :otherwise '(mf) :repeat t) :articulation (length-map len-map1 rv4 :otherwise '(ord) :repeat t))) (ps 'gm :sq (list (pitch-transpose 0 (ambitus 'violin v1mat-a )) (pitch-transpose 0 (ambitus 'violin v2mat-a)) (pitch-transpose 0 (ambitus 'viola v3mat-a)) (pitch-transpose 0 (ambitus 'cello v4mat-a)) ) :key-signature 'atonal :time-signature '(4 4) ;:tempo 90 :flexible-clef nil :title "Quartet BEFORE RE-PITCH - JULIO HERRLEIN" :display :window) )  
    My solution is to use one distribute-stream per voice.
    In this way, I can just put exactly what I want in each voice.
     
    ;;; QUARTET AFTER REPITCH PROCESS USING One instance of Distribute-Stream for each voice (progn (setf repitch1 '(f5 e5 d5 c5 f5 e5 d5 c5 f5 e5 d5 c5 f5 e5 d5 c5 f5 e5)) (setf repitch2 '(c4 cs4 d4 eb4 e4 f4 fs4 g4 gs4 a4 bb4 c5 cs5 d5 eb5 e5)) (setf repitch3 '(c4 b3 bb3 a3 gs3 g3 fs3 f3 e3 eb3 d3 cs3 c3 b2 bb2 a2)) (setf repitch4 '(cs2 g2 cs2 g2 cs2 g2 cs2 g2 cs2 g2 cs2 g2 cs2 g2 cs2 g2)) (setf v1-new (distribute-stream repitch1 (list v1mat-a))) (setf v2-new (distribute-stream repitch2 (list v2mat-a))) (setf v3-new (distribute-stream repitch3 (list v3mat-a))) (setf v4-new (distribute-stream repitch4 (list v4mat-a))) (setf in1 (make-omn :length v1mat-a :pitch (1~ v1-new))) (setf in2 (make-omn :length v2mat-a :pitch (1~ v2-new))) (setf in3 (make-omn :length v3mat-a :pitch (1~ v3-new))) (setf in4 (make-omn :length v4mat-a :pitch (1~ v4-new))) (ps 'gm :sq (list (pitch-transpose 0 (ambitus 'violin in1)) (pitch-transpose 0 (ambitus 'violin in2)) (pitch-transpose 0 (ambitus 'viola in3)) (pitch-transpose 0 (ambitus 'cello in4)) ) :key-signature 'atonal :time-signature '(4 4) ;:tempo 90 :flexible-clef nil :title "Quartet RE-PITCH - JULIO HERRLEIN" :display :window) )  
    All the best !!
    Julio
  18. Thanks
    Stephane Boussuge reacted to opmo in Counterpoint Question - use of variable for harmony keyword   
    I will add a new dictum element :tonality.
    And you will be able to use variables in the :methods, :harmony and :tonality dictum.
     
    This will work:
    (setf harmony2 '((a3b3e4gs4) (b3e4gs4a3) (e4gs4a3b3)(gs4a3b3e4))) ... ((1 2 3 4) :harmony harmony2 :tempo 72) ...  
  19. Like
    Stephane Boussuge got a reaction from JulioHerrlein in Replace Stream - Amazing Tool !!!!   
    I agree, an horizontal replacement possibility would be very useful.
     
    Best !
     
    SB.
  20. Like
    Stephane Boussuge reacted to JulioHerrlein in Replace Stream - Amazing Tool !!!!   
    Dear Friends,
     
    Please check this replace-stream function !!
    This is what I was searching for and trying to achieve for a long time !!
    It really worth to upgrade.
     
    I have some questions regarding this new tool:
    Here is the code, similar to the documentation.
    First, we have the Bach Chorale.
    Second, there are some original material that looks like this:
    V1 plays only E and F pitch classes
    V2 plays only C and D pitch classes
    VLA plays only Bb and G# pitch classes
    CELLO plays only Bb and Eb pitch classes
     
    For easy understanding of the point

    When I do the replace-stream, I.E., using the new pitch classes to the old Bach Chorale, I get this

    My new notes are traversing the instruments vertically and not horizontally (voice by voice)
    I´d like to keep the same pitch classes in each instrument, just with the new rhythms of the Bach Chorale, I.E., the VL1 plays only E and F, the VL2, only C and D, as I had in the original music.
     
    It´s just like an inverted axis... (or maybe the distribution is related with the length...)
     
    There is some solution ?
    I hope so, because this sounds AMAZING !
    It´s just what I need !
    I was trying to do this with the counterpoint function (in the previous post, with the :harmony keyword, but getting some noise in between, because of the nature of embedded harmonic path inside the Counterpoint function.
     
     
    Best !
    Julio
     
     
     
     
    ;;;FORUM QUESTION ;;--------------------------------------------------------- ;; Bach, BWV 0004 (progn (setf soprano '((-h. q b4) (q as4 e b4 cs5 q d5 e5) (q d5 cs5 b4 fermata b4) (q g4 a4 b4 e a4 g4) (e fs4 e4 q fs4 e4 fermata b4) (q as4 e b4 cs5 q d5 e5) (q d5 cs5 b4 fermata b4) (q g4 a4 b4 e a4 g4) (e fs4 e4 q fs4 e4 fermata -q) (e e4 fs4 q g4 a4 e e4 fs4) (q g4 a4 b4 fermata b4) (q e5 ds5 e5 e fs5 e5) (q d5 cs5 b4 fermata cs5) (q d5 e b4 cs5 q d5 a4) (q g4 fs4 h e4 fermata) (q b4 a4 h g4) (h fs4 e4 fermata)) alto '((-h. q g4) (q fs4 fs4 fs4 fs4) (q fs4 e fs4 e4 q ds4 fermata fs4) (q e4 d4 e d4 ds4 q e4 tie) (q e4 ds4 b3 fermata g4) (q fs4 fs4 fs4 fs4) (q fs4 e fs4 e4 q ds4 fermata fs4) (q e4 d4 e d4 ds4 q e4 tie) (q e4 ds4 b3 fermata -q) (q b3 e4 q. e4 e ds4) (q e4 d4 d4 fermata e g4 a4) (q b4 a4 b4 fs4) (q fs4 e fs4 e4 q d4 fermata e4) (q fs4 d4 g4 fs4) (e fs4 e4 e4 ds4 h e4 fermata) (e d4 e4 q. fs4 e ds4 q e4 tie) (q e4 ds4 h b3 fermata)) tenor '((-h. e e4 d4) (q cs4 e d4 as3 q b3 cs4) (q b3 as3 fs3 fermata b3) (e b3 c4 b3 a3 g3 a3 q b3) (q c4 e fs3 a3 q g3 fermata e e4 d4) (q cs4 e d4 as3 q b3 cs4) (q b3 as3 fs3 fermata b3) (e b3 c4 b3 a3 g3 a3 q b3) (q c4 e fs3 a3 q g3 fermata -q) (e g3 a3 q b3 e a3 b3 q c4) (q b3 a3 g3 fermata d4) (q g4 fs4 e e4 d4 q cs4) (q b3 as3 fs3 fermata g3) (q a3 g3 g3 e d4 c4) (q b3 a3 h g3 fermata) (q g3 e fs3 b3 q b3 c4 tie) (q c4 e b3 a3 h gs3 fermata)) bass '((-h. q e3) (e fs3 e3 d3 cs3 q b2 as2) (q b2 fs2 b2 fermata ds3) (q e3 fs3 e g3 fs3 q e3) (e a2 s b2 c3 q b2 e2 fermata e3) (e fs3 e3 d3 cs3 q b2 as2) (q b2 fs2 b2 fermata ds3) (q e3 fs3 e g3 fs3 q e3) (e a2 s b2 c3 q b2 e2 fermata -q) (q. e3 e d3 c3 b2 q a2) (q e3 fs3 g3 e g3 fermata fs3) (q e3 fs3 gs3 as3) (q b3 fs3 b2 fermata e3) (q d3 g3 e b2 c3 q d3) (q e3 b2 h c3 fermata) (q g3 ds3 e3 c3) (q a2 b2 h e2 fermata))) (def-score bach-bwv-0004 ( :title "Bach, BWV-0004" :composer "J.S. Bach" :key-signature '(e min) :time-signature '(4 4) :tempo 88 :layout (choir-satb-layout 'soprano 'alto 'tenor 'bass) ) (soprano :omn soprano :channel 1 :sound 'gm :program 0) (alto :omn alto :channel 2) (tenor :omn tenor :channel 3) (bass :omn bass :channel 4) ) ) ;;; ORIGINAL MATERIAL (4 voices) ;; EACH VOICE USES DIFFERENT PITCH CLASSES FOR DEBUG ;;; this voice uses only pcs E and F (setf v1mat-a '((e f5 stacc) (e e5 stacc h. f5 p<f long e e5 mf stacc f5 stacc h. e5 p<f long) (q f5 mf ord) (3q e5 ord f5 ord e5 ord e. f5 ord q e5 ord s f5 ord -q. e e5 stacc q f5 ord -e e5 stacc))) ;;; this voice uses only pcs C and D (setf v2mat-a '((-q -e c4 f stacc) (h d4 p<f long -q -e c4 f stacc h d4 p<f long) (-e c4 f stacc) (h. d4 p<f long -h -e c4 f stacc q d4 mf ord) (3q c4 ord) (3q d4 ord c4 ord e. d4 ord q c4 ord s d4 ord -e c4 f stacc h d4 p<f long -e c4 f stacc q d4 mf ord))) ;;; this voice uses only pcs Bb and G# (setf v3mat-a '((-q -e bb3 stacc) (h gs3 p<f long -q -e bb3 mf stacc h gs3 p<f long) (-e bb3 mf stacc) (h. gs3 p<f long -h -e bb3 mf stacc q gs3 ord) (3q bb3 ord))) ;;; this voice uses only pcs Bb and Eb (setf v4mat-a '((-q - -e bb2 stacc) (q eb2 ord - - -e bb2 stacc q eb2 ord) (e bb2 stacc) (h.. eb2 ord q bb2 ord 3q eb2 ord bb2 ord eb2 ord e. bb2 ord s eb2 ord e bb2 stacc eb2 stacc))) ;;; PREVIEW ORIGINAL MATERIAL (ps 'gm :sq (list (pitch-transpose 0 (ambitus 'violin v1mat-a )) (pitch-transpose 0 (ambitus 'violin v2mat-a)) (pitch-transpose 0 (ambitus 'viola v3mat-a)) (pitch-transpose 0 (ambitus 'cello v4mat-a)) ) :key-signature 'atonal :time-signature '(4 4) ;:tempo 90 :flexible-clef nil :title "replace stream" :display :window) (setf original-pitches (list v1mat-a v2mat-a v3mat-a v4mat-a)) (setf stream (collect-stream :pitch original-pitches)) (setf bach (collect-score-instruments 'bach-bwv-0004)) (replace-stream stream bach :index 'v :articulation nil :rest-articulation nil) (ps 'gm :sq (list v1 v2 v3 v4) :time-signature '(3 4) :tempo tempo )  

  21. Like
    Stephane Boussuge reacted to opmo in Gen-Choralis: How to bypass voice leading ?   
    Will have a look.
  22. Like
    Stephane Boussuge got a reaction from JulioHerrlein in Counterpoint Question - use of variable for harmony keyword   
    The notes in patterns are not really rounded, they are the harmonic path itself, they are played sequentially in order from the notes given to :harmony parameter , so if you want to use closest path or any voices leading technique, you need to prepare your :harmony sequence of pitches right to be what you need.
     
    This :harmony could be also useful for serial or pitch-class composers who want to play the pitches from some row/Pcs in order, kind of horizontal distribution of pitches for motivic design.  
     
    For vertical distribution across voices, I would probably prefer to use the distribute-seq function or a similar approach.
     
    It is also possible to use tonality-map function after the counterpoint but it would be nice to be able to use it also directly into counterpoint dictum like the :harmony keyword,
    something like :tonality keyword.  Janusz ?  🙂
     
    Best !
     
    Stf
     
     
  23. Like
    Stephane Boussuge got a reaction from JulioHerrlein in Counterpoint Question - use of variable for harmony keyword   
    Please, note that harmony in counterpoint is the application of the harmonic-path function, who allow you to keep voice leading in chords
    as I showed several times in my lessons, and it is very different than tonality-map function.
     
    Btw, if you use scale in :harmony parameter you will get scalar motive in counterpoint but if you use chords with well defined voices leading from chord to chord, the result could become much interesting in terms of harmonic control and voice leading control 
    SB.
  24. Like
    Stephane Boussuge got a reaction from JulioHerrlein in Counterpoint Question - use of variable for harmony keyword   
    That's lisp 😉
     
     
  25. Thanks
    Stephane Boussuge got a reaction from opmo in Counterpoint Question - use of variable for harmony keyword   
    Try this :
     
    (progn ;; Global SEED (init-seed 15342) ;; Patterns (setf ;p1 '((-s c1 p g2 cs3) (3q fs3 - bb3) (-3q eb4 mf a4) (-s b4 d5 f5) ; (-5q gs5 e6 c1 mp g2) (-3q cs3 fs3 mf) (s bb3 - eb4 p a4) (s b4 mp d5 f5 -)) ;p2 '((5q bb2 mf g3 c4 e3 a3) (5q d4 mp fs4 gs4 b4 p cs5) (s f5 eb6 bb3 g3)) ;p3 '((5q fs4 p - bb3 f3 e4) (-3q g4 c5) (s eb5 a5 mf cs6 gs6) ; (5q gs6 pp cs6 mf a5 eb5 -) (-s c5 g4 e4)) ;p4 '((5q bb3 p a4 c6 cs6 cs6) (s g7 mp a6 c6 e5 - d4 cs4 g3 3h fs3 eb3 -) ; (-3q b6 pp a6 5q c6 - d5 bb4 b3 -s gs3 f1 eb3)) p5 '((5q c2 mf g2 e2 a2 b2) (5q fs5 p gs5 bb5 b5 cs5 mp) (s f5 eb6 c6 p g6)) p6 '(s a4 p e b5 s gs3 3h f3 3q e2 5h eb4 5q g5 fs2 f4) p7 '(5q cs5 mf d5 5h eb5 5q f5 fs5 gs5 5h a5 f 5q bb5 5h b5 5q cs6 5h) p8 '(t bb4 mp cs6 c5 b5 bb4 cs6 a3 gs2 3q a2 gs5 fs4) ) (setf p1 '(e d7 d7 d7 d7 d7 d7 d7 d7 s d6 d6 d6 d6 d6 d6 d6 d6 h)) (setf p2 '(e d5 d5 d5 d5 d5 d5 d5 d5 s d4 d4 d4 d4 d4 d4 d4 d4 h)) (setf p3 '(e d4 d4 d4 d4 d4 d4 d4 d4 s s s s s s s s h d3)) (setf p4 '(e d2 d2 d2 d2 d2 d2 d2 d2 s s s s s s s s h d1)) ;(pitch-transpose 2 p4) (setf patterns (list p1 p2 p3 p4 p5 p6 p7 p8)) (setf harmony2 '((a3b3e4gs4) (b3e4gs4a3) (e4gs4a3b3)(gs4a3b3e4))) (setf dictum-a `(((1 2 3 4) :harmony ,harmony2 :tempo 72) ((1 2 3 4) :harmony ((a3b3e4gs4) (b3e4gs4a3) (e4gs4a3b3)(gs4a3b3e4)) :tempo 72) ((2 1 3 4) :harmony ((a3b3e4gs4) (b3e4gs4a3) (e4gs4a3b3)(gs4a3b3e4)):methods (- ri - -) :tempo 72) ((3 2 1 4) :harmony ((a3b3e4gs4) (b3e4gs4a3) (e4gs4a3b3)(gs4a3b3e4)):methods (a d2 r -) :tempo 72) ((4 3 2 1) :harmony ((a3b3e4gs4) (b3e4gs4a3) (e4gs4a3b3)(gs4a3b3e4)) :tempo 72) ((4 2 1 4):harmony a3b3e4gs4) ((2 3 1 4):harmony a3b3e4gs4) ((3 2 1 4):harmony a3b3e4gs4) ((- - - -) :span 1/4 :harmony a3b3e4gs4)) dictum-b '(((- 5 2 -) :span 3/4 :methods (- ri - -) :tempo 64) ((- 2 2 6) :span 3/4 :methods (- d d3 -) :tempo (:rit 80 56 1/64)) ((4 6 6 8) :span 2/4 :methods (a d2 r -) :tempo 88) ((- - - -) :span 1/4)) dictum-c '(((7 4 - 5) :methods (a d i ?) :extend (s - s -) :tempo 64) ((1 2 2 3) :methods (a d i -) :extend (s - s -))) dictum-d '(((- 3 - -) :methods (- - - -) :tempo 80) ((- 2 - -) :methods (- - - -)) ((- 4 - -) :methods (< - - -)) ;((1 1 1 1) :methods (da ad (r d5) (i d2)) :polyphony (7 o) :tempo 72) ) ) ;; Sections (setf sec-a (counterpoint patterns dictum-a :global-methods '((dyn fl) - - -))) (setf sec-b (counterpoint patterns dictum-b :global-methods '((dyn fl) (dyn cl) (t-12 dyn hn) (t-12 dyn vc)) :global-polyphony '((10 p) (1 13)) :iterate t)) (setf sec-c (counterpoint patterns dictum-c :global-methods '((dyn fl) (dyn cl) (t-12 dyn hn) (t-12 dyn vc)) :global-polyphony '((7 p) (1 13)) :iterate t)) (setf sec-d (counterpoint patterns dictum-d :global-methods '((dyn fl) (dyn cl) (dyn hn) (dyn vc)))) ;; Assemble Voices (assemble-voices 'voice sec-a sec-b sec-c sec-d) (ps 'gm :sq ;(list (pitch-transpose 12 vh1-2) vh2-2 vh3-2 vh4-2) (list (pitch-transpose 0 voice1) (pitch-transpose 0 voice2) (pitch-transpose 0 voice3) (pitch-transpose 0 voice4) #| (pitch-transpose 0 (ambitus 'violin voice1)) (pitch-transpose 0 (ambitus 'violin voice2)) (pitch-transpose 0 (ambitus 'viola voice3)) (pitch-transpose -12 (ambitus 'cello voice4)) |# ) :key-signature 'atonal ;;;obs:it´s possible to bypass the time signature we did before opening the time signature here ;;time-signature timesig-proc are processed lists of time-signatures ;:time-signature timesig ;:tempo 90 :flexible-clef nil :title ;:flexible-clef nil "Quartet Harmony Control - JULIO HERRLEIN" :display :window) ;; Global SEED back to NIL (init-seed nil) ) SB
    The trick is here with backquote:
     
    `(((1 2 3 4) :harmony ,harmony2 :tempo 72)
×
×
  • Create New...

Important Information

Terms of Use Privacy Policy