Music 680, Fall 2005: Special Topics in Music Theory - Algorithmic Composition
Lecture 10: November 14, 2005 - complexity

J. Ashbery:  	"Like a wave breaking on a rock, giving up
 		Its shape in a gesture which expresses that shape." (from Self-Portrait in a Convex Mirror)

Ferneyhough's music as a response both to the modernist challenge
	and to the postmodern doubt about (and critique of) that challenge
		structuring (algorithmic and otherwise) as partial and provisional
			anecdote about day-to-day working methods
				immediate engraving as a psychological strategy
				but also as a kind of continuous re-structuring and reconsideration of the material
				and the preservation of the possibility surprise; composing from beginning to end
		but trying to create a sense (illusion?) of authentic choice through constraint
			anecdote about the preservation of and emphasis on mistakes
			an emphasizing the use of system in providing context/direction for intuition
	tension between clear perceptibility (as in Adagissimo) and the delirious quality of system

Ferneyhough and formalized composition in Patchwork
	Patchwork (and its successor OpenMusic) designed primarily for spectral composition
	Ferneyhough adopts the software initially to routinize his rhythmic technique
		(often developing pitch aspects of gesture separate from the rhythmic aspects)
		(the anecdote about the influence of Patchwork on his work)
			and the conception of pieces or sections as a whole
	layered approach to coding and to algorithm
		very small and simple modules combined (often out-of-phase) into complex results
			Toop's analysis as trying to unearth these transformation systems
		also a tendency towards fragmentation and rearrangement
			the structural process of Bone Alphabet as breaking up linearities
	Shadowtime code
		repeating gestures for as long as they fit into a measure structure
		extracting a chorale from a number of melodic lines in order to constrain an independent voice

Toop and Lemma-Icon-Epigram
	"For him the creative process is not a predetermined path, but a labyrinth, and the completed
		work is, in a sense, an arbitrary by-product of that labyrinth, to the extent that there is nothing
		predestined or predetermined about the outcome of any particular moment in it: each moment is,
		rather, the inspired momentary response to a given set of constraints - in each case, other
		solutions, equally compelling, would have been thinkable."
	identifying compression and bifurcation as characteristic processual transformations
	emphasizing the relationship between the systematic and the intuitive
	"my distrust of the motivic-cellular diversification principle" - BF

Ferneyhough "Duration and Rhythm as Compositional Resources"
	"the lingering residues of superseded affective vocabularies"
		or, the wearing-out of expressive materials when their context has passed
	meter as a temporal container rather than as a pattern of accentuation
	"inextricable interlocking of meter and subdivisional impulse as correlatable strands of sonic 
		information"
	"Since I myself tend to regard processes as 'oblique objects' (in the sense that, by definition, their
		full identity only becomes clear with the elapse of time) the ever-changing quality of partial
		clarification is an extremely valuable aspect of the basic 'stuff' of composition."
	"time being palpably manipulated, almost like a physical object"
	again, simple processes ("densification" and "filtration") applied to temporal structures
	keenly aware of the ways in which micro-fluctuations create perceivable macro-trends

Ferneyhough "Responses to a Questionnaire on Complexity"
	"The coming into being of the work necessarily occupies center stage; the performer (and by
		extension, the listener) is led to share some sense of the anxiety-generating provisional, is
		continually being made productively aware of his own binding contribution."
	"...the frequently 'anti-natural' confrontation between the actual flow of events and the amount of
		time that would normally be understood to be 'appropriate' for their adequate reception."
	"...notation is always relative to intention, whereby it is up to the composer to suggest adequate 
		forms of response."

"the new complexity" (coined by musicologist Richard Toop): other associations
	Michael Finnissy (and transcription as a particular working method)
	James Dillon (and the influence of Xenakis and spectralism)
	Chris Dench
	Richard Barrett
	and now a large number of Ferneyhough and Finnissy students....

wildly simplified Ferneyhough-type processual layering in CM

