Hi, I'm glad to see the kind of project you have, and I confirm that this is the kind of stuff liquidsoap was built for. Let me make various comments.
Whilst I understand liquidsoap can handle a sustain stream, for now I wish to leave mpd outputting the stream, mainly as I've got a user friendly interface for the management bod's to modify. [...] My intentions are to add another soundcard to the broadcast stream and give liquidsoap an alsa input for it.
I'm not sure to interprete well this bit: what do you want the soundcard for? If it's for running liquidsoap next to darkice for a while, you shouldn't need two soundcards. So I assumed it's for mpd input. Concerning mpd, going through hardware is a bit of overkill, as I believe there is a client API for that, or (better) high-level outputs like jack. On the other hand, implementing that in liquidsoap requires some extra work... On a side note, our ongoing work on jack is a bit stalled. Regarding alsa I/O in liquidsoap: the current implementation is too naive. When I wrote it I assumed that I could pick the samplerate I wanted, and my soundcard didn't contradict me. In fact, it's not the case, and the code should be updated to cope with format conversions. It's not such a big change but lots of little things take time.. Also, I must admit that even on "nice" soundcards, our success with ALSA was not complete and we experienced troubles sometimes -- especially when doing input and output at the same time. In the end, I'd prefer to get a good jack support, since it's more portable and high-level, but the task is far from being easy.
Dead air detection seems quite straight forward and David B has directed me in ways, the next thing is the news service.
Not much to say here, I think liquidsoap does the job nicely. The only enhancement I can think of would be a more meaningful threshold parameter, probably in dB. Currently there's no real unit and you have to like the default value or tinker blindly.
GUI to alert studio of events
Liquidsoap can call scripts on new tracks and on blanks, but I guess we can't help more. Are you thinking of other kind of events?
The news broadcast is on clockwork, it will come on at a certain time apparently. When not broadcasting the service says something like "*BEEP* *BEEP* this is IRN on Hotbird 7 *BEEP* *BEEP*" and I *think* they even do some extra bullitens and announce it on the stream they provide. So hence it'll be really good to get liquidsoap to be checking the stream at the right time and if the news stream is active (ie no BEEP BEEP) then fade off the studio stream. These intentions have been expressed by the management.
I'm afraid I'll only what I told you on IRC. Liquidsoap has no way of doing beep-beep detection :p If you implement it, or more likely find a cleaner way to know when news are broadcasted, then it'll be easy to have liquidsoap relay the news, since any external script can be used in switch()'s predicates. But getting a perfect synchronization will be difficult (buffers everywhere..). Transitions are no problem.
I am also wondering about replacing darkice initially, I know liquidsoap does everything (and more) that darkice does, however I've yet to be able to know the uptime on our server for the service and was thinking if I should keep darkice for now and provide a fallback on icecast to the original darkice streams.
We're having pretty good results in terms of stability now. If I remember well the only serious known problem has to do with resampling: if you have funny input samplerate our broken resampling code will do non-sense, and funny output samplerate for vorbis output can lead to memory exhaustion... We know how to improve that, but haven't had time to focus on that yet. But even apart from that it's still possible that you encounter minor issues, especially if you use rarely-used features of liquidsoap, so keeping a backup for a while is a good idea, yes. I hope we can eventually come up with nice answers to your problems. Have fun! -- David
