Does a dedicated audio digital delay IC exist? (easing into DSP)

Started by Gurner, September 29, 2010, 04:45:03 AM

Previous topic - Next topic

Gurner

As someone who has never really dabbled in DSP, I don't know where to start!

As a first goal, I'd like to be able to delay all notes on a guitar by at least one cycle...the lowest standard tuned guitar note is 82.4Hz - which yields a 'period' of about 12.2ms .. .so I'm figuring I need the ability to delay all incoming guitar notes  by at least 12.2ms.

So I'm figuring what the 'delay' process would be is...

AtoD the signal -> store at least 12.2ms worth of 'samples'-> read the samples out after 'x' time (DtoA)

Are there any standalone ICs that facilitate AtoD & DtoA back again....and storing sufficient samples onboard too, to allow at least  12.2ms of delay (or is the storing away the samples normally done elsewhere?)

At this early stages, I'm not that worried about the audio quality of the delayed signal ... a sampling rate of somewhere in the order of 22Kkz @8 or 10 bits should suffice . To get 12.2ms delay @22.khz  8 bits ...what type of chip would be a good low cost starter? (ie a nice, safe easy introduction to dsp!)

anchovie

Bringing you yesterday's technology tomorrow.

Gurner

Wow...quick response - I've just had a look at that data sheet - sure enough sufficient delay time!

I was just about to edit my initial post to say, my ultimate goal is to be able to get really granular with the delay - this is because I want to have a dabble with phase. Unless I'm interpreting the datasheet incorrectly, that IC doesn't allow such granularity.

Bearing in mind the highest note of a fretboard is about 1.4Khz...this gives a 'period' of 700us - to be able to shift that frequency by 1 degree, would need the granualrity of delay to go as small as  1.94us (700us/360). So my ultimate target would be to have a delay system which would allow me to delay a signal as little as 1.94us (ie 1 degree of phase @1.4Khz) ......with the maximum delay I'd like being 12.2ms (360 degrees of 82.4Hz)

anchovie

Quote from: Gurner on September 29, 2010, 05:22:10 AM
my ultimate target would be to have a delay system which would allow me to delay a signal as little as 1.94us

Is there a commercial pedal that goes that fine?
Bringing you yesterday's technology tomorrow.

Gurner

This isn't a commercial venture...I'd just like to have a dabble with phase..ideally down to one degree of phase for the highest fundamental frequency on a guitar ....approx 1.4Khz. (not even sure I'll need that amount of resolution, but got to have a spec to aim for initially!)

Like I say, i'm new to DSP - in this day & age ...would a delay of 1.94us for an modest 8 bit sample be that onerous for the type of hardware involved?

anchovie

Oh I wasn't suggesting that you were researching a commercial venture, I just wondered if there was anything already available that did what you want. I haven't seen any echo chips that go that fine - I guess they're designed with the intention of providing an echo that's noticeable! This might be a project that involves programming a DSP chip yourself - the FV-1 is the popular entry-level choice round here but I haven't had the experience of it myself to say if delay times that short are possible with it.
Bringing you yesterday's technology tomorrow.

Gurner

thanks.

So if there's no bedspoke chips that go that fine, presumably I'm faced with going a little more hardcore (for a beginner!)...

AtoD -> store away samples in memory.
wait a bit
DtoA -> recall samples from memory.

therefore I need a processor, an AtoD, some Memory, a DtoA ..... is there any DSP hardware (ie that hobbyists lean towards) that  has that stuff onboard already?

Also, I'm trying to figure out how to establish how much memory I need...

12.2ms (ie 82.4Hz @ 360 degrees resolution) divided by 1.94us (1.4Khz @ 1 degree resolution) = 7000 samples max needed to be stored

...therefore 8 bit resolution =  8 kilobytes of sample storage needed?

therefore would it be safe to say I need to start looking for DSP that can run at 10 Million Instructions per second? (1us per instruction) with an ADC, DAC & 8K of onboard storage?

anchovie

According to the datasheet, the Spinsemi FV-1 runs at 6MIPS when the clock is at 48kHz and has 32K words of internal RAM. Would be worth contacting them to ask how fast you can clock it externally to get more MIPS.
Bringing you yesterday's technology tomorrow.

octfrank

48K is the official max clock speed for an FV-1. People have clocked it faster but we do not support that, however it shouldn't hurt the chip.

There are a lot of example programs on the Spin web site so you should be able to read those and get running quickly. If you already own a device programmer that can program 24LC32A EEPROM then you can d/l the assembler from the web site and create your own code, save as am Intel format HEX file and write to the EEPROM.

Frank Thomson
Experimental Noize

Gurner

Cool...someone from the company drops into my thread (if only real life were like this!).

I quick (n00besque) glance at the datasheet has me wondering how I can get really granular with the delay in real time - it seems that it's being presented to the 'outside world' as an analogue device...then maybe it's not going to be a good match for say a PIC talking to it (other than the PIC changing its few presets) - unless I'm missing something, it would seem the only way to control paramaters internally is via the 3 pots?  

Still, I'm loving the funk factor - How much are these puppies...and as a Brit where can I buy one?

octfrank

Well they delay can be as granular as one sample period+delay through ADC and DAC. POT inputs are only way to send parameters to a program, can write your own programs and put up to 8 in the external EPROM.

For UK see http://www.profusionplc.com/ in Southend-on-sea, Essex
Frank Thomson
Experimental Noize

Curt Malouin

#11
1.94 usec per sample means a sampling rate of ~515 kHz.   Although you can find ADCs that will sample that fast, a more practical approach is to use an interpolated delay line.  Basically, you can sample at 48 kHz (or whatever), but interpolate between samples in the delay line to get a fractional delay.  Here is an article:
https://ccrma.stanford.edu/~jos/pasp/Delay_Line_Interpolation.html

You won't need much memory because 12.2 ms is only 586 samples at 48 kHz.  The FV-1 can definitely handle this, and there is some sample code on the Spin web site for linear interpolation.  The FV-1 is a great choice for starting DSP.

As Frank mentions, the ADCs and DACs add a bit of delay.  I don't know the figures for the FV-1, but on another common DSP the ADC and DAC each add about 0.5 ms group delay, for about 1ms total.   Your "dry" signal will go through the same ADC and DAC, so the whole signal will be delayed by that much.

Edit: removed something stupid I said about ADC and DAC group delays causing a problem  :icon_redface:

Curt Malouin

#12
You could also try software like Max or Pure Data (free) if you want to experiment with the short phase delays before committing to hardware.

space_ryerson

Quote from: Gurner on September 29, 2010, 05:22:10 AM
Wow...quick response - I've just had a look at that data sheet - sure enough sufficient delay time!

I was just about to edit my initial post to say, my ultimate goal is to be able to get really granular with the delay - this is because I want to have a dabble with phase. Unless I'm interpreting the datasheet incorrectly, that IC doesn't allow such granularity.

Bearing in mind the highest note of a fretboard is about 1.4Khz...this gives a 'period' of 700us - to be able to shift that frequency by 1 degree, would need the granualrity of delay to go as small as  1.94us (700us/360). So my ultimate target would be to have a delay system which would allow me to delay a signal as little as 1.94us (ie 1 degree of phase @1.4Khz) ......with the maximum delay I'd like being 12.2ms (360 degrees of 82.4Hz)

Do I smell a sustainer?

Gurner

Thanks guys....perhaps my ultimate goal is a bit ambitious for an easing into DSP.

Space _Ryerson....no it's not a sustainer (for which, I'm happy enough with a simple polarity flip)  - this would have been just to give full flexibility to a fancy I have for dabbling with a digital phasers.....and I'm not reinventing the wheel....I know analogue phasers are very pleasing, but just thought such a thing would be a nice trget to set myself to learn about DSP.

