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?