~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 -
Top of page Top of page