Players create new phrases, either by transforming phrases supplied by the listener or via some compositional algorithm. Players could also supply previously composed phrases. Realizers attempt to express these phrases appropriately, both through timely presentation and timbral control. Smalltalk primitives connect ImprovisationBuilder with input and output devices. A MusicScheduler dispatches all MIDI and Capybara events, decoupling the Players and Listeners from playback timing.
Music encompasses many different time scales.
In the short term, onset times must be governed to within a few milliseconds, while longer term structures like blues choruses may last tens of seconds. These processes require radically different amounts of co mputation, all to be satisfied simultaneously. We achieved our first goal of translating SAL by building Smalltalk-80 classes that models each component. A Listener filters incoming MIDI events and maintains a buffer containing the most recent notes played by the human performer. A FancyPlayer periodically copies this buffer and selects two to four excerpts from it.