Maker Pro
Maker Pro

Audio Delay Circuit

Hello, I'm attempting to design an audio delay circuit. While
electronic engineering is not my specialty, I can solder like a mad man
and I have a general idea of what's going on. I was wondering if anyone
would be willing to help me along. The thing needs to have audio in
(rca and 1/8" mini) and audio out. Adjustable delay from 0-12 seconds
(more the better, but 15 would be over kill). .5 second steps would be
fine, infinite would be better. Both battery and adapter powered would
be nice. It should be small (walkman sized). On/off/bypass switch (of
course) and it should be as cheap as possible (of course). I explained
this to a guy I know in Ohio, he gave me this:

"If I understand what you're looking to do, this could be done with an
ADC, some memory to act as a buffer, and back to analog via DAC. Not
really all that complicated. Small pause on startup to fill the
buffer. Use an encoder (or even a pot) to set the delay value in the
PIC that would be shifting the data out of memory to the DAC. There
might be an even easier approach using some analog circuit, but it
would be pretty easy to do it via digital/analog converter ICs."

I understand the very basic theory behind most of that paragraph (and
could figure out the rest.) The biggest conceptual problem I have with
it is "some memory to act as a buffer." Thanks for your time.

-Mike.
 
B

Bob Monsen

Hello, I'm attempting to design an audio delay circuit. While electronic
engineering is not my specialty, I can solder like a mad man and I have
a general idea of what's going on. I was wondering if anyone would be
willing to help me along. The thing needs to have audio in (rca and 1/8"
mini) and audio out. Adjustable delay from 0-12 seconds (more the
better, but 15 would be over kill). .5 second steps would be fine,
infinite would be better. Both battery and adapter powered would be
nice. It should be small (walkman sized). On/off/bypass switch (of
course) and it should be as cheap as possible (of course). I explained
this to a guy I know in Ohio, he gave me this:

"If I understand what you're looking to do, this could be done with an
ADC, some memory to act as a buffer, and back to analog via DAC. Not
really all that complicated. Small pause on startup to fill the buffer.
Use an encoder (or even a pot) to set the delay value in the PIC that
would be shifting the data out of memory to the DAC. There might be an
even easier approach using some analog circuit, but it would be pretty
easy to do it via digital/analog converter ICs."

I understand the very basic theory behind most of that paragraph (and
could figure out the rest.) The biggest conceptual problem I have with
it is "some memory to act as a buffer." Thanks for your time.

Assume your thingy is sampling at 44.1kHz, which is fairly standard. If
you are using a 14 bit ADC, that means you need to store 14 * 44.1e3 * s
bits, where s is the number of seconds you want to delay. Lets say you
want 10 seconds. Then you need 6.174M bits. However, most of the ram chips
you are likely to be able to use are byte addressable. Thus, you need 882k
bytes to store the data. If it is stereo, you need twice that much, at
least. At that speed, you might be able to get away with flash, but static
ram would be easier to use.

If you don't care about the sound quality all that much, you can get away
with a far smaller buffer. For example, if you restrict yourself to an 8
bit A/D converter, and save only 4k samples/sec, you only need 40.96k
bytes to save 10 seconds. Thus, you could do it with 2 32k byte static ram
chips.

Sadly, there are lots of other things to consider. Reading the data in
using an A/D chip isn't too hard. However, you need to tell the chip to
sample, then wait a bit until the sample is there, and then clock the data
into the proper ram chip by setting the address input, enabling a write
cycle, and waiting until the hold time is complete. You also need to be
reading the data out at the same time. That means a memory read cycle,
involving a different address after the write cycle, followed by an
activation of a D/A converter. You also need to ensure that the A/D and
ram chips don't try to write to the same wires simultaneously. Once the
data is into the D/A converter, it is output as an analog voltage. That
voltage will probably need to be buffered and filtered. The D/A may buffer
it for you, but you'll have to make sure. Then, the filter will remove any
strange artifacts associated with storing the data digitally, and present
a signal to the output.

The device would be reading from one address, and writing to another
address. The write address is N addresses 'ahead' of the read address,
where N is related to the sample speed and length of delay. Using your pot
idea, you need to somehow create these addresses. You could simplify this
somewhat by using the same counter for the lower 8 bits of address, and
switching the upper bits to be behind the write, modulo the memory size.
That means getting the analog voltage output at the pot, converting that
into some number representing the delay, subtracting that from the write
address, and using the new number as the high bits of the address.

This isn't a project for a novice.

However, using a microcontroller would vastly simplify the design. For
example, you could select a microcontroller with a 64k memory, and store
the samples in that on-chip memory (assuming you went for the low quality
option.) Most microcontrollers these days have at least an 8 bit A/D, so
it could handle input as well. The output would have to be done with an
external D/A converter or R2R ladder (a cheaper version using resistors),
but you would need to buffer the output. Thus, the device could be as
simple as a microcontroller, a little battery power supply, a D/A
converter, a couple of opamps, and a bit of protection for the inputs and
outputs. Even with external ram chips, it would be possible for the
microcontroller to manage all of the interactions with ram, thus
eliminating all of the sequencing logic required.
 
R

Rich Grise

Assume your thingy is sampling at 44.1kHz, which is fairly standard. If
you are using a 14 bit ADC, that means you need to store 14 * 44.1e3 * s
bits, where s is the number of seconds you want to delay. Lets say you
want 10 seconds. Then you need 6.174M bits. However, most of the ram chips
you are likely to be able to use are byte addressable. Thus, you need 882k
bytes to store the data. If it is stereo, you need twice that much, at
least. At that speed, you might be able to get away with flash, but static
ram would be easier to use.

If you don't care about the sound quality all that much, you can get away
with a far smaller buffer. For example, if you restrict yourself to an 8
bit A/D converter, and save only 4k samples/sec, you only need 40.96k
bytes to save 10 seconds. Thus, you could do it with 2 32k byte static ram
chips.

You could string together a pile of these guys:
http://focus.ti.com/docs/prod/folders/print/sn74act7808.html
Then the task for the micro would be simple - a write pulse at one end
at the sample rate, and a read pulse at the other end after your delay
time.

I have no idea how expensive that would be - maybe somebody knows about
a bigger and/or cheaper FIFO.

Good Luck!
Rich
 
B

Bob Monsen

You could string together a pile of these guys:
http://focus.ti.com/docs/prod/folders/print/sn74act7808.html
Then the task for the micro would be simple - a write pulse at one end
at the sample rate, and a read pulse at the other end after your delay
time.

I have no idea how expensive that would be - maybe somebody knows about
a bigger and/or cheaper FIFO.

at 2048x9, it would take a few of them to get 10 seconds. Also, how would
he adjust the length of the delay? I guess he could change the sample
time. However, then, playback quality would depend on the length of the
delay. Perhaps not a bad trade-off.

I could build one of these using a big PIC for about $30. John Fields
could probably do it for $5 with discrete logic.

Jim Thompson's tape loop sounds better and better, though. Tear apart two
old tape recorders, feed the tape through at a known rate, record on one
head, play back on the other. The delay is then proportional to the
distance between the read and write head.

---
Regards,
Bob Monsen

Cantorism (set theory) is a disease from which mathematics will have to
recover.
- Henri Poincare
 
J

Jim Thompson

at 2048x9, it would take a few of them to get 10 seconds. Also, how would
he adjust the length of the delay? I guess he could change the sample
time. However, then, playback quality would depend on the length of the
delay. Perhaps not a bad trade-off.

I could build one of these using a big PIC for about $30. John Fields
could probably do it for $5 with discrete logic.

Jim Thompson's tape loop sounds better and better, though. Tear apart two
old tape recorders, feed the tape through at a known rate, record on one
head, play back on the other. The delay is then proportional to the
distance between the read and write head.

That's the way it was really done before cheap memory and
microprocessors. What was it back then, 3.5 ips ??
Regards,
Bob Monsen

Cantorism (set theory) is a disease from which mathematics will have to
recover.
- Henri Poincare


...Jim Thompson
 
R

Rich Grise

at 2048x9, it would take a few of them to get 10 seconds. Also, how would
he adjust the length of the delay?

Just by the timing of the read pulse - as soon as you write a byte, it
becomes available at the output. And I'm fairly sure I've seen FIFOs
with pins to cascade them. But it would take a lot of them, especially
if you want more than 9 bits.
I guess he could change the sample
time. However, then, playback quality would depend on the length of the
delay. Perhaps not a bad trade-off.

I could build one of these using a big PIC for about $30. John Fields
could probably do it for $5 with discrete logic.

Jim Thompson's tape loop sounds better and better, though. Tear apart two
old tape recorders, feed the tape through at a known rate, record on one
head, play back on the other. The delay is then proportional to the
distance between the read and write head.

That wouldn't be too hard - I've even seen tape decks with three heads:
erase, record, and play. Just pull the loop out between the record
head and play head.

Cheers!
Rich
 
B

Bob Monsen

I've even seen tape decks with three heads:
erase, record, and play.

This century? ;)

