Hi, I’m one of the small contributors to StreamRadio, an app which allows to listen to online streams.
At some point, I wanted to add recording capabilities to it (I must inform, in first place, that I don’t have any background in C++). While looking at the Media Kit API searching for ways to do this I’ve come up with what I think is a better idea: to make another app, able to record any audio stream currently playing.
In the multimedia control preflet, I can set different volumes for every stream playing, and what’s better, every single stream has its proper name. For example, if I start two different radio streams in StreamRadio (yes, it can do that) I get a different volume control for every one of them, along with the names. That led me to the following idea: maybe it’s not so difficult to build an application to grab those outputs and feed them to an encoder.
I already know how to use GetLiveNodes() to get a list of the active nodes, and I’ve learned to filter those results to get only the nodes I want. Problem is I can’t Connect() to them because the function fails with B_MEDIA_ALREADY_CONNECTED, which makes sense since they’re already connected to the mixer/audio output, and obviously an application shouldn’t be able to mess with another.
So, to summarize… is there a way to do what I want? Can I get a “copy” of the node? Is there an app for this already? (I have a vague memory of a BeOS screenshot showing an app which could redirect audio inputs/outputs, like an audio desk or something, but I might be making this up)
Thanks in advance