Previous: Machine Architectures Up: Introduction
Parallelizing Software Synthesis
The way Kiwi parallelizes the task of sample computation arises directly
from these three assumptions:
- Music can be represented as
a time-ordered list of events, or notes.
Although there are other possible representations, this division of
music into notes and timbres is a paradigm most composers can accept.
- The sound of a note is entirely independent
of the sounds of other notes.
This may hold for music performed entirely by monophonic instruments,
but it is not true for polyphonic instruments like the piano, in which
simultaneous notes interact through a resonant soundboard.
Since these interactions are complex and difficult to model, polyphonic
instruments are almost universally modeled as collections of monophonic
instruments with the same timbre.
- The samples for a given note can only be computed in strict
order.
Synthesis algorithms can be viewed abstractly as real-valued functions
of a single variable, time.
However, these algorithms can rarely be expressed in a closed form
which yields the value of the function for an arbitrary time.
Instead, they are given as recurrence relations in which the next sample
depends on some state variables. Thus, the value of the function at an
arbitrary time can only be computed by first computing the value of the
function for all the times preceding .
Kiwi parallelizes the problem of computing samples for a collection of notes
by giving each processor a single note.
From the second assumption it follows that
no note interdependencies need be considered when
scheduling notes.
Since the third assumption constrains us to compute each note's samples in
strict order, no two processors should compute samples for the same note.