I’m working on a piece now for the free improvisation group Impulse. This is a different compositional approach for me on two levels: 1, I’m not writing notes–it’s a free improvisational environment, and 2, it’s my first major foray into electroacoustic music (Pure Data). It’s a little overwhelming, so I’m working on a data management system. Actually, I prefer to call it a script. It’s not a script in the traditional sense, in which it would dictate every action throughout the piece. Rather, it’s a series of states that the players can activate. So the form of the piece actually comes from the improvisation happening on stage. Here’s the first part of my script, data management. It’s incomplete, and it’s rather lacking in detail–but that’s the nature of works-in-progress…
Time is governed by a master clock counting seconds. This clock sends out the message “time”. Various patches take note of the time when they begin and at when a preset or gaussian number of seconds have passed, the patch shuts down. The main program also times the sections. The first section will be put in ready-to-end mode after a gaussian time has passed. Once the section is ready to end, other performance factors (described below) will trigger the movement from one section to the next.
Audio files are divided into 4 categories: pads, loops, rhythms, and gestures. Pads are lengthy (~1 min) of ambient sound and are triggered by group performance data. Loops are files designed to be looped until certain performance events occur and are triggered by group performance data. Rhythms are also longer files, but designed to establish a meter or a groove and are triggered by group performance data. Gestures are anything from a single note to around 15″ melody. Gestures are divided into groups by instrument (violin, sax, accordion, guitar) and are triggered by individual performance data. Pads, loops and rhythms belong to a super category of global accompaniments that are triggered by group performance data. As such, only one of these files can be played at a time. Gestures, however, can be played simultaneously with global accompaniments. Only one gesture at a time may be played per performer. In theory, a total of 4 gestures and one global accompaniment might be heard at any given time. However, audio files will probably not be played very frequently throughout the performance. They will generally be played during times of sparseness.
There are 3 to 5 sections (states) (this can be preset before a performance depending on the amount of time available). They order they come in and their exact durations are determined by performance events. Once a section has been performed it becomes unavailable for selection by the program.
Sections:
The section names come from the way I hear an imagined performance. However, these names should in no way dictate anything regarding performance style to the performers. Also, again, these come in no particular order (except for the initial state, which is fairly passive), but are triggered by a combination of time and performance events.
How to parse kinds of musical data:
Pitches, harmony — computer will keep track of the 3 and 5 most frequently played pitches over the past 5, 20 and 60 seconds (list of raw data)
Dynamics — 3 dynamic levels (raw data): p is less than 0.3, m is 0.3-0.6 and f is more than .06
Tempo — number of new notes over the past 5, 20 and 60 seconds (raw data)
Phrase duration — four groups–shorter than 2″, 2″-5″, 5″-10″, longer than 10″– (raw data)
Register — Average MIDI note value, converted to frequency, compared with the instrument’s range (in frequencies), and scaled to 0 (lowest note of instrument’s range) to 1 (highest reasonable note). Output data is 0-1. Parsed in 3 groups–hi (0.7-1), medium (0.4-0.7) and low (0-0.4).
Accents — Number of accents over time (raw data)
Silence — Seconds of silence over time (raw data)
Individual player data messages (to look at for computer’s behavior within states):
$1-3p-(5, 20, 60) — list of the three most frequent pitches in the past 5, 20, 60 sec.
$1-5p-(5, 20, 60) — list of the five most frequent pitches in the past 5, 20, 60 sec.
$1-dyn-(5, 20, 60) — average dynamic level over time
$1-tempo-(5, 20, 60) — average tempo (based on density of new notes) over time
$1-phrase-(5, 20, 60) — average phrase duration over time
$1-reg-(5, 20, 60) — average MIDI notes over time (scaled to instrument’s range, so all players will send out 0-1)
$1-accent-(5, 20, 60) — measure of intensity as the number of accent over time
$1-silence-(5, 20, 60) — total number of seconds of silence over period
Global Messages (to look at for state changes):
g-3p-(5, 20, 60) — list of the three most frequent pitches (global) in the past 5, 20, 60 sec.
g-5p-(5, 20, 60) — list of the five most frequent pitches (global) in the past 5, 20, 60 sec.
g-dyn-(5, 20, 60) — average dynamic level of the group
g-tempo-(5, 20, 60) — average tempo (based on density of new notes over time)
g-phrase-(5, 20, 60) — average phrase duration
g-reg-(5, 20, 60) — average register (scaled to instrument’s range, so all players will send out 0-1)
g-accent-(5, 20, 60) — measure of intensity as the average number of accent over time
g-silence-(5, 20, 60) — total number of seconds of silence over period (multiplied by number of players)

