Sounds (or rather looks) sweet!

Just a remark about the "GUI to generate a liq script": I had a
low-cost idea about that, which I may not have advertised enough. The
idea is to use dia. This tool is pretty open: you can add new widgets,
embedded in what they call a "sheet". All this is a matter of a couple
XML files, notably embedding SVG. Then, the user would assemble
liquidsoap widgets, and save. The save format is XML, from which it'll
be easy to generate a script file. So all we have to do is the core of
the tool, only textual, and let all the graphical interaction to dia.

It won't give the best tool possible, but that would be pretty good
for the cost. What would not be perfect ? I don't think that dia can
enforce acyclicity, so we would have to discard diagrams when trying
to convert them to actual liq scripts. Also, I'm not sure that dia has
a notion of different "types" of slots: it might not be able to
differentiate inputs and outputs. Again, that would have to be checked
at script-generation time. These two constraints are not that bad,
since a user would intuitively understand them. Actually, dia sheets
exist without much problems for UML and electronic circuits, which
have the same kind of constraints. They are almost geometrically
enforced by putting the inputs on the left (or top) and outputs on the
right (or bottom) and having wires that can't easily be twisted too
much.

Such a sheet would not allow the graphical composition of most complex
scripts with timeouts, custom transitions and so on. But it would be
perfect for lots of simple and intermediate examples, where the
intuition of a graph is enough. Initial nodes could be playlist,
single, input.http... Simple nodes with 1 input, 1 output would be all
audio filters. More complex things: add would have arbitrarily many
inputs, and one output. For switch and fallback, I think fallback
should have arbitrary arity in input, and the general switch should be
restricted to exactly one input and a scheduling predicate. I didn't
think about random yet.

I only quickly looked at the possibilities, and don't plan to have
much time for pushing the idea soon. If anybody is interested to try,
I'd be delighted.

Cheers,

David

Répondre à