I've been playing around with the Ableton 9 Live API, javascript, Python, and M4L. I've been trying to create a step sequencer for an Akai MPD226 controller. I've created the necessary functionality to write notes to the clip and get notes from the clip using the Live API with javascript in a Maxpatch, but there is a bug. When the stop transport control is pressed in Ableton, it will detect hanging notes and send midi note off messages for each hanging note. I've wrote a conditional to detect whether or not the song is playing, but it is still deleting the first note if it is on.
A more elegant solution seems to be to not use midiin to set notes, but instead grab the values from the controller directly. I've noticed that I am able to observe values from the encoders and sliders using live.observer, but I'm not able to observe values from the pads themselves. Digging into the Python Live Remote Scripts, I've noticed that the sliders seem to be built from the encoders. In EncoderElement.py under the _Framework folder, something that caught my attention is @subject_slot('normalized_value'). I've never seen @ used in Python, but in JavaFX, it's used for bindings.
Does anyone know if this is used as a changelistener in Live? Has anyone done something similar to this before?