crow already works well as a follower, Teletype just needs the ops added. The proposed set of TT ops:
CROW.OUT channel level
CROW.SLEW channel time
CROW.CALL1 arg1
CROW.CALL2 arg1 arg2
CROW.CALL3 arg1 arg2 arg3
CROW.CALL4 arg1 arg2 arg3 arg4
val <- CROW.QUERY0
val <- CROW.QUERY1 arg1
val <- CROW.QUERY2 arg1 arg2
val <- CROW.QUERY3 arg1 arg2 arg3
The .OUT and .SLEW ops are intended to echo the on-board TT output syntax for ease of integration. It would be relatively easy to add the .TR style accessors too if that’s desired. These are handled behind-the-scenes, so you don’t have to write any lua to have them just work.
The .CALL and .QUERY are intended to be backed by a lua event handler that allows you to do fancy things. A very basic examples would use crow to store a big array:
CROW.CALL2 index value // set index to value
value <- CROW.QUERY1 index // retrieve value at index
Getting feedback from TT users would be great. If something like the above is a mainstream usecase, it could be simplified to just CROW.VAR which set an index to a value, or take an index and return a value. Making that work natively is easy, I just don’t want to bloat either platform with un(der)used functionality.
If you’d like to help add the Teletype firmware side of these functions that’d be highly appreciated - please see this github issue. If you’d like to discuss the crow side’s syntax, see this PR. The lua syntax, and TT op list are still open for discussion here.