Hey Jon, this is probably a bit involved for your purposes, but recently I tried to do same thing (I think): use M4L to control the bank selection in the 'Device Control' section of the APC. So maybe it can be useful if I describe what I came up with, the device is on maxforlive.com,
http://www.maxforlive.com/library/devic ... navigation.
There were a few obstacles: First, the APC40 Mk.II includes an interface for easily 'grabbing' 'controls' via m4l, but the Mk.1 (which is the model I have) doesn't. You can easily create this interface by modifying the python script, but I doubt this will ever be included in the official script. With this m4l interface in place, you can interact with the APC similarly to how they do in this tutorial:
https://cycling74.com/wiki/index.php?ti ... g_Oct13_01. My version of the APC script that includes the m4l interface is here:
https://github.com/martinpechmann/APC40-grab-release.
Second, for some reason the functions that would allow you to interface with the parameter banks of the 'device control' section aren't available through the LOM. Again, this is fixed very easily through modifying the python script. So you could use the script from my github above, which adds three functions to the 'Device' component: number_of_parameter_banks, get_bank_index and select_bank_index (this takes as parameter the bank number to select).
Third, you mentioned having your creations be compatible with different APC models. I also tried to make my 'APC Device Navigation' utility compatible with both the APC Mk.1 and Mk.II and possibly other scripts. First I tried to hard-code the component paths, i.e. use 'path foobar components 80' and '... components 99' conditionally but a better way is to use some abstractions that are included with Max: M4L.api.SelectControlSurface, M4L.api.GetComponentPathByName and M4L.api.GetControlPathByName. However,
even the component and control NAMES differ between the Mk.1 and Mk.II models, some components aren't given a name but they should have one, etc. This, again, you can easily fix in the python scripts and I have done this for my device (but it would be much simpler if you could have consistent naming for all the APCs' components and controls).
So I would really recommend checking out the tutorial on the Cycling'74 wiki. One tool that I found very useful that you probably also know already is the LOM navigator (
http://www.maxforlive.com/library/device.php?id=423, there is also the 'Live api explorer':
http://www.maxforlive.com/library/device.php?id=331.)
Maybe if you look at my device this can also clear some things up for how to interact with the APC40, I like to think I have found a nice and clean way to do this, but I haven't documented the code. One problem with this 'custom script approach' is of course that you might have to update your version of these scripts from time to time and any users you might want to share them with would have to install and reinstall them whenever they update their Live installation.
Hope this helps a bit,
Martin