Re: [LAU] $3 MCP MIDI controller

From: Johannes Kroll <j-kroll@email-addr-hidden>
Date: Sat Apr 18 2015 - 18:41:16 EEST

On Fri, 17 Apr 2015 22:19:09 -0700 (PDT)
Len Ovens <len@email-addr-hidden> wrote:

> On Fri, 17 Apr 2015, Johannes Kroll wrote:
>
> > On Wed, 15 Apr 2015 22:10:40 -0700 (PDT)
> > Len Ovens <len@email-addr-hidden> 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.

_______________________________________________
Linux-audio-user mailing list
Linux-audio-user@email-addr-hidden
http://lists.linuxaudio.org/listinfo/linux-audio-user
Received on Sat Apr 18 20:15:02 2015

This archive was generated by hypermail 2.1.8 : Sat Apr 18 2015 - 20:15:02 EEST