open source and written in C. The main
problem was that the APIs were complex (this also applies to PD’s descendant –
MAX/MSP), and in a state of growth. Since we actually did not have a great need for
the GUI provided by PD. We therefore decided that if we could find a way to
get MIDI and network software support, we could just write the DSP code in
C, which would be the fastest way to implement our system. The Windows
platform was selected, since it had off-the-shelf support for both MIDI and
networking.
Distributed Resynthesis of FFT Data
The prototypes for Netmix were written in C, using the POWERpv package (Lyon 1996)
as a basis. POWERpv was based in large part on Richard Moore’s phase vocoder code
described in ‘The Elements of Computer Music’ (Moore 1990), which has the very useful
feature of providing IFFT resynthesis or oscillator bank resynthesis, depending on
whether alterations had been made to the phase components (i.e. frequency alterations).
The only alteration to the Moore model was to redesign the oscillator bank to
resynthesize a subset of the full data components (‘bins’) in an FFT frame. A filter
was designed to extract subsets of a stored FFT analysis. These subsets of
‘amplitude/frequency’ data pair frames could be either contiguous (say the first
20 bins) or not. Through synchronized resynthesis of the different subsets of
a given analysis, the sound could be reconstructed on a number of different
computers with the output from each computer resynthesizing a different part of the
spectrum.
The next task was to design a method of controlling the DSP system. Control
information was sent via MIDI. Our system was split between a MIDI router program
and a synthesizer program. In the MIDI router, we mapped specific controllers to a
range of values for various synthesis parameters. This is a less flexible MIDI scheme
than in PD or MAX, but in the final analysis, it was not a problem, since we
could quickly experiment to find the value ranges that were most amenable to
performance.
Parametric Controls for Performance with Netmix
Control data was sent to a single computer running Midiroute. This computer broadcast
the MIDI information to all computers on the local network, as well as providing
synthesis. The controls were sent using a Fostex MIDI controller, through a Powerbook
running MAX. MAX was most useful for designing a clear visual layout of the
parametric control options.
The controls were as follows:
- Transposition factor. The traditional phase vocoder gives independent control
over frequency and time. Changing the pitch without changing the speed is
a canonic application of the vocoder. Our system enables tuning of separate
parts of the spectrum with many interesting and unusual possibilities for
spectral transformation.