Jump to content

Question about composition methods and related functions


Recommended Posts

Dear Friends,

 

Sometimes my composition process is very related to harmony and voice-leading. 

For example starting with a sequence of chords in 4-part writing as a foundation

 for a string quartet or saxophone quartet.

 

So, I have some questions regarding this:

 

1) How to make ornaments and developing the texture in each voice individually but keeping the harmonic movement based on the first "chorale", the fundation of the composition. Maybe harmonic path ? But do you have other hints ?

 

2) How to repeat the notes of a given chord within that foundational 4-part structure

 

image.thumb.png.3f4f237031c17ca9b8c68db4d8696fd3.png

Something like this...

 

I have my ideas, but I´d like to hear more from you (especially in ways to be more flexible).

 

Some of my ideas are here

 

 

 

Link to comment
Share on other sites

Here's one of my way to compose with harmony and voice leading.

 

Best regards

 

Stéphane

 

;;; FANTAISIE POUR CORDES
;;; SB. 28.10.2020
;;; =========================
;;; Section size
(setf size 32)

;;; Chords Structures
(setf boz '((-4 -9 -12 -16)(-6 -10 -15 -22)(-5 -8 -12 -24)))


;;; Melodic construction material generation
(setf melomat (omn-to-measure
            (make-omn
             :pitch (filter-repeat 1 (vector-to-pitch '(g4 c6) (vector-smooth 0.14 (gen-white-noise 96))))
             :length (flatten (rnd-sample 12 '(h q (e e) (3q = =) h (h. q) h)))
             )
            '4/4))


;;; Melody generation
(setf melo (ambitus '(g4 g6) (bind-to-interval '(2 -2) (rnd-sample size melomat))))

;;; Melody vertical harmonisation
(setf melharmo (gen-chord3 melo boz))

;;; Separation between melody and harmony
;;; Remove the top note
(defun rmv-top-nt (chord)
  (butlast (melodize (sort-asc chord)))
)

#|
;exemple d'application sur plusieurs accords.
(chordize-list
 (mapcar (lambda(x) (rmv-top-nt x)) 
         (mclist '(d5g4c4b4e4 d5g4c4b4e4 d5g4c4b4e4))))
|#

;;; Apply closest path to all voices under the melody
(setf harmo (closest-path
             (make-omn
              :pitch (chordize-list
                      (mapcar
                       (lambda(x)
                         (rmv-top-nt x))
                       (mclist
                        (flatten (omn :pitch melharmo))
                        )))
              :length (omn :length melharmo)
              
              )))

;;; Pitch demix
(setf line1 melo)
(setf line2 (pitch-demix 1 harmo))
(setf line3 (pitch-demix 2 harmo))
(setf line4 (pitch-demix 3 harmo))
(setf line5 (pitch-demix 4 harmo))

;;; Adding rest and tie
(setf line1.o line1)
(setf line2.o (length-legato (length-weight line2)))
(setf line3.o (length-legato (length-weight line3)))
(setf line4.o (length-legato (length-weight line4)))
(setf line5.o (length-legato (length-weight line5)))

;;; Distribute to instruments
(setf vn1  (ambitus '(g3 g6) line1.o))
(setf vn2  (ambitus '(g3 g5) line2.o))
(setf vla  (ambitus '(c3 c5) line3.o))
(setf vlc  (ambitus '(c2 e4) line4.o))
(setf ctb  (ambitus '(c1 g2) (pitch-transpose 0 line5.o)))


(setf violin1 vn1)
(setf violin2 vn2)
(setf viola vla)
(setf violoncello vlc)
(setf contrabass ctb)

;;;---------------------------------------------------------
;;; Score and Layout
;;;---------------------------------------------------------

(def-score ftsy
           (:title "Fantaisie pour cordes"
            :composer "S.Boussuge"
            :copyright "Copyright © 2020 s.boussuge"
            :key-signature 'chromatic
            :time-signature '((1 1 1 1) 4) 
            :tempo 72
            :layout (bracket-group
                     (violin1-layout 'violin1)
                     (violin2-layout 'violin2)
                     (viola-layout 'viola)
                     (violoncello-layout 'violoncello)
                     (contrabass-layout 'contrabass)))
  
  (violin1
   :omn violin1
   :channel 1
   :sound 'gm
   :program 'string-ensemble-1
   :volume 100
   :pan 16
   :controllers (91 '(48))
   )

  (violin2
   :omn violin2
   :channel 2
   :sound 'gm
   :program 'string-ensemble-1
   :volume 95
   :pan 111
   :controllers (91 '(48))
   )

  (viola
   :omn viola
   :channel 3
   :sound 'gm
   :program 'string-ensemble-1
   :volume 90
   :pan 32
   :controllers (91 '(60))
   )

  (violoncello
   :omn violoncello
   :channel 4 :sound 'gm
   :program 'string-ensemble-1
   :volume 90
   :pan 95
   :controllers (91 '(60))
   )

  (contrabass
   :omn contrabass
   :channel 5
   :sound 'gm
   :program 'string-ensemble-1
   :volume 90
   :pan 95
   :controllers (91 '(72))
   )
  )

 

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