I'm happy to announce the second release of Librekontrol! Librekontrol is a programmable controller editor for GNU/Linux. This is primarily a bugfix release, but a couple new features made their way in.
Please note that this should be considered alpha software. Assume that you might encounter bugs and that the software might fail spectacularly if you try to do something particularly clever with it. It's certainly ready to be tested and played around with, and indeed, you can already start using it regularly for everyday projects. You probably shouldn't depend on it for your big gig at the warehouse rave next weekend, though.
Note that the code also hasn't seen any real optimization effort, so latency will not be ideal if you're using it to configure a device that you will play in real-time.
Of course, all of these problems would make great entry points into helping out with Librekontrol's development. Find a bug, zap it, and share your fix for the greater good!
Please also consider helping out by completing the existing device definitions if you own any of them (all devices from Native Instruments and by contributing new device definitions.
make-finite-midi-control-abs-knob procedure generates a callback
function that helps to make an infinite rotary encoder function as a
finite MIDI control knob. That is, if you have a knob on your device
that can rotate infinitely in either direction, a callback produced by
this procedure will ensure that no matter how much you rotate the
knob, say, right, the value will stop at its maximum. Normally, these
knobs would "loop around" and go from the max value back down to zero
before increasing again.
This is a breaking change! Your config will need to be updated.
Previously, all callback functions that spawn system processes
system-abs-knob) would take a command as a
simple string (e.g.
"echo 'hello'"). For knob-based callback
functions, where this command is passed the knob's value, this was
inflexible. Those callback functions now take an argument
which takes a procedure as its value. The procedure takes a single
argument (the knob's value) and returns a string representing the
system command to call. See the example in
examples/ni-ak1-playerctl.scm for an illustration of how this is
Previously, these procedures required specifying an event ID, which of course isn't necessary for resetting device-wide hooks.
This avoids the possibility where the idle hook is triggered before all of the exit hooks have finished.
This might be helpful for troubleshooting if permissions are not set up properly for Librekontrol.
Some safety nets have been put into place to make sure that controls without associated ALSA Ctls are not manipulated as if they do have Ctls.
Thanks to user fratto, the device definitions (Ctls, input, controls) for the NI Rig Kontrol 3 are now correct and more accurately named.
ALSA Ctl definitions for the NI Rig Kontrol 2 were corrected and some of the inputs have been renamed following the RK3 fixes. However, the labeling of some Ctls / inputs may be incorrect still (e.g. in the RK3, the LED that the Linux kernel driver calls "LED 1" is actually "LED 5" on the device). If you have an RK2 and you can help resolve this once and for all, please get in touch.