A Multichannel Sound Player
I have developed a multichannel sound player actor for Isadora. With this actor, you can direct the sound from your audio files to any channel of your multichannel output soundcard, and have controls for volume, start trigger, loop enable. The actor outputs the current position in the audio file and generate an end trigger. I think this will be mainly of interest for the people that are working on Windows OS, as Isadora does not support natively the multichannel sound settings under Windows yet.
In the attached zip file you will find the Visual Studio 2008 project that contains the code for this actor.
Instructions for installation:
0. Install QuicktimeSDK and IsadoraSDK if you don't have them already installed.
1. Install Portaudio. (These are the sources I used
http://www.portaudio.com/archives/pa_stable_v19_20111121.tgz, and here you have tutorial on how to compile it http://portaudio.com/docs/v19-doxydocs/tutorial_start.html . We are using portaudio with the WASAPI hostapi.)
2. Install LibSndfile ( http://www.mega-nerd.com/libsndfile/)
3. Adapt the attached code to your system:
- First, you should check in the project properties that the paths to portaudio and libsndfile correspond to the folders where you installed them.
- Then you should adapt in the AudioComplex01.cpp file, inside the ActivateActor function, the recognition of the device. The code I am sharing is adapted to the recognition of a hybrid ultralite MOTU device, which has eight analog mono outputs. In "La Lumière ne s'arrête pas là", two ultralite MOTU are connected such that eight stereo channels are available.
- If the number of output channels of your sound card is not eight, there are some changes to do throughout the code. If anyone could tell me how to put a variable number of inputs/outputs in an actor, I could solve this issue.
This actor was tested on our project with *.wav files and it did serve its purpose. However we would like to add some functionalities like, for example, an automatic recognition of every available multichannel devices so the user can choose his device from a list instead of having to adapt the code and recompile the code by hand as this is the case now. We would like also to change the library we are using to read from sound files to something that read wider variety of sound files than libsndfile, or even movie files. Maybe ffmpeg? There are still some other things on our TO DO list but I will not write it all here because it would make the post way too long...
If you happened to update or add some features to this code, we would be grateful to you if you could share them to us here. We will keep you posted with our forthcoming updates. 7c1957-audioc01.zip