Salut, Ca fait plaisir de se faire découvrir par une grosse webradio française :D
Let's switch back to english for the technical stuff...
I've been searching for a long time for something similar to ices but able to stream to sound cards instead of icecast,
Indeed, liquidsoap can do that. The ALSA I/O is not fully finished yet (it doesn't resample when the soundcard doesn't accept 44100Hz) but it's only a matter of time (and of requests from big shots like you)... The reason why I didn't do it yet is because we started working on Jack I/O instead -- more powerful and portable. Anyway, if you're only interested in output, output.ao() using libao should be enough -- and it works great.
which is necessary when you want to do some hardware sound processing without resorting to dirty trick such as chained ices/icecast/player/darkice full of decoding/reencoding, and keep using unix platforms.
What kind of hardware processing are you doing? I'm curious about what cannot be done with software. Or is it that you want a hardware mixing table or something like that?
- A "smart" crossfader able to automatically chose a good crossfading curve between tracks depending of the shape of the ending and starting songs, and also supporting per song intro/outro points (the smart feature is important : we're dealing with thousands of songs and for practical and historical reasons most of them have no entry/outro point, so the fader should try to do a good job in the general case).
Nothing like that in liquidsoap. But I want to stress that programming a new operator isn't so difficult -- you don't even have to know much of OCaml. And it'll get simpler soon, as I should change the internal representation of audio frames to float arrays. Smart crossfading sounds very useful so I bet we can find people to help integrating it. I'd be happy to discuss that further.
- Some ability to kill blank between tracks.
Indeed, we have that.
- The ability to suspend itself and deconnect from an icecast/shoutcast and reconnect on demand. This allows us to take control of the stream for live sessions.
Possible, using ID.start/stop from the telnet interface.
- Periodic metadata changes (instead of just at tracks start) got form an external script.
Not there yet but it's just a matter of adding a simple operator.. funny that I didn't do that already. Before finishing I want to stress that there might be better uses of liquidsoap than just sticking it in place of ices. In particular, turning it on/off when starting a live show is not needed as it can handle the switching by itself, and allows you to define a transition from automatic to live show and back. Cheers. -- David