Perfboard Patcher

Quote from: Gurner on September 29, 2010, 05:22:10 AM
Bearing in mind the highest note of a fretboard is about 1.4Khz...this gives a 'period' of 700us - to be able to shift that frequency by 1 degree, would need the granualrity of delay to go as small as  1.94us (700us/360). So my ultimate target would be to have a delay system which would allow me to delay a signal as little as 1.94us (ie 1 degree of phase @1.4Khz) ......with the maximum delay I'd like being 12.2ms (360 degrees of 82.4Hz)

Delay doesn't have to be 1.94us, could as well be N times 700us + 1.94us.

PP

Gurner

Quote from: Perfboard Patcher on October 04, 2010, 07:48:09 AM
Quote from: Gurner on September 29, 2010, 05:22:10 AM
Bearing in mind the highest note of a fretboard is about 1.4Khz...this gives a 'period' of 700us - to be able to shift that frequency by 1 degree, would need the granualrity of delay to go as small as  1.94us (700us/360). So my ultimate target would be to have a delay system which would allow me to delay a signal as little as 1.94us (ie 1 degree of phase @1.4Khz) ......with the maximum delay I'd like being 12.2ms (360 degrees of 82.4Hz)

Delay doesn't have to be 1.94us, could as well be N times 700us + 1.94us.

PP


That's a good point well made - but even adding on the 700us, it'd still need 1.94us of 'delay granularity'. (which might be a tall order)

octfrank

Quote from: Gurner on October 05, 2010, 08:07:48 AM

That's a good point well made - but even adding on the 700us, it'd still need 1.94us of 'delay granularity'. (which might be a tall order)

What Curt said above about using interpolation between samples will give you the granularity you want.
Frank Thomson
Experimental Noize

MoltenVoltage

can you set the delay time externally on the spin fv1?

if so, is it done using a resistance like the pt2399 or using SPI or I2C, or some other method?

what is the longest delay available using the presets - without having to do any coding?

thanks

MoltenVoltage.com for PedalSync audio control chips - make programmable and MIDI-controlled analog pedals!

octfrank

Quote from: MoltenVoltage on October 25, 2010, 03:45:24 AM
can you set the delay time externally on the spin fv1?

Yes using a POT input and some program code

Quote from: MoltenVoltage on October 25, 2010, 03:45:24 AM
if so, is it done using a resistance like the pt2399 or using SPI or I2C, or some other method?

POT inputs have an ADC so it is a voltage between 0 - 3.3V you apply

Quote from: MoltenVoltage on October 25, 2010, 03:45:24 AM
what is the longest delay available using the presets - without having to do any coding?

None of the presets are pure delay so you would have to code one (very simple). Total of 32K words of delay RAM so 1 second at 32KHz sample rate for a single channel, if doing a stereo delay then 1/2 second for each channel but if lower bandwidth is acceptable then use a slower crystal and get longer delay. And of course higher sample rates will result in less delay time.
Frank Thomson
Experimental Noize