On Fri, 17 Apr 2015 22:19:09 -0700 (PDT)
Len Ovens <len(a)ovenwerks.net> wrote:
On Fri, 17 Apr 2015, Johannes Kroll wrote:
On Wed, 15 Apr 2015 22:10:40 -0700 (PDT)
Len Ovens <len(a)ovenwerks.net> wrote:
Take a second keyboard from the dollar store
(mine is USB) add a driver
and it can control the DAW.
http://www.ovenwerks.net/hardware/index.html
I get 5 channel strips and enough keys left to emulate al the rest of the
mackie controller keys with one or two left over.
That's a nice hack. Is the code available somewhere?
It will be. I have finally gotten in contact with the original author of
actkbd. Because he is not familiar with jack/midi he would prefer not to
wrap this up into his program but have me fork my own. (there are some
parts he would like to cherry pick though) So I have to do some name
changes and clean some things up. midikbd will be the new name, but all
the actkbd commands will still work too. So it would still be possible to
have a keypress run a script if desired. I do need to redo the
documentation as well. I also fear that my crude attempts at realtimeness
are less than they should be. I have not seen any xruns show up, but I
don't have any memlocks for the variables I use for the faders, cc and
LEDs. If you think about it, this is not a lot of memory, 3 LEDs, 16
Faders/pitchbend max, and 127 cc max though I think I allow for 50 because
two keys are used for each cc and the keyboard has just over 100 keys :)
AFAIK, Jack automatically locks the memory of Jack clients, so you
don't need to worry about that. As for realtimeness, you shouldn't do
anything in the jack callbacks that blocks or takes an unknown/large
amount of time. So, no heap memory allocations
(new/delete/malloc/free), no printf(), no reading or writing to files
or sockets. If you need to do blocking stuff, you can write messages to
a jack_ringbuffer, then read and process the messages from another
thread (probably your main thread).
(You can use printf() in the callbacks for debugging. This will
generate underruns sooner or later, so you should disable or remove
any printf() calls when you're finished with debugging.)
However, as soon as I at least do the name change, I
will release the src.
Cool.
I would also like to be able to send something to
Ardour on hookup that
says "init me". Ardour already does this if I have hooked up the
controller and then restart Ardour. But if I start the controller after Ardour is
running, I have to do a bankup/down to load the current fader/pan values.
I have also been trying to make something that will show what an MCP would
show on it's display... however, it seems sysex events are not available
via jack_midi_event_get, even the 15byte ones Ardour uses to write display
info. Either I am missing something or I need to parse the buffer on my
own. This whole thing is a learning thing for me... one step at a time.
I don't use Ardour much and haven't used Sysex with Jack, so I don't
know.