On Sat, 18 Apr 2015, Johannes Kroll wrote:
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?
There is now a link at the bottom of the above page. It is my first ever
software release and there are things missing... no configure script
(which would take a lot longer to run than make does in this case) so make
sure you have the include file for libjack installed :)
This (as above) a hack in many ways. The user needs to find out which
event file (device) to point at and put that in the command line. This
will change depending on if the device is plugged before or after boot.
Comments and hints are welcome.
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).
Mostly I think I am ok. I do read/write the same memory locations in both
the call back and main() Most processing is very quick.
--
Len Ovens
www.ovenwerks.net