I've been working for the past few months to learn how to write Midi Remote Scripts for Ableton. To make it simple, the Midi Remote Script sits between the DJ controller and Ableton. The Script can watch for changes in the software and notify the controller, or it can watch for incoming messages from the controller and route it to specific places in Ableton.
My idea was to use a Script to watch the color status of clips in Ableton's session view. If the color of a clip changed, the Script would update the controller (which would change it's LED color to match).
Color mapping is useful to me when I'm mixing with ableton, as I like to break my songs into clips (intro, build up, drop, break, second drop, outro) and color code them. Seeing two tracks on my controller this way lets me easily mix an intro with and outro, just based on clip color.
Ok, that was the idea. Turns out Ableton is very closed when it comes to documentation in regards to Python Scripting. They like to write all their scripts in house, so they keep the documentation pretty locked down. Since Ableton compiles all it's scripts (.py files) on start up, you can write your own .py's and stick them in the right directories, and Ableton will try to use them. This is kind of a "throw spaghetti at the wall until something sticks" type of attack, but there is a small community of people doing this, and have worked a lot out actually.
Anyway, after a few months of prototyping and writing simple examples I've finished the script. It works like this: When you add a clip, a routine is attached to watch the clip's color. If you change it, the color code is send via USB to the controller. The controller then looks at which clip's color has changed. It then updates the appropriate LED to reflect the change in Ableton.
I know there are controllers that do this (Ableton Push, Akai APC40 mrk. II, Launchpad Pro), but I want the ability to build custom sized grids for different applications. This prototype proves that capability.