Author Options:

Individually Addressable Speaker Array Answered

Hey! I had an idea for an array of many small speakers, each capable of playing different sounds so I could dynamically re-arrange which speaker is playing what. This would be paired with some LEDs and some water to make (what I hope will be) a fantastic visual effect.

But of course all this is a bit over my head, so I'd like some feedback on my idea!

After a bit of research, here's how I think I'll do it:

General Concept
Essentially what I'm trying to do is make a waveform generator with lots and lots of separate channels.
  • I would hook up my microcontroller to several, multi-channel Digital to Analog Converters (DACs).
  • The microcontroller would feed these DACs signals to generate the wave forms that I want for each individual speaker.
  • The waveforms that the DACs output would each go through an extremely simple amplifier.
  • The amplified signal would go to my speakers.
I've attached a diagram that should give you a better idea of what I'm doing.

  • The microcontrollers I'm looking at are the ChipKIT series from Digilent because I have access to a bunch of these. I'm currently planning on using the uC32, but I actually have access to pretty much all their other boards. The uC32 runs at 80MHz.
  • The DAC I'm looking at is the AD5628 from Analog Devices. That's used in Digilent's PmodDA4, which I also have access to. Alternatively I might just order a bunch. They have 8 analogue outputs, and the SPI communication can run at 50MHz clock speed. I'm planning to have eight of these (for 8^2 total outputs).
  • I haven't figured out what amplifier I'm going to use yet. It'll need to be simple and cheap, as I'm expecting to have 8^2 of them, but I'd also like one that can operate over a large band of frequencies.

I've also attached two pictures of the speakers I'm planning to use. I kinda randomly acquired a lot of these, so I'd rather not switch to a different speaker type.

According to Wikipedia, the highest note on a piano keyboard is a little over 4kHz. If I split the sinusoidal wave into 16 segments, that means an update frequency of 76kHz. This is way below my max operating speed of 50MHz so I think I can get away with it.

  • What am I doing wrong? I'm hardly an expert on any of this, so I'm certain there's a much simpler way.
  • Are there ICs that do what I want? Maybe something that takes in a digital signal and outputs waveforms? This would be similar to how a servo controller would output different PWM signals, only changing the frequency rather than the duty cycle.
  • What sort of amplifiers should I be looking at?

This is my first time on the forum so please let me know if I'm doing anything wrong (or could do anything better).


The forums are retiring in 2021 and are now closed for new topics and comments.

5 years ago

Sounds like you are making a polyphonic music synthesizer from the ground up. I don't know how many sounds you wanted to make at once but most modern ones are capable of 128 simultaneous sounds. An array of parallel circuits gets expensive real fast. The only thing is that they are not broken out individually on the amplifier path and designed to be mixed in for the usual stereo sound. I guess you should take a look at the multi channel recording mixers out there, again, quite expensive.


Reply 5 years ago

this is also along the lines of duplicating a pipe or theatre organ with its individual sounds going through individual pipes or effects. Good luck.


Reply 5 years ago

Okay! This gives me another avenue for research. Thanks!