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.