ABSTRACT: We describe a software interface between high level musical performance environments and low level software drivers for digital signal multiprocessors. We describe the first implementation of a driver using the proposed interface for low-cost, commercially available, DSP56001-based signal processors (Reson8Ï, SoundAcceleratorÏ, AudioMediaÏ) and the way the driver is used from withing the HyperCard and MAX environments.
Current performance-oriented music synthesis systems consist
of interconnected gestural devices, general purpose workstations
and special purpose synthesis hardware.
Software running on the general purpose workstation handles musical abstractions, note event and control stream data, and the user interface. Special purpose processors handle computational requirements of music synthesis algorithms more efficiently than general purpose workstation processors. MIDI, a loosely coupled and relatively slow protocol has been used to connect these processing elements. However, there is a trend towards more tightly coupled, higher speed bus interfaces [Lowe 1989] and more signal processing nodes [Barrière et al 1989, Wawrzynek 1989,90].
The price/performance ratio of workstations and digital signal processors is improving at a furious pace. In contrast, software to make this hardware musically useful takes a long time to develop and mature. The primary goal of the driver interface described here is to hide signal processing device specific details from musical applications. By implementing the interface in portable ANSI C, we also expect to be able to transfer it to new workstations without difficulty.
We have interfaced the driver to HyperCard, MAX [Puckette 1988], and MacMix [Freed 1987]. Future target environments include SmallTalk, Formula [Anderson 1986], HMSL [Rosenboom 1985], and Lisp. Each of these have a strong following and something unique to offer in musical applications.
Conventional operating system driver interfaces cannot be used
in performance-oriented musical applications because they do not
address the need to accurately express when events in devices
should occur. Drivers implementing the interface we propose are
responsible for timely exchange of synthesis and analysis parameters
between host and multiprocessor nodes.
Parameters are described symbolically in the domain of a signal processing algorithm. A driver maps these names to addresses of processing nodes it is responsible for, converts parameters between the natural number representations of the host and signal processors, transmits parameters to processor nodes and finally synchronizes update of these parameters to real-time clocks.
Control parameters are represented as vectors of floating point numbers. This choice was based partly on the nature of the computations in the control structures for synthesis algorithms we are interested in. The overriding consideration, however, was the need for a portable, well defined representation which could be mapped efficiently to the representation used in both fixed point and floating point signal processors. Industry backing of the IEEE floating point standard and decreasing incremental system cost of floating point vindicate this choice.
The driver also performs housekeeping jobs for the signal processors such as identifying, testing and loading them with code from descriptions stored in the workstation.
The first implementation of a driver using the interface is
for low-cost, commercially available, DSP56001-based [Motorola
1989] signal processors: Reson8Ï, SoundAcceleratorÏ,
AudioMediaÏ, MacMix ExcelleratorÏ . This driver has
been interfaced to HyperCard, MacMix and MAX.
The driver scans cards installed in a Macintosh computer and fills a configuration table with information on cards with DSP resources. It matches the resources available to those required by compiled algorithms stored in files of DSP56001 machine code. It also extracts the names and properties of parameters for these algorithms from a symbol table.
The ability to perform timely, atomic updates of control parameters is essential to many types of signal processing. We are using the tuning of a bank of one hundred 2-pole resonators as a test case. Not only do more than 300 coefficients need to be loaded from the workstation to the signal processor, but also these coefficients are quite expensive to compute from a high level description in the workstation environment. We are experimenting with the well-known double buffering technique for timely delivery of updates. DSP programs execute using parameters from one buffer while another buffer is filled by the host workstation. When a buffer of updates is complete and it is time for the update to occur, the buffers are switched.
The driver is used in the HyperDsp environmentta HyperCard-based
system for rapid prototyping of test harnesses for DSP code. Users
can build control panels and displays interactively from a palette
of standard parts: linear and rotary faders, strip charts and
bar displays. These parts are then wired symbolically to the signal
processing code. Buttons are provided to load each node in a DSP
network individually. Midi controller messages can also be associated
with the on-screen faders for more satisfying gestural control.
The ability to store a different front panel on each card of a
stack makes it very convenient to collect related algorithms.
For example, there is a stack of cards which run diagnostics code
to test DSP systems element by element. These test cards are arranged
in the stack in a natural order for debugging hardware. The state
of controls on each card is automatically stored and recalled
providing a simple kind of control automation.
The DSP driver has been encapsulated into an object for the
MAX environment [Puckette 1988] using its external code resource
facility. This object responds to messages to configure and load
code into DSP nodes and read and write vectors of parameters.
MAX has proven to be a good host environment for the DSP driver.
Its strong and efficient real-time scheduling, MIDI support, and
table lookup allow musicians to quickly integrate new DSP algorithms
into their performances. MAX is also very useful for the rapid
prototyping and simulation essential to developing new DSP algorithms
for sound synthesis and processing.
Inevitably the driver interface will have to be refined to
suit new workstation and signal processing architectures. However,
it is a solid base on which to build environments for music performance
which can take advantage of the exciting and rapid developments
in music software, workstations and VLSI signal processing.
Anderson D., Kuivila R., Accurately Timed Generation of Discrete Musical Events, Computer Music Journal 10(3), pp. 48-56.
Jean-Baptiste Barrière, Adrian Freed, Pierre-François Baisnée, Marie-Dominique Baudot, (1989), A Digital Signal Multiprocessor and its Musical Application, International Computer Music Conference 1989.
Freed A. (1987), Recording, Mixing, and Signal Processing on a Personal Computer, Proceedings of the AES 5th International conference on Music and Digital Technology, pp. 158 -162
Lowe W., Currie R., (1989), Digidesign's Sound Accelerator: Lessons Lived and Learned Computer Music Journal, 13(1) pp. 36-46
Motorola, (1989), DSP56000/DSP56001 Digital Signal Processor User's Manual , Motorola Literature Distribution, PO Box 20912, Phoenix, Arizona 85036
Potard Y., Baisnée P-F., Barrière J-B., (1986), Experimenting with Models of Resonance Produced by a New Technique for the Analysis of Impulsive Sounds, Proceedings of 1986 International Computer Music Conference, La Haye, Computer Music Association, pp.269-274
Puckette M. (1988), The Patcher, Proceedings of the14th International Computer Music Conference, Köln,1988, Feedback Studio Verlag, available from Computer Music Association.
Rosenboom D., Polansky, L., (1985), HMSL (Hierarchical Music Specification Language): a real-time environment for formal, perceptual and compositional experimentation, Proceedings ICMC, San Franciscso, Computer Music Association.
Wawrzynek J. C., von Eicken T., (1989), Mimic, a custom VLSI Parallel Processor for Musical Sound Synthesis, Proceedings of IFIP VLSI 89, Munich, FRG.
Wawrzynek J. C., von Eicken T., (1990), VLSI Parallel Processing for Musical Sound Synthesis, Proceedings of ICMC, Glasgow.