Posted October 27, 20204 yr 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 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
October 27, 20204 yr Hi, as a starting point you can look at passing-intervals function and also length-divide function. Best ! Stéphane
October 27, 20204 yr Author Many thanks, Stephane !! I´m kind of searching methods to generate a good part of the material for my pieces... Maybe it´s necessary to code one different thing per texture... And, after all, merge all the sections together. Thanks a lot !
October 28, 20204 yr I think chord-inversion would be good start, this will allow you to generate chordal as well as melodic material.
October 29, 20204 yr 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)) ) )
Create an account or sign in to comment