Jump to content

Replace Stream - Amazing Tool !!!!


Recommended Posts

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

image.png.ad5f6dd6d075aaa2719f55a571cadafd.png

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

image.png.16f6ad7161c3c1eeadb40047cfd2404e.png

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
    )

 

image.png

Link to comment
Share on other sites

 

If the restream function could collect the notes horizontally from the source score and place the same way in the destination score it would be nice.  

 

Below, I suggest using one restream for each voice. It works like a charm.

 

Another possibility would be having the :harmony keyword in the Counterpoint function working with the exact notes you put, without messing the octaves (side effect of the embedded harmonic path).

 

So the method for composing would be:

 

1) Do whatever patterns you like ( don´t think about the notes, just the rhythmic texture of the Counterpoint)

2) Put the notes you like (in the exact octave you want) in the :harmony keyword

3) Let the counterpoint do the span (according with the longest pattern or specify spans for each measure

4) Be happy !!

 

For my purposes, the counterpoint is still what is "almost there". 

 

Best,

Julio

Link to comment
Share on other sites

 

3 hours ago, JulioHerrlein said:

It´s difficult to keep the right note distribution in the voices and keeping the voicings of the harmony...

I end up having to predefine lengths and making manual calculations making the function superfluous...

 

Nothing to do with calculation or lengths or any of that sort.  🙂

Doing any other way the harmonic work is lost.

 

The voices delta time is of essence.

 

The vertical distribution is very useful in "class composition" (number of scores base on structural template) where your harmonic stream is set and you test it with many possibile scores. Everything in the scores stays as it is: velocity, articulation and duration and only the pitch stream (one by one) will be distributed to all voices.

 

The simplest way to understand the function is to think of music analysis.
 

Link to comment
Share on other sites

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

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

Terms of Use Privacy Policy