(define pitch-gesture (list 4 5 1 7 3 4 0 9 8 6 11))
(define interval-change (list 0 1 0 -1 0 3 2 1 -1 0 -3))

(define (rotate-left input-list)
  (append (cdr input-list) (list (car input-list))))

(define (truncate-ends input-list)
  (reverse (cdr (reverse (cdr input-list)))))

(define (stretch-intervals pitches intervals)
  (if (and pitches intervals)
    (cons (+ (car pitches) (car intervals))
          (stretch-intervals (cdr pitches) (cdr intervals)))))

(define (set-register pitches octave-changes)
  (if (and pitches octave-changes)
    (cons (+ 60 (car pitches) (* 12 (car octave-changes)))
          (set-register (cdr pitches) (cdr octave-changes)))))

(define (make-impulses start-onset impulse-duration impulses)
  (if (> impulses 0)
    (cons (float start-onset)
          (make-impulses (+ start-onset impulse-duration) impulse-duration (- impulses 1)))))

(define (fit-impulses start-onset duration impulses)
  (make-impulses start-onset (/ duration impulses) impulses))

(define (fill-structure time-structure impulse-structure start-onset)
  (if (and time-structure impulse-structure)
    (append (fit-impulses start-onset (car time-structure) (car impulse-structure))
            (fill-structure (cdr time-structure)
                            (cdr impulse-structure)           
                            (+ start-onset (car time-structure))))))

(define (make-velocities impulse-structure high-velocity low-velocity)
  (if impulse-structure
    (if (> (car impulse-structure) 1)
      (cons high-velocity
            (make-velocities (cons (- (car impulse-structure) 1)
                                   (cdr impulse-structure))
                             high-velocity
                             low-velocity))
      (cons low-velocity
            (make-velocities (cdr impulse-structure) high-velocity low-velocity)))))

(define (impose-rests velocities impulse-structure)
  (if (and velocities impulse-structure)
    (if (> (car impulse-structure) 1)
      (cons (car velocities)
            (impose-rests (cdr velocities) (cons (- (car impulse-structure) 1) (cdr impulse-structure))))
      (cons 0 (impose-rests (cdr velocities) (cdr impulse-structure))))))

(define (make-results pitches rhythms velocities)
  (if (and pitches rhythms velocities (cdr rhythms))
    (cons (new midi
            :keynum (car pitches)
            :time (car rhythms)
            :duration (- (cadr rhythms) (car rhythms))
            :amplitude (car velocities))
          (make-results (cdr pitches) (cdr rhythms) (cdr velocities)))))

#|
(define pitch-gesture (list 4 5 1 7 3 4 0 9 8 6 11))

(define interval-change (list 0 1 0 -1 0 3 2 1 -1 0 -3))

(define pitches (append (set-register pitch-gesture interval-change)
                        (set-register (stretch-intervals (truncate-ends (rotate-left pitch-gesture))
                                                         (rotate-left interval-change))
                                      interval-change)
                        (set-register (stretch-intervals (truncate-ends (rotate-left (truncate-ends pitch-gesture)))
                                                         (truncate-ends (rotate-left interval-change)))
                                      (rotate-left (truncate-ends interval-change)))))

(define more-pitches (append pitches
                             (stretch-intervals (truncate-ends (rotate-left (truncate-ends pitches)))
                                                (stretch-intervals pitch-gesture interval-change))))

(define time-list (list 0.3 0.7 0.3 0.4 0.2 0.9 0.2 0.3 0.4 0.5 0.1 1.1))

(define impulse-list (list 5 4 3 2 6 5 3 1 7 4 1 8 4 9 4))

(define rhythms (fill-structure time-list impulse-list 0))

(define velocities (impose-rests (make-velocities (rotate-left impulse-list) 120 70) 
                                 (rotate-left (rotate-left impulse-list))))

(events (make-results more-pitches rhythms velocities) "test.mid")
|#