SynthBuilder and Frankenstein: Tools for the Creation of Musical Physical Models
SynthBuilder is a user-extensible, object-oriented, NEXTSTEP Music Kit application for interactive real-time design and performance of synthesizer patches (especially physical models) (Jaffe & Smith, 1983; Smith, 1987). Patches are represented by networks consisting of digital signal processing elements called unit generators and MIDI event elements called note filters and note generators.
The Frankenstein box is a multi-DSP compute engine that was developed as a research platform (Putnam, 1996). The box communicates with an x86 host via an ISA interface card that resides in the host computer. Frankenstein currently contains 8 Motorola 56002 Evaluation Modules (EVMs), and it can be scaled to an additional 8 EVMs for a 16 EVM total. The outputs of EVMs can also be sent to an external mixer.
A Brief History of SynthBuilder and Frankenstein
The original concept of a unit generator-based digital audio synthesis language was pioneered by Bell Labs' Max Mathews in the 1950s, and the concept culminated in the 1960s with the Music V program (Mathews, 1969).
The NeXT Music Kit was developed by David Jaffe and Julius Smith and is an object-oriented library that is implemented in Objective-C and is used in the design of music applications for the NeXT computer ( Jaffe & Boyton , 1989; Smith, 1989). The Next Music Kit combines the gestural control of MIDI with the tumbrel control of MUSIC V and extends the flexibility of both.
In 1989, NeXT employee Michael Minnick developed a prototype called SynthEdit that used graphical application to create MusicKit patches. Minnick then presented a paper on his prototype at the International Computer Music Conference (Minnick, 1990).
Nick Porcaro started work on SynthBuilder in 1992. Initially an extension of GraSP, SynthBuilder was a similar application created in 1992 by Princeton University student Eric Jordan with advisory assistance from David Jaffe (who was teaching at Princeton at the time). Since 1993, Porcaro has extensively developed SynthBuilder with both support from Stanford's Office of Technology and Licensing and with significant contributions from David Jaffe, Pat Scandalis, Julius Smith, Tim Stilson, and Scott Van Duyne. (SynthBuilder also uses code from the NeXT Draw programming example and some icons originally created for SynthEdit.)
In the Summer of 1995, William Putnam and Tim Stilson created the Frankenstein MulitDSP engine as a platform to support physical modeling research that used SynthBuilder (Putnam, 1996). The original Frankestein contained 8 Motorola 56002 Evaluation Modules running at 40 MHz.
SynthBuilder has since been used at CCRMA as a physical modeling research and development tool and as a synthesizer/effects processor in live performances. In 1994, 1995, and 1996, demonstrations were given at the ICMC (Porcaro, 1996). SynthBuilder Alpha30 was released to the Internet in December of 1994, and the current version of SynthBuilder, Beta23, was released to the Internet in September of 1996.
SynthBuilder and Frankenstein Today
The current version of SynthBuilder, Beta23, has been significantly optimized and extended over the pervious version Alpha30. DSP allocation speed, memory usage and drawing performance have similarly been greatly improved. Many new features have been added, and they include sound file writing support for various Intel-based DSP cards, an improved driver for the Frankenstein box (an array of 8 Motorola 56002 DSPs), new unit generators and note filters, context-sensitive help, drop-in subpatches, subpatch variations, inspector improvements, a new trace window, and more robust help/tutorial. Along with numerous bug fixes and paradigm refinements, these features have enabled rapid development of complex patches.
The current version of Frankenstein is now running at 72 MHz, and we have also developed a single card/single EVM version of the Frankenstein called "Cocktail Frank" that also runs at 72 MHz. It has been possible to implement a 6 string electric guitar model with wah-wah/distrortion and amplifier feedback model using this card.
SynthBuilder and Frankenstein Demonstration
In this session, we will demonstrate recent SynthBuilder features, discuss physical model calibration, and show recently-developed SynthBuilder patches including percussion, piano, guitars, harpsichords, and others.
We are currently porting our patches to other platforms. To facilitate this porting, we have developed an interchange format called SynthScript and defined a portable server (SynthServer) that will enable execution of SynthBuilder patches on other computers. Part of the demonstration will present a SynthScript patch running on a native processor. In the near future, we plan to build more patches and to improve SynthBuilder, and we are also discussing the possibility of porting SynthBuilder to Windows NT/95.