Okay! With help from Franco, I got some basic button feedback working: a simple app where I can select a color from a palette, and then when I press the buttons in my main grid, they are lit up in that color. I’m capturing the button presses by tapping into DigitalInputs::CheckIfChanged() and I’m setting the buttons using feedbackHw.SetChangeDigitalFeedback().
I figured I was bypassing the bank system by doing it that way, but decided to experiment a little with banks, to see if I could use it to switch between different button settings. So I went into kilowhat and added a second bank, using two buttons to switch between banks. I noticed on bank 1, my app worked, but on bank 2 it was ignored. But my button settings were not preserved across bank switches (I assume because I was bypassing the banks to set button colors directly).
Then I removed the banks, actually reset to the default configuration in Kilowhat, and now my app doesn’t work at all. In the serial monitor, I can see when I tap buttons just as before, and when I apparently go to set buttons to colors, but nothing actually lights up.
So I don’t know why my code isn’t working any more, and I really don’t understand the bank system.
I guess my questions are:
- Why did my app stop working when I messed with the Kilowhat config & banks?
- What’s the best way for me to set button colors. is SetChangeDigitalFeedback() a bad approach?
- How do banks actually work? Is it a good way to let me switch quickly between diff button settings?
And maybe one more general question: should I build my app by hooking into your existing code? Overall, I just need to be able to:
- Catch button & encoder events
- Set button & encoder colors/values
- Catch and send midi events
- Tap into the timer for internal clock (already experimented with this a little)
Your code is complex enough that it’s not always obvious where best to tap in.