On Stage Music Sampler for band With Arduino - > NEED ADVICE!!!

It is the first time I will work with arduino and its derivatives and I would really appreciate if you could give me some advice for my project... Here it is!

I would like to make a system for the following problem:

With my music band we use sampled music on stage. One way to do this is to use a computer with some music programs and a sound card. I would like to change this computer + soundcard system by a custom made arduino system.
This is what we need:
For 1 song, two different tracks are generated: the track which goes through the PA (for the crowd) and one track of metronome which goes to the drummers earplugs.
(this is done with the computer)

These two tracks/song must be copied on a kind of flash drive (memory device) connected to the arduino. And then, when triggered (by pushing a button or so) those two tracks must be played through 2 separate stereo outputs and of course must be synced!! (the metronome of the drummer must fit the music the crowd is hearing right...)
So for one song I need two stereo outputs, which play different music but must be syncronised.

I was thinking of using the following equipment:

arduino uno

2 x Sparkfun mp3 player

Micro SD shield for memory (but I must admit I would prefer some flash drive which can be written through USB even when connected to arduino)

I might want to put also a LCD screen so that we know which song is playing... which one would you advice us?

Do you think this project is feasible?
Could you please give me some advice?
for example: is it possible to connect two MP3 shields on the same arduino and send a different song to each one at te same time?
May I use the same flash memory drive for both MP3 shields?
Is there a way to work with some solidstate hard drive which can be written with a USB cable while connected to the arduino...?

Many thanks in advance!

Do you think this project is feasible?

No. The arduino is not fast enough.

for example: is it possible to connect two MP3 shields on the same arduino

Yes that should be on.

and send a different song to each one at the same time?

No because you can't open two files on the SD at the same time. Using two SD cards might be possible but I doubt it.

Is there a way to work with some solidstate hard drive which can be written with a USB cable while connected to the arduino...?

I don't know of one.

This is a very advanced project and I doubt if it is possible.