---
Regards,
Bob Monsen

All things which can be known have number; for it is impossible for a thing
to be conceived or known without number.
- Philolaus (Pythagorean)
 
P

Pooh Bear

Jim said:
That's the way it was really done before cheap memory and
microprocessors. What was it back then, 3.5 ips ??

Well..... 3.75 ips was a standard tape speed but dedicated echo units like
Wem's Copycat didn't bother about that.

One of the nicer echo units actually used a magentic drum. No tape splices to
pop-click !

Graham
 
J

John Fields

at 2048x9, it would take a few of them to get 10 seconds. Also, how would
he adjust the length of the delay? I guess he could change the sample
time. However, then, playback quality would depend on the length of the
delay. Perhaps not a bad trade-off.

I could build one of these using a big PIC for about $30. John Fields
could probably do it for $5 with discrete logic.

---
Pretty close!-)

The CODEC - RAM - counter scheme is the right way to go, IMO.

In another life I used to work for an outfit named "2-Tel
Interconnect Systems" and we built an audio delay based on that
scheme for use with phone patches. Jumper selectable delays, as I
recall, up to about a half a second or so, but nothing inherently
limiting the delay other than depth of RAM. Also, as I recall, we
used 64k X 1 bit of dynamic RAM.

I've searched through my old stuff and couldn't find the schematics,
but the circuit at:

