EmbDev.net

Forum: µC & Digital Electronics Playing two or more WAV files simulatneously


von Ersin O. (Company: BARAN) (baran-tech)


Rate this post
useful
not useful
Hello,

I want to design a microprocessor board which will be capable of playing 
up-to 16 audio streams simultaneously. The audio streams will be stored 
in flash or SD card as WAV files.

Does someone knows if how I can do it?

Thanks,
Ersin

von jonas biensack (Guest)


Rate this post
useful
not useful
Ok, sounds easy. As long as you decide to play back 8 bit sounds with 8 
khz sampling frequency. :)

von jonas biensack (Guest)


Rate this post
useful
not useful
sd card lib:

elm-chan.org/docs/mmc/mmc_e.html

von jonas biensack (Guest)


Rate this post
useful
not useful
Your problem will be the data transfer rate of the sd-card. With the 
libs from elm chan you will get maybe 300 kb /sec. As long as you read 
only one file, and have big buffers (sector size) on the mc. So reading 
16 files simultaneously from one sd-card doesn't work! Believe me.

What to do?
-multiple sd-card / flash drives
-avoid overhead / fragmentation from fat -> create your one stream file 
system.

A little calculation what the transfer rate should reach:

16 bit, 32 mono channels (16 stereo channels) * 44100 khz
bit depth  channels  sampling frequency
=22.579.200 = ca. 22 Mb / sec :)

von Ersin O. (Company: BARAN) (baran-tech)


Rate this post
useful
not useful
Thanks for the answers.

It will be 48 Khz, 16 bits. Audio stream has no compression.

SD or flash storage is not a problem. I have difficulties in audio 
electronic part.

Thanks
Ersin

von jonas biensack (Guest)


Rate this post
useful
not useful
What difficulties? Audio output (audio dac circuit), mixing, controlling 
all that stuff?

von Ersin O. (Company: BARAN) (baran-tech)


Rate this post
useful
not useful
My problem is mainly mixing two or more audio streams.

I will have one microprocessor and an FPGA available on the board.

I will mix the audio streams either digitally in the FPGA or by using 
multi ADCs and an analog circuit to mix them. In either way I don't know 
exactly how to do it.

von Markus (Guest)


Rate this post
useful
not useful
Are you Ersin Oezalp from BARAN Microelectronic GmbH?

von Ersin O. (Company: BARAN) (baran-tech)


Rate this post
useful
not useful
Yes, do we know each other

von jonas biensack (Guest)


Rate this post
useful
not useful
With an fpga, that is another challenge: You need to setup a microblaze 
core or something to controll all that stuff. Then access the sd-card / 
flash drives from that core. Big tasks!


Digital mixing algo. for unsigned 16 bit values:

A + B – A·B / 65536

von jonas biensack (Guest)


Rate this post
useful
not useful
Sorry Z = A + B – A·B / 65536

A = sample 1
B = sample 2
Z = mixed sample

von Ersin O. (Company: BARAN) (baran-tech)


Rate this post
useful
not useful
Seems complicated for an FPGA but can be done. Do you know how I can to 
it with 16 DACs (I have to mix 16 streams).

von jonas biensack (Guest)


Rate this post
useful
not useful
16 dacs, forget about it - or find somebody who route this beast for 
you... Mixing analog signals is very easy. Just use an op, insert an 
adjustable resistor in the feedback loop to control sum gain. Each 
channel needs an poti to to controll the channel volume like here:

http://yusynth.net/Modular/EN/MIXER/Mixer-1U.html

It is build on a breadboard in minutes...


greetz jonas

von jonas biensack (Guest)


Rate this post
useful
not useful
With the dacs, do you plan using some of the "new" DACs more or less 
with an codec used and clock frequence = fs * 256 or some of the old 16 
bitters....?

von Ersin O. (Company: BARAN) (baran-tech)


Rate this post
useful
not useful
Jonas, thank you very much for the analog circuit. It helped me a lot.

I think I have to use 16 DACs since I have 16 digital audio streams. Is 
this correct? But I didn't decide yet which DAC to use.

von jonas biensack (Guest)


Rate this post
useful
not useful
No thanks! I like to help. :)

>I think I have to use 16 DACs since I have 16 digital audio streams. Is
>this correct? But I didn't decide yet which DAC to use.

This is correct. As long as you don't use a dac with multiple channels.
But let us go ahead (we assume to use an easy to handle one like this 
Rohm BU9480F, here the link: 
http://elm-chan.org/works/pcmp/report.html):

You need to avoid (oh it is really challenging me to explain this in 
english)
bad ground loops in your circuit, and that is not all...
I think you need to read a few hints to designing a good dac layout with 
16 dacs. Maybe you are lucky and some of the masters reign this forum 
can give you some more information. I stay on...

von Ersin O. (Company: BARAN) (baran-tech)


Rate this post
useful
not useful
What about this chip from TI:
http://focus.ti.com/docs/prod/folders/print/pcm1602a.html
It has 6 DACs. I have to use 3 parallel to achive 16 channels.

Actually I am an experienced PCB and hardware designer. The problem is 
that this is my first audio project. I developed mostly industrial 
control electronics.

I will investigate more on filtering and routing audio signals.

Thanks a lot.

Please log in before posting. Registration is free and takes only a minute.
Existing account
Do you have a Google/GoogleMail account? No registration required!
Log in with Google account
No account? Register here.