Arduino Sound Sampler

Hi everyone,

Long story short: Arduino 8-bit ADC input to Parallel conversion output at up to 28kHz

Having restored my Commodore Amiga, I'm feeling inspired to make some retro sounding tunes... 8-bit mono samples at up to 28kHz... like in the early 90s when I had spots and wanted to be understood!

I could just buy the hardware on eBay but I'll end up doing a tear-down, then be really annoyed that I didn't put the effort in to build one myself. The old sound samplers in the 80s/90s for the Amiga used discrete 8-bit ADCs with some glue logic (74 series probably), so no micro-controller required.

I have 2 questions at this time:

  1. Can the 16 MHz ATMega328P sample an audio signal at 28 kHz? [Datasheet suggests this is not a problem]

  2. Can the Arduino output the data in real-time (synchronised to a parallel port strobe pin)?

Thoughts:

I could use 8 Arduino digital outputs connected to the Amiga's parallel port D0 through D7. But, can an Arduino write to each digital pin quickly enough? I suspect not. Maybe requires direct port manipulation?

Micro-controllers these days are optimised for serial output and protocols like I2C - so would a fast serial connection to a shift register (like the 74HC595) be faster than controlling individual digital output pins?

ATMega328P has 10-bit ADC - could the extra 2-bits be ignored, or could they be scaled to an 8-bit value (in time) to provide a higher-quality sample?

The old sound samplers were on-the-whole "dumb" pieces of kit, no protocols, handshaking etc. They just did their conversions and the Amiga was either listening to the port or not!

Please be kind, I'm learning! Thanks guys

Thanks but that's the opposite of what I want to do! :slight_smile:

JamieUK:
Hi everyone,

Long story short: Arduino 8-bit ADC input to Parallel conversion output at up to 28kHz

Having restored my Commodore Amiga, I'm feeling inspired to make some retro sounding tunes... 8-bit mono samples at up to 28kHz... like in the early 90s when I had spots and wanted to be understood!
...

I don't have much to offer you, but enjoyed your post. I was once very involved with Atari programming, and when the 16 bit Atari-ST came out ( same 68000 CPU as your amiga) , I did quite a bit with when it came to sampling. The ST provided a pretty direct bus to access address and data to/from the CPU, and I remember spending a LOT of money for a 16 bit Burr-Brown A/D (and the cheaper D/A) to see if I could build a CD quality sampler and player. Once done, of course I had a ball learning to do all the cool signal processing tricks (like real time pitch changing, reverb, and other effects). Of course these days a 16 bit 44khz combo a/d and d/a (codec I guess you call them now) is dirt cheap compared to back then.

I think it would be challenging to get decent audio sampling with these ATmega based arduinos without the help of any external hardware. Plus there's not a whole lot of internal memory to hold a sample. But in the "good enough for fun" area, I imagine it will be doable. I'll follow your thread and see how your experimenting pans out.

I think you're right (now that I've spent all night thinking about it). Arduino is good if you need to do a bit of processing/decision-making etc.

I just need a chip to read an analogue value super fast and bang it out to a parallel port with minimal latency, at an arbitrary rate controlled by the parallel port strobe pin - no brains required lol.

There are soooo many chips that sound awesome for this, but then you read the datasheet and find out they can't be run at such a low rate... Cue the time machine...