I am looking for an Audio API and was wondering what everyone else uses or if they have any recommendations.
My premise:
I am writing a "radio chatter" program that will simulate people chatting over aviation radio frequencies.
My implementation steps:
First I'm writing a function that simulates aircraft entering and exiting an area. It will then output a structure containing a wstring representing the message that is being spoken, the frequency of the transmission, and an identifier representing the specific aircraft or air traffic controller.
I'm using the wstring because I am planning to use the Windows Text-To-Speech API for testing (I've used it before and it is really easy).
Once I've got the primary function down, I want to create my own audio library with a series of pre-recorded .wav files containing spoken versions of the scripts that will be used. I'll need to parse the wstring to figure out which file to play.
I am using a Windows dev enviornment, but my final product will need to run on Red Hat so I need to make this applicable to Windows and Linux.
My API requirements:
1. Windows and Linux compatible (Red Hat)
2. Streams wav files
3. Outputs multiple streams at the same time with the ability to turn each stream on and off.
4. Ability to choose which audio device to use.
That is interesting. I usually don't have great experiences mixing CreativeLabs with Linux but I also ussually only use their products, not dev tools. It's got documentation and a wiki. I'll give it a try, thanks.
This API seems to be mostly aimed at positioning sounds and balancing those positions between the different speakers with reference to the listener. Since I'm not making a game, I want control of each speaker and I don't want to worry about inhibiting any automatic balancing (though I'll continue reading).
Requirement 1: Fulfilled, though I had some stability issues on openSUSE.
Requirement 2: Not fulfilled, although you can use libsndfile for reading such files.
Requirement 3: Possibly fulfilled. Why not mix your audio streams into one?
Requirement 4: Fulfilled if you use Pa_OpenStream and NOT Pa_OpenDefaultStream.