So I've had a literal shower thought with regards to speeding up reading from the TXi...
First a little background, when an op runs on the teletype it gets given access to 3 variables of type:
scene_state_t: where the scripts, patterns, variables, etc are stored
exec_state_t: at the moment only holds the status of
if/elif/else, but will eventually be used for dealing with recursion
command_state_t: contains the value stack
command_state_t only lives for as long as it takes to run a single command (a.k.a line of script), whereas
exec_state_t lives for a single script. (When a command is run from live mode, it will run as though it's a script with one line.)
So we could use
exec_state_t to cache values returned from a TXi, they'd only be cached for as long as the
exec_state_t lasts (i.e. running a script).
Furthermore if we wanted to rewrite things a little, we could return all the
PARAM values from a TXi, i.e. 8 values, any time a single value is requested. We'd have to rewrite all the
SCALE, etc ops to run on the teletype though. This only really works if the overhead to send an I2C message is such that requesting 8 values back isn't that much slower that just getting 1 value.
It's probably a bit much to deal with now, but maybe in a few months we could have a go doing it, or someone could point out the fatal flaw in my idea...