indeed Keykit's design philosophy in unbeatable, especially if you use touch
surfaces or tablets. Back to your problem, for such differentiation I would
recommend using AutoHotkey (in Windows XP) where you have much detailed
control about the interaction between a human's hand and pc keyboard or pc
mouse.
Then the only remaining problem to be solved would be how fast it can be
made to transmit command line commands from the external world of Keykit,
like from AutoHotkey, to Keykit which is run in GUI-mode ( starting key.exe
rather than lowkey.exe ).
If you would be satisfied with the possible transmit time optimizations for
your application area/field then you could build your control GUI even
directly in AutoHotkey, meaning externally to Keykit. Using python and QT
might be another option.
Have you any more information about your instruments functionality, will it
be a midi controller only or having also a sequencer with midi generation,
manipulation and recording and of course also control/triggering
capabilities? Circular buttons sounds a little like genoQs Octopus which are
a quite high price you have to pay for a set of LED's and buttons with some
kind of intelligent behaviour behind them.
Keykit is the best tool to add midi intelligence to any hardware midi system
I would say.
Kind regards,
Tony
> My Instrument design calls for a regular array or clusters
> of circular buttons [KEYS] populating a grid. Each KEY
> should be responsive to all the usual mouse events, as well
> as MIDI and script-based events.
> - How to do onMouseOver, onMouseDown, on MouseUp events for
> a circular widget in KeyKIt ?
> - How to make these buttons easy to "pull off" like KeyKit's
> lovely menus ?
> - How to color circlar widgets with OFF, OVER, DOWN, HIT states ?
> - How to display text in labels when mouse moves over/out
> - How to trigger MIDI events when user clicks down adn off?
> etc
>
>
I'm a big fan of Actionscript 3.
> Just looking for some guidleines to get started on this
My recommendation would be to create your interface in Flash, and use a socket (TCP) to connect to keykit to do any MIDI I/O and
realtime scheduling. This leverages your (and Flash's) strength, as well as keykit's, and is much more adaptable in the future. No
need to use HTTP, just keep a TCP socket open (or two sockets, if you want things going in both directions) and have a client always
waiting to receive things, to reduce latency. If you want really-low latency from human input, I recommend a hardware controller,
not a mouse.
If you still want to do keykit widget programming, I can only recommend that you start digging into the code of existing GUI tools,
starting with the simpler ones. There are no circular widgets.
...Tim...
See lib/sock.k - there are several examples there. For listening for
TCP connections, try this - in keykit, execute "test_listen(8888)".
In another (shell or cmd) window, use telnet to connect to it with
"telnet 127.0.0.1 8888". Any lines you then type in the telnet
connection should be seen and printed by the keykit code in
test_listen().
...Tim...