Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Sound output through M-Audio ProFire 610

I got an assignment at work to create a system which will be able to direct sound to different output channels of our sound card. We are using M-Audio ProFire 610, which has 8 channel output and connects through FireWire. We are also using a Mac Mini as our host server and I'm gonna be working in Xcode.

This is the diagram of what I am building:

diagram http://img121.imageshack.us/img121/7865/diagramy.png

At first I thought that Java will be enough for this project, however later on I discovered that Java is not able to push sound to other than default output channels of the sound card so I decided to switch to C++. The problem is that I am a web developer and I don't have any experience in this language whatsoever - that is why I am looking for help from more experienced developers.

I found a Core Audio Primer for ios4 but not sure how much of it I can use for my project. I find it a bit confusing, too.

What steps should I take to complete this assignment? What frameworks should I use? Any code examples? I am looking for any help, hints, tips - well anything that will help me complete this project.

like image 771
rkrv. Avatar asked Feb 14 '11 10:02

rkrv.


2 Answers

If you're just looking for audio pass-through, you might want to look at something that's already been built, like Jack which creates a software audio device that looks and works just like a real one (you can set it as default output for your app) and then allows you to route each channel anywhere you want (including to other applications).

If you want/need to make your own, definitely go with C++, for which there are many many tutorials (I learned from cplusplus.com). CoreAudio is the low-level C/C++ interface as Justin mentioned, but it's really hard to learn and use. A much simpler API is provided by PortAudio, for which I've worked a bit on the Mac implementation. Look at the tutorials there, make something similar for default input and output, and then to do the channel mapping use PaMacCore_SetupChannelMap, which is described here. You'll need to call it twice, once for the input stream and once for the output stream. Join the mailing list for PortAudio if you need more advice! Good luck!

like image 81
btown Avatar answered Oct 27 '22 18:10

btown


the primary APIs are at CoreAudio/AudioHardware.h

most of the samples/supporting code provided by apple is in C++. however, the APIs are totally C (don't know if that helps you or not).

you'll want to access the Hardware Abstraction Layer (aka HAL), more details in this doc:

http://developer.apple.com/documentation/MusicAudio/Conceptual/CoreAudioOverview/CoreAudioOverview.pdf

for (a rather significant amount of) additional samples/usage, see $DEVELOPER_DIR/Extras/CoreAudio/

like image 41
justin Avatar answered Oct 27 '22 18:10

justin