Wow, one of those super weeks you get every now and then, mostly by luck
Pleased to announce a working prototype -- maps are hardwired in code right now, so next step is to read/write map file, then we can put out an alpha.
A billion details yet to solve, but thought I'd throw out some terminology and explain basic architecture so that you good folks can find holes in the thinking as early and as often as possible.
Seriously, please make sure to point out any design errors/omissions you see, let's get this thing as "right" as possible from the git go, it's way easier to solve problems earlier in the cycle !
OK, here's the basic architecture from the "Russian Dolls" code viewpoint:
Control Surface
Contains Components (e.g. Mute switch, Fader, etc.)
You can name a Component anything you like.
Component tells Reaper to perform an Action (more general than Reaper Actions)
Component can receive feedback from Reaper
Arbitrary Surface Components can be gathered together and treated as a Channel
So we have:
Control Surface
--Components
--Channels
----Components
Now on the Reaper side we have the functionality that can be controlled by the surfaces:
Reaper itself has Actions -- global things like Transport
Reaper Tracks -- Actions are things like Fader, Mute, etc.
Actions -- not Reaper Actions, but rather arbitrary Actions than can be performed like "Adjust Fader", "Toggle Mute", etc.
You can name an Action anything you like.
So we have:
Reaper
--Actions
--Track
----Actions
with Control Surface:
Control Surface
--Components
--Channels
----Components
Components and Reaper Actions are linked by names you define, name a Component and Action the same and they're linked, it's that simple.
The only caveat is that names must be unique in a given map file.
I'm sure there be dragons somewhere, but the Mackie basics, Channels, Transport, and Bank are working right now, along with this bonus -- Pushing top switch on rotary encoder switches between Pan and Width.
It's all described with just map entries that are saved in a file that you can customize
Really, really, need your input -- now's the time !!
What do you think ?
What's wrong ?
What could be better ?