Universal ops

teletype

#1

since it turns out we have a way to address multiple devices from teletype by using the global address 0 i’d like to propose taking advantage of that feature. i suggest adding ops for universal commands that can control multiple modules at once (to distinguish them they can all start with the same character - maybe U for “universal”? i was also considering G for “global” but G is already associated with grid ops).

of course, each follower firmware will need to be updated to support this - i can commit to adding it for WW/ES/MP/orca and possibly ansible. as you can see there are a lot of commands, but not all commands have to be supported, even if something only supports a universal clock and a universal reset that would already be a very useful feature.


the obvious use case for this is using teletype as a meta sequencer - clock and reset multiple modules at once, load presets, control some common parameters.

i would also like to use this feature to add the ability to send and receive sequences/scales. imagine creating a sequence in white whale and then getting it into teletype for further processing and mangling (or the opposite, create it on tt and send it to ww). or using teletype to get a sequence from earthsea and send it to kria!

another useful universal op would be to get a CV or a gate. this (and receiving sequences/scales) is slightly different in that it would still be sent to the global address 0 but will also include a device address, and only one device will respond. this is to cover a scenario where, say, you have a scene that reads CV from ansible levels. now if you want to use cycles instead you have to modify the scene. if you use a universal op instead you say “get CV from ansible #1”, and it will respond based on whatever app is currently running on ansible (whether it’s cycles/levels/mp or kria). this is only possible using the global address.


here is the list of universal ops i thought would be useful. that’s 30 commands, i suggested we reserve 64 for global which leaves us plenty of room to grow.

load preset
save preset
go to next preset
go to prev preset

load pattern
save pattern
go to next pattern
go to prev pattern

set loop start
set loop end
set position

set rate
reset
clock

set direction
start
stop
pause

mute
transpose
receive/send sequence
receive/send scale
set current scale

UCV
UTR
UTR.P

get CV
get TR state


NOTE teletype op
Teletype I2C protocol
#2

would something like “tell Ansible #1 to ignore global clock/reset” be a useful inclusion?


#3

good point, we’d need a way to disable universal ops for selected devices. not sure if that should be an op or some way to set it on the device itself.