RST Posted July 28 Share Posted July 28 Greetings! The notion of using this topic to provide insights into individual working methods will be really valuable to the community! Such a great idea! As a modest and simple example I offer this experiment in micropolyphony. ;; Experiement in micropolyphony - inspired by Ligeti ;; Robert Scott Thompson - July 28, 2024 - Roswell (80 deg F, Rain) ;; ;; DEFINE UNIQUE FUNCTIONS ;; ;; A Stepped Function for a line vector - ;; not used in this example (defun stepped-function (start end num-points) (let ((step (/ (float (- end start)) (1- num-points)))) (loop for i from 0 to (1- num-points) collect (+ start (* i step))))) (defun create-stepped-function (start end num-points) (let ((points (stepped-function start end num-points))) (mapcar #'round points))) ;; Example usage: ;;(create-stepped-function 1 10 5) ; => (1 3 5 7 10) ;;(create-stepped-function 0 8 50) ; => (0 3 5 8) ;; A Stepped Function for a line vector with a simple percentage slope adjustment - ;; used in this example (defun generate-stepped-line (start end num-points percentage) (let* ((total-diff (- end start)) (adjusted-diff (* total-diff (/ percentage 100.0))) (step (/ adjusted-diff (1- num-points)))) (loop for i from 0 to (1- num-points) collect (round (+ start (* i step)))))) ;; Example usage: ;;(generate-stepped-line 1 10 5 100) ; => (1 3 5 7 10) ;;(generate-stepped-line 1 10 5 50) ; => (1 2 3 5 6) ;;(generate-stepped-line 1 10 5 200) ; => (1 5 8 12 15) ;; ;; BEGIN COMPOSE ALGO - Micropolyphony Experiment ;; ;; Inspired by Ligeti (et al). This is an experimental texture - what I often refer to as ;; a "compositional primitive" - and often a kind of starting place for the generation of ;; materials for a composition when I begin working with CAC tools like Opusmodus. ;; ;; The notion of the "primitive" is that it remains a small compact program, easy to change ;; and manipulate as materials are developed. What is so helpful with OMN is that the output ;; can be "deconstructed" algorithmically and used in myriad contexts. ;; ;; More complex programs - perhaps defining an entire work - are often less easy to manage in this ;; manner. Yet, they also are quite good, depending upon the context of the musical research. ;; ;; In this example, there are some simple functions for control vectors defined. The musical idea ;; is of two lines (here a flute and 'cello) that begin more or less together in a polyphonic flux ;; but divert with the cello moving slowly down in tessitura over the duration of the passage. ;; ;; Textures such as this one are used in various elaborate contexts in my work FLEXURE for two ;; violins (Music for Strings recording - for example) and also NEXI for violin and viola (same). ;; However, these works were not created using CAC techniques (computer assisted composition). ;; Rather, they were composed using more traditional methods and aided by graph paper, charts, and lists. ;; Both scores are available from American Composers Edition, New York. ;; ;; First Step - to define some duration (length) materials: ;; mat1 - flute (setf mat1 (sieve-tree 16 2 5)) (setf m1span (get-span mat1)) ;; mat2 - cello (setf mat2 (flatten (gen-loop 22 (gen-tuplet 1 2 '? 'n 'q '(5 3 4) :times 1 :omn t)))) (setf mat2s (get-span mat2)) ;;(setf mat2R (length-rest-invert mat2)) ;;(setf m2span (get-span mat2R)) ;; spanning the cello durations to the flute durations (setf mat2span (length-span m1span mat2)) ;(get-span mat2span) ;; getting counds of legth events for later use (setf m1cnt (get-count mat1)) (setf m2cnt (get-count mat2)) (setf m2scnt (get-count mat2span)) ;; Second Step - to create pitch material for the micropolyphony ;; first for the flute (setf stream_pitches (filter-repeat 1 (gen-eval m1cnt '(rnd-sample 1 '(b3 c4 cs4 ds4))))) ;; then for the cello - but changing based on duration values (setf stream2_pitches (filter-repeat 1 (length-map '((5q b3) (3q c4) (s cs4) (e ds4)) mat2span))) ;(get-count stream2_pitches) ;; transforming cello pitches to integers. This step is important to the creation of the ;; diverging cello line that moves progressively lower in pitch. (setf stream2_pitches_int (pitch-to-integer stream2_pitches)) ;; getting the count of output pitches from cello (setf stream2_pitches_cnt (get-count stream2_pitches_int)) ;; Third Step ;; generation of the stepped line function to drive the cello pitch set progressively lower ;; in pitch ;; defining the stepped fucntion (setf stairs (generate-stepped-line 0 -12 stream2_pitches_cnt 100)) ;(get-count stairs) ;; adding the step function to the original pitches (as integers) (setf stream2_sum_int (mapcar #'+ stream2_pitches_int stairs)) ;(get-count stream2_sum_int) ;; converting the resulting cello pitches from integers back to pitches (setf stream2_pitches_sum (integer-to-pitch stream2_sum_int)) (get-count stream2_pitches_sum) ;; creating dynamincs vectors for the musical fragment (setf stream_vel (gen-cresc-dim m1cnt 'ppp 'f)) (setf stream2_vel (gen-cresc-dim m2scnt 'ppp 'f)) ;; Creating the OMN (setf stream (make-omn :length mat1 :pitch stream_pitches :velocity stream_vel )) ;(get-count stream) (setf stream2 (make-omn :length mat2span :pitch stream2_pitches_sum :velocity stream2_vel )) ;(get-count stream2) ;; Creating the score (def-score DuoTest (:title "Duo Test" :key-signature 'chromatic :time-signature '(4 4) :tempo 60 :layout (list (bracket-group (flute-layout 'flute) (violoncello-layout 'cello)))) (flute :omn stream :channel 1 :sound 'gm :program 'flute) (cello :omn stream2 :channel 2 :sound 'gm :program 'cello) ) rst A Micropolyphonic Fragment for Flute and Cello Duo - TEST.opmo Quote Link to comment Share on other sites More sharing options...
acrawnsley Posted July 29 Share Posted July 29 Robert - glad that the idea has some support - I think this area will be invaluable in terms of creative thinking when working with OM. btw - I have known your work for a long time. I used to review music for a magazine ('XLR8R') in San Francisco in the 1990s. I thought I remembered your name from somewhere and it turns out that I still have a couple of your older CDs in my collection from back in those days ('Frontier' and 'The Silent Shore'.) Classic and very innovative 90s ambient and still sound really good! No longer in California myself now - back in the UK. best, Andrew RST 1 Quote Link to comment Share on other sites More sharing options...
RST Posted July 29 Author Share Posted July 29 Nice to see you here Andrew! So great to know about you having SS and F in your collection! It is interesting that both of the Oasis discs made an impression. In fact, Frontier is mentioned in two books that I know of - one about Eno's Music for Airports and the other one a novel. There has been a lot of work since of course. You may find some of my electroacoustic music of interest. You can check out www.aucourantrecords.com - and also a lot of the records are on streaming too, and at Bandcamp. I have made an updated version of this little algorithm that is a bit more refined. Adding it here for anyone interested to check it out. A Micropolyphonic Fragment for Flute and Cello Duo - Version 2.opmo Quote Link to comment Share on other sites More sharing options...
RST Posted July 29 Author Share Posted July 29 Here are a couple of small mock-ups using the algorithm. Flute and Cello 1.mp3 Flute and Cello 2.mp3 jesele, Stephane Boussuge and opmo 3 Quote Link to comment Share on other sites More sharing options...
RST Posted July 31 Author Share Posted July 31 Some additional refinements and another example of use in application to musical texture. A Micropolyphonic Fragment for Flute and Cello Duo - Version 3.opmo Arioso (Shadowed Stasis).mp3 Stephane Boussuge 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.