I made two objects for integrating Axoloti and the Behringer BCF2000 controller.
The BCF has flying faders and illuminated knobs and buttons that you can control with MIDI parameter feedback. Basically that just means sending the same CC that's assigned to a control back to it. If your fader sends CC #20, send CC #20 back to it and it jumps to the value you sent. You can control the LEDs in the buttons and around the encoders in the same way. I think a lot of controllers do this now but I only have the BCF.
There are two objects:
1) MIDI radio buttons
This object has four attributes. You select a MIDI channel and an output port for providing feedback (this is USB Host port 1 if you connect via USB). You then select a minimum and maximum MIDI CC number. The idea is that you assign a group of buttons to consecutive CCs, so four buttons will be e.g. 30, 31, 32, 33. The object keeps track of which one was last pressed, and outputs the number relative to zero - so if you're using CCs 30-33 and the last one pressed was 32, you get a 2 at the output.
The select input, when low, disables writing to the internal register for this particular instance. However, the most recently stored value is always present at the output. A rising edge on the select input outputs a 0 for the unselected CCs and 127 for the selected one, allowing you to restore the state saved in this instance.
By decoding the output of one set of buttons set to one range of controllers and using it to select one of a number of other instances set to the another range of controllers, you can get something like bank/page switching:
The buttons that send CC 30-33 select four "pages" which store the selections made with the buttons that send CC 34-37.
2) Octal CC register
This stores incoming CC values for eight consecutive CCs starting from the one set by the attribute 'min'.
Like the other object, values are only written when the select input is high, and a rising edge restores the state, allowing you to make multiple banks of physical controls. This works with faders, button LEDs, and the LED rings around the encoders on the BCF. Just programme the controller to send eight consecutive CCs.
Again, the latched values are always present on the output, the select input only controls which instance to write to when CCs in the right range come in.
I'm going to try to make a few actual things with these to see if more/less features are needed, and then add them to the library with Git and that. Comments are welcome in this thread.
midi_radio_buttons.axo (2.8 KB)
octal_cc_register.axo (3.1 KB)