Previous: Machine Architectures Up: Introduction

Parallelizing Software Synthesis

The way Kiwi parallelizes the task of sample computation arises directly from these three assumptions:

  1. 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.

  2. 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.

  3. 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.


[Bill's Home Page] Comments to walker@shout.net