Nick,
Nick wrote:
> I'd rather spend time writing the console than dealing with learning a new
> language. Especially stuff like writing code that draws buttons and GUI
> elements, if I could just use HTML/CSS to do it faster.
What kind of precision and/or repeatability do you want your console to have?
What kind of framerate would you like to achieve for something like a fade?
How would you like to implement frame calculation/rendering?
> It would be cool if it could be done in javascript, but I don't know how
> to make MIDI input work through a browser, and how to make it zero latency
> when you hit the "go" button.
Nothing has zero latency, but latency, and jitter in the latency, will be
(visibly) awful if rendering and/or DMX output runs on a general purpose
kernel.
Bare-metal (so no kernel at all) or a realtime kernel are some
possibilities to get the "right" result.
> Does anyone know the typical response time (in ms) of a traditional
> console outputting DMX directly?
I'd expect single-digit ms at most, which isn't (reliably+repeatably)
achievable without dedicated processing hardware.
> I would need to do some bench-marking and see if there is a preceptable
> difference with a round trip application.
If you render say a fade in a browser the result will highly like look
awful right away. If you render on the webserver using say PHP or Node
then there will not neccessarily be immediately visible problems, but
as you increase load on that webserver (more complex rendering, more
network traffic) jitter is highly likely to become a problem.
> Building on a webserver could create some interesting options if the
> hardware issues worked.
You've identified the major problem already - and it's not very easy to
overcome.
If you want to create a smooth fade then you need to render frames
without jitter, and if you drive all 512 channels in a universe you
can achieve at most a 44 Hz framerate, meaning 22 ms per frame.
For a general purpose kernel (like Linux) it is already challenging
to achieve jitter that's insignificant given that requirement for 22 ms
frame updates.
In-kernel I'd say it's fairly doable.
In a minimal userland process it's already uncertain.
Adding massively thick web technology layers on top of that doesn't help. :\
Kind regards
//Peter