Hello ALUG,
I'm doing some work with one of the post-grads on a Web-based audio mixer for live sound sources.
The user will see each of the, say, half-dozen sound sources arranged on the screen and as he moves his cursor (or "joystick") towards one, it becomes predominant in the mix. Each of the sound sources will play either a continuous stream from a live microphone or continuous loops of interesting cached sounds.
My basic plan is to have this sort of "joystick" metaphor on the client side which responds to mouse gestures by sending lots of small HTTP requests representing Open Sound Control commands using AJAX to a PHP (or possibly the dreaded Perl) script on the server side which, in turn, forwards the OSC commands to the mixer software. The output audio stream from the mixer should then be MP3 encoded and streamed back to the client to play in his embedded media player.
I have a clear view of how I will implement everything up to and including the server side PHP (or Perl). After that I'm not so sure. There are two aspects that I'd appreciate anyone's wisdom on.
First is the mixing software. The reason why I've mentioned OSC is because my colleague is an experienced Max/MSP user and would like to use either that or PureData to handle the mixing. However, I'm worried about how well this will scale up when multiple users are connected. Will I have to run one instance of Max (or pd) for each client connection? Should I perhaps consider a more UNIXy tool like ecasound or something?
Second is the streaming software. I'm a bit surer about this: I've looked at Icecast and it seems to do MP3 encoding. I reckon it can probably handle multiple client sessions as long as each connection has its own distinguishable source audio stream which I suppose depends on how I choose to implement the mixer. Has anyone had any experience with it? Is it very resource intensive?
Any thoughts or experiences would be very welcome!
Cheers, Richard