Skip to main content
Home▸ Forums▸ What to do with a NUBUS DSP Card? (besides Photoshop) — #37▸ What to do with a NUBUS DSP Card? (besides Photoshop) — #37
Post #37 by Bunsen
Post
From the linkdump posted above:

http://xenia.media.mit.edu/~bdenckla/misc/kronos_www/thesis/whole_thing.html

Two New Programmer's Tools for Digital Signal Processing

by Benjamin Frederick Denckla

A thesis for the Bachelor's Degree with Honors

Harvard University, April 5, 1995

I have extracted a few highlights and bolded or underlined things of possible interest.

This thesis presents two frameworks into which audio DSP programmers can insert their functions. One of the frameworks [AIFF-DSP] is for DSP in C on AIFF files and the other [fw3210] is for real-time DSP on 3210 Macintoshes (660AV and 840AV). These frameworks simplify DSP algorithm development by performing generic DSP tasks and providing multiple DSP algorithms from a single executable.
Related Work

All five of the major Mac audio editors can be extended to include DSP functions. (The passage is from a report on a recent trade show.)


  • Opcode (Studio Vision Pro), EMAGIC (Logic Audio), OSC (Deck II), and Steinberg (Cubase Audio) all implemented DSP plug-in support for their programs and introduced their first extensions. Assorted third party plug-in developers showed their wares at Digidesign's (Sound Designer) booth. ("NAMM `95 Report")


It is simple to get plug-in developer documentation from Digidesign ... The shareware audio editors Wavicle by Lee Fyock and SoundEffects by Alberto Ricci also support plug-ins.

In addition to these editors, the following programs support AIFF I/O and have built-in signal processing languages that can be extended to include user-written functions in C: The Mathworks' MATLAB, Zola Technologies' DSP Designer, and Barry Vercoe's Csound.
NB: None of the above necessarily implies access to Nubus DSP cards - with the exception of Digidesign's purpose-built audio cards, which use the Motorola 56001 DSP, and their own driver/software combination and plug-in architecture. The date of the above excerpt (1995) implies that many, if not all, of the new DSP plug-ins mentioned (apart from Digidesign's) would have been CPU-native on PowerPC.

MATLAB sounds worth investigating.

A distinguishing feature of AIFF_DSP is the ease with which users can add their own DSP functions: very little code beyond the algorithm itself needs to be written. Only Csound approaches this level of simplicity.
Another feature is its tiny size. ... the framework contains only about 800 lines of code ... the Mac executable is 41 Kb and its run time RAM requirements are similarly minuscule.

BugLite (part of the ARTA Developer's Toolkit) is the only program for 3210 Macs that is related to my real-time DSP framework. It provides an environment in which 3210 assembler programs can be run in object code form. ... BugLite suffers from frequent crashing, seriously compromising its usefulness.

real-time framework-like programs for Macs with Digidesign cards .. include DSP Designer, as well as Bill Gardner's Reverb, Adrian Freed's "MaxDSP" object for Opcode's Max, John Bates' Unison, and Joe Chung's Hyperlisp

The "MaxDSP" object benefits from the convenient collection of GUI objects (sliders, bar graphs, etc.) and MIDI processing objects provided by MAX. ... Unison is a graphical DSP programming language that can include user-written objects ... Unison can be interfaced with MAX ... Hyperlisp is an extension to Macintosh Common Lisp that provides scheduling and MIDI processing in addition to DSP services.
I skipped Chapter 2

Chapter 3 - The fw3210 Real-Time Framework
frees DSP programmers from having to worry about generic DSP tasks such as setting up audio I/O, loading code onto the DSP, and handling communication between the host and the coprocessor. ... processing is accomplished by independent pieces of object code called ARTA modules. ... in real-time on the ARTA hardware of 3210 Macs.

ARTA, the Apple Real-Time Architecture, is a hardware and software system for DSP ... a stereo audio codec and an AT&T 3210 DSP chip ... a real-time operating system derived from AT&T's VCOS. An ARTA executable is called a module, and is a piece of 3210 machine code with symbol table information

fw3210 makes all the necessary ARTA and Standard Sound system calls to provide an execution environment for the module ...

In ARTA, the DSP coprocessor and the host CPU share the same memory space.

In order to be used with fw3210, ARTA modules must have stereo I/O buffers and operate at 48 KHz sampling rate. ARTA delivers audio into their buffers as 3210-format floating point numbers in the range -1.0 to 1.0. ... Stereo-to-mono, mono-to-stereo, and mono-to-mono algorithms can be faked easily

the ARTA Developer's Toolkit ... originally available for $995 and are now available without support for $400. They require MPW (Macintosh Programmer's Workbench) ... Paul Lalonde has developed a public domain 3210 assembler for the Mac, but it is still in the beta-testing stage. ... I have been told that the 3210 simulator included in the Toolkit is quite good.

Recently, Eric Brombaugh has developed GUI3210, a version of fw3210 with a graphical end user interface added. GUI3210 also allows the end user to update parameters dynamically. ... I consider it to be fw3210's successor.

A recent program by Chris Weare, PowerRack, accomplishes real-time DSP in C on the CPU of Power Macs ... The source to PowerRack is available

A Patching Extension to fw3210 & AIFF_DSP

For example, the diagram below illustrates a patch using three processors and a splitter and summer.

Code:
         +-------processor 1---->processor 2-----+
        |                                       |
---->splitter                                  summer--->
        |                                       |
        +--------------processor 3--------------+
Patching lends itself to graphical control, but to begin with, a simple patch language would suffice. For example,

((processor 1, processor 2)(processor 3))

series connections ... In fw3210, ARTA system calls would be made to connect the modules' data streams together. ARTA is in fact specifically designed to handle such patching. Parallel connections require summers and splitters. These do not fit fw3210's symmetric processing model, in which input and output types are the same. Fortunately, ARTA itself imposes no such restriction on its modules.
There is selected source code for both frameworks included in appendices, and an extensive bibliography.