The Alternative Csound Reference Manual
Previous | Signal Generators | Next

# Scanned Synthesis

Scanned synthesis is a variant of physical modeling, where a network of masses connected by springs is used to generate a dynamic waveform. The opcode scanu defines the mass/spring network and sets it in motion. The opcode scans follows a predefined path (trajectory) around the network and outputs the detected waveform. Several scans instances may follow different paths around the same network.

These are highly efficient mechanical modelling algorithms for both synthesis and sonic animation via algorithmic processing. They should run in real-time. Thus, the output is useful either directly as audio, or as controller values for other parameters.

The Csound implementation adds support for a scanning path or matrix. Essentially, this offers the possibility of reconnecting the masses in different orders, causing the signal to propagate quite differently. They do not necessarily need to be connected to their direct neighbors. Essentially, the matrix has the effect of "molding" this surface into a radically different shape.

To produce the matrices, the table format is straightforward. For example, for 4 masses we have the following grid describing the possible connections:

| 1 | 2 | 3 | 4
1 |  |  |  |
2 |  |  |  |
3 |  |  |  |
4 |  |  |  |

Whenever two masses are connected, the point they define is 1. If two masses are not connected, then the point they define is 0. For example, a unidirectional string has the following connections: (1,2), (2,3), (3,4). If it is bidirectional, it also has (2,1), (3,2), (4,3)). For the unidirectional string, the matrix appears:

| 1 | 2 | 3 | 4
1 | 0 | 1 | 0 | 0
2 | 0 | 0 | 1 | 0
3 | 0 | 0 | 0 | 1
4 | 0 | 0 | 0 | 0

The above table format of the connection matrix is for conceptual convenience only. The actual values shown in te table are obtained by scans from an ASCII file using GEN23. The actual ASCII file is created from the table model row by row. Therefore the ASCII file for the example table shown above becomes:

0100001000010000

This matrix example is very small and simple. In practice, most scanned synthesis instruments will use many more masses than four, so their matrices will be much larger and more complex. See the example in the scans documentation.

Please note that the generated dynamic wavetables are very unstable. Certain values for masses, centering, and damping can cause the system to "blow up" and the most interesting sounds to emerge from your loudspeakers!

The supplement to this manual contains a tutorial on scanned synthesis. The tutorial, examples, and other information on scanned synthesis is available from the Scanned Synthesis page at cSounds.com.

Scanned synthesis developed by Bill Verplank, Max Mathews and Rob Shaw at Interval Research between 1998 and 2000.

Opcodes that implement scanned synthesis are scanhammer, scans, scantable, scanu, xscanmap, xscans, and xscanu.

Previous | Home | Next
Sample Playback | Up | Short-time Fourier Transform (STFT) Resynthesis