Music 220b: Lecture Notes 6
Phrase level control and monophonic algorithms
Function-value and Interpolation Statements in Stella
Phrase-Level envelopes are applied to a parameter over groups of events, using piece-wise linear breakpoint functions. Parameters affecting source fusion are controlled in this way in fusion.lisp. Notes within a chord can fuse together into one note under certain conditions. In the example, an envelope determines the strength of the fusing effect. EnvelopeEd can be used to graph the breakpoint data, though the output format must be changed to x y for use in the interpolation expression, eg. (interpolation x1 y1 x2 y2...)
Until this point we've been treating music as if it all came from a keyboard: Start a note and forget about it until the NoteOff, letting it do whatever it was meant to do. The MusicKit also allows a note to be updated during its lifetime, much as a player would on a non-keyboard instrument. There are 4 types of MusicKit Note events:
DBwaveMono1.lisp demonstrates the declaration of a part (more on this in a couple of weeks) which is needed to associate NoteUpdates with a particular SynthPatch. What you'll see in the example is first a part declaration, then a NoteUpdate sent to the part setting any constant parameters (remember that values are "sticky" in a Scorefile), and then a sequence of NoteDurs to play the tune. All these are tagged to happen on the same part, though there is the possibility of polyphony here if NoteDurs overlap. PluckMono1.lisp shows a different form, using the tag parameter to guarantee that all events happen on exactly same SynthPatch instance. There is no possibility of polyphony.
- the default type, which we've used to now, actually a combination of the next 2...
- turn on an instance of a SynthPatch and start its time-varying envelopes
- begin the envleope release segments and turn of the SynthPatch instance
- at any time send the SynthPatch instance any parameter changes
This week is "let's catch up on all previous assignments week"...