RAM size vs delay time

I was wondering how much possibilites the OWL will give in terms of echo/delay-style effects: Assuming you’re using the standard notation for memory, I am getting:

192 * 1024 / 12 / (96 * 100) = 1.70(6) seconds of sound in the buffer, assuming you can fill all the RAM with the audio samples. So you can have about 1.5 s. maximum delay time, if you accumulate all the subsequent echoes in the same buffer.

Does this sound about right?

Divided by 12, why?
Assuming floats are used for storage, they’re 32 bits, so 4 bytes.
Alternatively 16-bit integers may be used for a buffer (q15_t).
Also, personally I think 48kHz is a perfectly adequate sampling rate for a delay!

So is the RAM 192Kbits or 192Kbytes? From the lowercase “b” I assumed bits. Which one is it?

I also somehow missed one zero in the kHz :S

And the 12:

12bit / 96kHz codec
I assumed no less than 12 bits per sample (probably something byte-aligned, so 16bit int int like you said). So, also adjusting the sampling rate to 48 kHz:

If the RAM is 192 Kbits:
192 * 1024 / 16 / (48 * 1000) = 0.256 seconds

If it’s 192 KBytes:
192 * 8 * 1024 / 16 / (48 * 1000) = 2.048 seconds

If it’s the former it’s not really enough for a delay effect if the kickstarter doesn’t hit its 30k stretch goal :confused:

Ah, I see -
it’s 192 kilobytes total RAM available on the MCU.
Nonetheless I think we really need the extra RAM to do proper delays!

Most classic analog BBD delay pedals rarely get 1.5 seconds, and they sample with clock which can vary from ~20 kHz to 100kHz. A delay line with appreciable delay will have several BBD chips in series clocked on the low end (~20kHz) to get delays approaching 1s. Typically there is a 3rd order low pass butterworth band-limiting at between 3 kHz to 8 kHz.

That said, you can probably downsample your delay line to something like 22 kHz, even using a 16-bit integer as suggested, you get,
(1/22 kHz) * 192k RAM / 2 (bytes/sample) = 4.36 seconds,
and that is an appreciable delay time.

You can do even more, considering high-frequency damping is often part of an echo effect, so you may be able to downsample to as low as 16 kHz with small impact on the useful bandwidth:
HF damp (low pass filter) at 2kHz or less,
Brickwall at ~6 kHz, probably leaves a lot of (at least guitar) signal intact,
Downsample to 16 kHz
Use a relatively robust interpolator to resample the delay line.

Making yet another sacrifice to quality, you would be able to make a 26 second looper using companding on a 8-bit delay line at 16 kHz with the memory available. Then stretch it out longer by taking silence (or samples below a certain threshold) out of the line with a counter following a zero to indicate how many in sequence, so it’s only storing viable signal levels… and so on.

All this in trade for CPU time decoding and interpolating the delay line.

These are just some ideas I find interesting, so forgive me if I sound like I’m giving unwanted advice.

Really, with the addition of more RAM, these ideas become less interesting.