Emulating Vintage Echo Machines by
DSP
The OMF-1[1]
and OMF-2 Projects
This
project is an attempt to recreate a range of echo sounds reminiscent of
recordings from the 60's. These classic echo sounds were created entirely by
electro-mechanical means; typically by magnetic tape loop moving past record
and playback heads, also by magnetic drums where the heads were arranged along
the circumference of the drum. Not only does the use of magnetic media leave an
imprint on the sound, also irregularities in motion transport add its charm.
Vintage
technology is used, where practical, to replicate a sound produced by vacuum
tubes – sought-after by musicians. The emulation of electro-mechanically
derived echo is implemented in DSP. The project thus is a mixture of vintage
and modern-day technologies.
This
project is a tribute to the fine instruments built by Meazzi, Binson, Watkins,
Fulltone, Roland and others.
For
some sound files, please see the appendix page.
Depicted below is the
layout of components: a vacuum tube-based dry signal path (center of picture)
integrated with a digital signal processor (DSP) subsystem (green PCB on the
left).

Close-up view
of the components around the vacuum-tube and DSP module.

View of the front panel layout.

Echo
processing is handled by the DSP subsystem which is based on an Analog Devices
ADSP-2185N 80 MIPS DSP chip. The DSP subsystem uses a TI TLV320AIC23B, 24-bit
CODEC for A/D-D/A. The DSP subsystem also handles the front-panel, user-interface
switches and includes a RS-232 port (USB capable) for host-based deeper edits.
The
rear panel contains a fused IEC power plug, 1/4 inch audio jacks, and a RS232
socket for DSP communications. The RS232 connection can be used for deeper
editing if that becomes necessary. It also is used for updating FLASH memory
with new DSP code.
The
DSP chip needs special code to emulate various echo patterns. The code for this
particular DSP chip is written in a special Analog Devices assembly. Once
finalized, the compiled code is written to on-chip FLASH memory and is ready
for use next time the unit is powered up
The
dry-path circuitry is adapted from Meazzi J6H/F5H models. These employ an ECC83
grid-leak biased, pre-amp and follower as shown below.
Meazzi J6H/F5H
work-alike schematic.

Measured frequency response of the
vacuum-tube based dry path. The -3dB points
apparently are approximately 40Hz and 15 kHz. Evidently, this kind of circuit
does sound more HIFI and may benefit from some kind of tone-shaping post
processing.


An
overview of the different processes is as follows:
1.
CODEC inputs require line-level signals (input impedance ~10K Ohms, voltage
swings 2V max). The raw signal from the first triode stage is of high impedance
and need to be matched prior to digitization. This matching is done with a ½
NE5532 low-noise op-amp circuit and applied as a mono signal to the CODEC. The
CODEC A/D operates at 48 KSPS (thousand samples per second). which translates
to 24 kHz audio bandwidth.
2.
Magnetic tape-based echo devices does not require much bandwidth which is
helpful for DSP implementations where processing power and fast memory need to
be conserved. Decimating (a sub-sampling procedure) the dry signal by a factor
of 5 results in 9600 SPS, or translated in audio bandwidth, 4800 Hz. To prevent
aliasing, decimation requires the input restricted to the intended bandwidth. A
67th order FIR low-pass filter is used here. Output from the anti-aliasing
filter is passed through a band-limiting filter (approximating magnetic tape
bandwidth), its output is applied to a delay line as shown below.

3.
The echo delay line consists of some 6000 elements, arranged in circular array.
In a way similar to a magnetic tape loop –- at each clock tick the oldest
sample drops off to make place for the newest. In software this is done by
modulo pointer arithmetic (automatically resets when the end of the array is
reached). To give perspective of what happens; at 9600 SPS a new sample arrives
every 0.104 milliseconds.
4.
Implementing a 6-head echo is simply taking 6 samples from the circular array.
For example, for Echomatic 2, playback head #1 is 103ms delayed. So we need to
index the delay line some 989 ticks back etc. Keep in mind data taken from the
delay line is in pristine state at this point. To resemble tape machines, a few
imperfections, such as wow and flutter (W&F) and tape saturation need to be
applied.
5.
To emulate ever-diminishing echoes, a small fraction of output from one or more
heads is applied to a feedback path. This feedback path is structured to enable
circulating echoes to sound increasing darker and a bit rougher as they die
away. This is achieved by passing the feedback signal through a tone-shaping
filter and non-linear amplitude transform prior to mixing with the raw input.
6.
Finally, data from the playback heads are scaled and prepared for eventual
conversion to analog form. This involves up-sampling from 9600 SPS to 48K SPS
by interpolation, a reverse process of decimation.
7.
Output from the playback heads is routed to the stereo-output jack and applied
to an analog mixer feeding the grid of the ECC83 follower stage.
This
was intended to be a backup unit running the same software and DSP processor.
However, a slightly-different approach was taken with the analog interface
circuits. The OP-Amps were replaced by a dual-triode tube to handle the
interface between the tube signal paths and the DSP audio I/O levels.
OMF-2
hardware was built in a recycled 1U rack. It is a little roomier than OMF-1's
rack. Note the large copper PCB that serves as ground plane.

OMF-1 Sound Clips
An
early recording emulating Echomatic 2 echo patterns.
http://www.johanforrer.net/Guitars/OMF-1/PeacePipe_OMF1_AC30.mp3
Version
1.4 firmware recordings. All recorded with the same guitar, OMF-1 echo, and
AC-30 clone amp, miked up with an SM-58 mike. The guitar is my "plywood
special" fitted with hand-made noise canceling, single-coil pickups.
Charlie-Hall's "cutting edge filter" was used on the output, between
the echo and the amp.
Please note that no EQ or other changes were made to the recodings. The mixer
was set for an almost-flat response.
1) Dry sound demo (wet level turned down). AC-30 normal channel. Neck pickup.
http://www.johanforrer.net/Guitars/OMF-1/DemoFiles/OMF-1_NIVRAM.mp3
2) Echomatic 1 emulation. AC-30 brilliant channel.
Bridge
pickup.
http://www.johanforrer.net/Guitars/OMF-1/DemoFiles/OMF-1_FBI.mp3
3) Echomatic 2 emulation. AC-30 brilliant channel. Middle pickup.
http://www.johanforrer.net/Guitars/OMF-1/DemoFiles/OMF-1_Sleepwalk.mp3
4) Echomatic 2 emulation. AC-30 brilliant channel. Middle pickup.
http://www.johanforrer.net/Guitars/OMF-1/DemoFiles/OMF-1_GoldenStreet.mp3
5) Custom emulation. DI recording with Roland Cube 30X AMP, JC-clean
setting. Bridge pickup.
http://www.johanforrer.net/Guitars/OMF-1/DemoFiles/OMF-1_LonesomeMoonride.mp3