http://www.eetchina.com/ARTICLES/2003AUG/PDF/2003AUG29_AMD_AN02.PDF

(which link someone posted earlier) seems to be pretty close to what
we used.

---
 
J

John Woodgate

I read in sci.electronics.design that John Fields
The trouble with that method, as I see it, is that you'll never get the
transports perfectly synced up, so the loop will eventually break.

You lift off the pinch roller on one machine.
 
K

Keith Williams

When I was in college I worked at the student radio station (WPGU).
They used this method for call-in shows. IIRC, they used both
heads on the same machine (echos were done by feeding the read head
directly back to the write) and had the tape loop around other
machines just because they were handy.
Sounds kind of goofy to me.

Goofy perhaps, but it worked.
 
P

Pig Bladder

---
You'd still have to screw around with the take-up lever/tension
adjustments and make sure the tape tracked over both sets of heads.

Sounds kind of goofy to me.

Yeah, but you're John Fields.
 
J

John Woodgate

I read in sci.electronics.design that John Fields
You'd still have to screw around with the take-up lever/tension
adjustments and make sure the tape tracked over both sets of heads.

Sounds kind of goofy to me.

Nevertheless, a lot of non-goofy people have done it successfully.
 
J

John Fields

I read in sci.electronics.design that John Fields


Nevertheless, a lot of non-goofy people have done it successfully.

---
The way I read the suggestion was that the read head was going to be
on one machine, the write head on another, and that the tape was
going to strung between the two machines; one doing the reading and
the other doing the writing.

Two sets of heads on a _single_ machine, easy! Two sets of heads on
different machines, not-so-easy to goofy. Is that kind of a rig
what you're talking about?
 
M

martin griffith

---
The way I read the suggestion was that the read head was going to be
on one machine, the write head on another, and that the tape was
going to strung between the two machines; one doing the reading and
the other doing the writing.

Two sets of heads on a _single_ machine, easy! Two sets of heads on
different machines, not-so-easy to goofy. Is that kind of a rig
what you're talking about?
This was for disc cutters in the old days
http://sphl.audiogon.com/cgi-bin/buy_auc.pl?anlgtabl&1128995648

But it can be done with 2 tape decks, you just have a tape tension
sensor between the decks that controls the capstan servo on one of the
decks,


martin
 
J

John Woodgate

I read in sci.electronics.design that John Fields
Two sets of heads on different machines, not-so-easy to goofy. Is
that kind of a rig what you're talking about?

Yes, even 20 ft or so apart. You need intermediate support for the tape,
of course.
 
J

John Woodgate

I read in sci.electronics.design that martin griffith
But it can be done with 2 tape decks, you just have a tape tension
sensor between the decks that controls the capstan servo on one of the
decks,

That's far too sophisticated.
 
M

martin griffith

I read in sci.electronics.design that John Fields


Yes, even 20 ft or so apart. You need intermediate support for the tape,
of course.
Yep, broadcast "profanity delays" for phone-ins, before ITC came out
with the swapped head NAB cartridge nightmare. Thats one thing
digitised audio did solve


martin
 

Similar threads

Top