I think you are not getting a lot of replies because of the way you put your question.
An arduino (as far as I know - please don't shoot folks) cannot synchronize music.

It can simultaneously start tracks, but if the music on the tracks is out of step then c'est la vie.
The arduino will, I think, be able to do all the hardware bits you are asking for but it cannot sample and sync music in real time.

Try to narrow your question down to the exact problem you have and you will probably get a good response.
There is no shortage of technical skills on this forum and quite a lot of people seem to have music backgrounds.

Hmm. I knew you were asking a lot in the first part of your post, but I thought people might have answers to the second part.
If Grumpy_Mike thinks otherwise then you have problems :disappointed_relieved:

Your post sounded as if you are already doing something, but are not satisfied with it.
If that is the case then try to pin down what the problem with the existing setup is.

I'm no musician, but this sounds like the sort of thing that I'd expect a synthesizer to do easily. Do you really need to invent your own solution?

I suppose one thing you could do, is have an audio program open on your computer that can send and receive MIDI input and output... and have the audio in there, synced up to the metronome of the program...

then, you could have a midi track on that program that has a note play every quarter note, but have it so that this midi track isn't connected to the program, so its silent...

have the midi quarter notes going through USB to an arduino, and have an arduino audio shield attached http://adafruit.com/products/94 ...and have the arduino read the midi data and play a 'click' every time the midi note is sent...

this way, you can have the live sound going from the computer out to the crowd, and your drummer can have his own earphones with a click track, that will always go to the tempo of the music...

how does that sound? probably a little more doable...

if its your first time working with arduino though, i'd suggest you start with at least a few simpler projects first, just to get started...

you need to walk before you can run.

Hey folks!
Thanks for the advice, I think I'll have to ask my questions more precisely :slight_smile:

For sure my problem can be solved simply by using a computer (with a music program like cubase) and a basic soundcard. But the reason we don't want to use this is the price (min 1000 euros).( we used to do it but our computer got stolen) Plus using a computer for this, is kinda overkill. (would you buy a car just to use the lighter? :smiley: )
Beside the computer and soundcard setup, there exists some "sampler/synths" systems which do the job... but this time you'll have to count at least 4000 EUR...

So basically, I would like to make my own system which will just do the job and nothing more for an affordable price. I'll sketch the problem again in a hopefully better way :slight_smile:

I need to be able to play two different tracks at the same time and send each of them to a seperate stereo output.
Those two tracks do not need to be synced realtime since I will prepare them (they won't get out of step). So I just need them to be started simultaneously.

imagine we play 3 songs on our gig.
tracks "A" are for the drummer earplugs and tracks "B" are for the PA system.

So we have:

track1,A ; track2,A ; track3,A
track1,B ; track2,B ; track3,B

-when starting the gig the drummer pressess the "start button".

track1,A and track1,B start simultaneously.
track1,A has a stereo output which goes to the drummers earplugs (the metronome)
track1,B has a stereo output which goes to the PA system (the orchestrations)

when pushing the "next button" we go to the second track

track2,A and track2,B start simultaneously.
track2,A has a stereo output which goes to the drummers earplugs (the metronome)
track2,B has a stereo output which goes to the PA system (the orchestrations)

... and so on ...

I know this is probably a hard project but I really need to get this done :slight_smile:

Here's what I am wondering:

  • What is the best hardware solution to output my two (simultaneously running) tracks on two different stereo outputs? and how would you advice me to do this?

  • What is the best hardware solution to "save" (SD card, flash drive, ...) my tracks (.wav or .mp3 files) so that the 2 corresponding tracks can be launched simultaneously by the arduino board?

Thanks again for your help!

I think I'll have to ask my questions more precisely

You can but the answer is still the same. The arduino is not fast enough and does not have enough memory to do this. There is no way round this fact.

Another fact you can't get round is that you can not open two files on one SD card at the same time. This is due to how the SD card memory works. Any system that appears to let this happen copies one file into RAM memory first and then opens the other. The arduino has not got enough memory to do this.

An Arduino can control 2 MP3 players. Just have it push the play/pause button on each at the same time. You might also need the rewind-back-a-track button. A player can be bought for less than $20. To get really fancy make a single song playlist so it stops automatically. Or figure out the exact time of each track and stop a second earlier/later. Then sync with rewind/forward. This should keep them in sync within milliseconds.

What about waiting for the Arduino Duo to come out you might have more luck with that, or another similar thing that maybe run's a cut down linux. For a 8 bit micro your looking at midi stuff really, no audio. You can do some simple audio stuff but how musically useful it is i don't know. Think of the sequencer in a 303 that's about the level you can squeeze out of an arduino uno, just the sequencer not the audio.
Some people do get audio out of it but i reckon it takes a lot of work save your self the head ache and use something bigger and get it to exactly what you want.

Ok thank you guys for your advice!!

During the same time I've been thinking about it and this is what I thought. Please correct me if I'm wrong :wink:

I could use 1 arduino with two Sparkfun MP3 shields. Each of these MP3 shields do have their own SD card port. So basically I could copy the "drummers" tracks on one SD card and the "PA" tracks on the second SD card and plug the two SD cards in their respective MP3 shields.
All I need then is a way to start the two MP3 shields to start the tracks simultaneously... (+ eventually some functions as forward/rewind/stop/...)

What do you guys think about that? feasible?

Is it hard to connect two MP3 shields on the same arduino (I mean do I have to do a lot of coding and so on...?) ?


The SD card uses the SPI interface. There is only one SPI interface on an arduino.
You will have to design and build extra circuitry that will enable each SD card separately.
Then you will need to hack the SD card libraries so that they take the new way of selecting the SD card you want. Finally you will have to change the libraries so that this piecemeal way of accessing the cards a few bytes at a time is implemented.
Think you are up to that?

2 cheap consumer MP3 players are much easier, and less expensive!

Hmmmm, it's more complicated than I though it would (speaking about the SD cards principle...)

Actually I was thinking that the SPI inputs could take several devices.
( This is the case for exemple for encoders... So how it comes it is not ok for SD cards...?)

Anyway I think you guys are right, it would probably be easier to use two very simple mp3 players...
I'll check it out :wink:


yeah, maybe hack the mp3 players buttons so that you can trigger them with an output pin on the arduino?

Yes the SPI bus can talk to diffrent devices.

So how it comes it is not ok for SD cards..

Because the libraries that do the readings are not written to cope with two SD cards with a file open on each. Electrically it is possible but are you up to writing the unique software you will need?

Take a look at this;

What is your purpose;
Is there something you want to do which existing equipment does not do?
Is it that the available equipment is too expensive?
Are you just looking for a challenge to meet with an arduino?

You are going to be hard pushed to provide more features than what is commercially available. It is possible you could provide some features at lesser cost but they will be relatively limited and require a lot of effort. If you want a challenge this would certainly fit the bill.
If the core objective is to support a band I would find ways to make money to buy kit and bootstrap towards being able to buy better kit.