~ICMC 2015 - Sept. 25 - Oct. 1, 2015 - CEMI, University of North Texas
ily hear the space change size, and at a high modulation rate
it quickly adds noise sidebands to all harmonics.
3.5 Input and output processing
The remaining additions are basic input and output processing. At the input of the reverb is a simple delay that acts as a
pre delay - the time before you hear the first reflections in a
space. It can be synchronized to an external clock, and the
delay buffer can also be reversed (with a slight overlap to
avoid clicking). At the output of the reverb is a three-band
shelf filter, which can quickly make the reverb brighter or
darker. The input and output processing both help separate
the reverberated signal from the unaffected signal.
INC
5DUnd[k
-NLK f 2'
UT
D R-L\T
S{PD PRk[-W{[AY BSORA
Q
OH'O
CI SZES [ Wt0 RE[ T [LT Y
Figure 2. Front panel of Erbe-Verb, showing controls,
control voltage parameter inputs and outputs.
4. HARDWARE IMPLEMENTATION
There are several things to consider to implement this reverb
as a Eurorack module. Naturally, the processor must be fast
enough to run the algorithm, and contain enough memory
for the delays, tables and filters. The reverb also requires
multiple DC-coupled analog to digital convertors so that all
parameters can be controlled, and a high fidelity audio
codec. We chose ARM Cortex M4 processor, because of its
floating point processor, its multiple 12-bit ADCs for control voltage, and its easy interface to external memory and
audio codecs. Also, there is GCC support for this chip, as
well as a community of audio developers using it for their
projects. Porting the code from the Pure Data prototype to
the ARM chip was as simple as recoding the abstractions to
C functions. It should be noted that all math library functions (cosO, atanO, powo, etc.) were replaced with interpolated table lookup specfic to the range of the controls and
the algorithm.
The only difficulty in the transition from the prototype Pure
Data patch to the final hardware reverb is the stabilization of
the control voltage inputs. The 12-bit ADCs on the ARM
processor have a fair bit of noise and spurious input samples
[8]. If values from these ADCs are used to directly control
delay-time related parameters (size and pre-delay), the convertor noise and jitter can quickly become audible. This
problem is addressed by running the ADCs at the highest
possible sample rate, and downsampling with several cascaded low-pass filters, while at the same time rejecting outlier sample values. This eliminates the convertor noise, and
leaves a high enough bandwidth to quickly modulate any
parameter.
5. CONCLUSION AND FUTURE WORK
With the release of the Erbe-Verb, I feel that I achieved
most of my goals: a reverb processor that is capable of a
wide variety of standard reverb sounds, but that also goes
beyond these to create more abstract resonant spaces. I
would like to expand upon this in a further software and PD
abstraction release, illustrating all of these techniques in a
patchable environment, but also including other reverb topologies.
Acknowledgments
I would like to thank Anthony Rolando and Matthew
Sherwood of Make Noise Music for designing the ErbeVerb hardware. I would also like to thank Anthony
Rolando, Walker Farrell, Richard Devine, Miller Puckette,
Anthony Burr and the many beta testers for all their valuable feedback, listening, and ideas.
6. REFERENCES
[1] Wikipedia contributors, "Doepfer A-100," [Online].
Avaliable: http://en.wikipedia.org/wiki/DoepferA100.
[2] Michael Gerzon, "Synthetic Stereo Reverberation,"
Studio Sound. 1971.
[3] John Stautner and Miller Puckette, "Designing MultiChannel Reverberators" Computer Music Journal, Vol.
6, No. 1, Spring, 1982, pp. 52-65.
-264 -