update update
I got a PoC working where channel 4 on the Arc controls the envelope named pulse4 on voice 1. Passing values to the set_env() function you wrote for every encoder delta works fine. I also answered my own question about the difference between an envelope and an LFO. One has a frequency in cycles per second and the other has a frequency in seconds per cycle. So now when I make the envelope longer the LED ring spins faster because I’m increasing it’s frequency value but passing that same value to the decay time of the envelope. I’ll figure it out later. A good stopping point for new years eve.
Update! I got a spinny ring animation to work on my fork mostly through copy + paste from the Cccccccc library. In that lib there is no engine and the LFOs are interpolated to MIDI 7bit, which we don’t have to do. I don’t yet have code for and hardware connection to the SC engine so there will be no changes in sound. I’m working on that part now.
Regarding ideas of how to interact with the engine, it’s been over a year since I worked on a Norns project so I’m getting back up to speed.
There is the question of what’s the difference between an envelope and an LFO? I’m not sure I know the answer to this but there are distinct UGens in Supercollider for doing “envelope stuff” and “LFO stuff”. My first try is going to stick with EnvGen in the engine. My second idea is to use LFSaw and friends by changing the engine. I’m not sure if that’s more trouble than it’s worth. Thirdly, there’s the polls feature to get information from the engine. This might also be the wrong path, since I think the only control we need is to get the answer to the question “how fast is each LFO cycle” for the ring animation and “set the LFO cycle to this speed” for the knob control. It seems like just passing params through to the engine is The Right Way.