I don’t understand what @Tempest wrote in GitHub - multiaxis/TCode-Specification: the TCode specification & conventions (I do but I don’t want to), so here’s my BNF
# TCode v0.3
# commands are executed when newline is sent
<execute_command> ::= <command> "\n" | <command> " " <execute_command>
<command> ::= <basic_command> | <interval_command> | <speed_command>
| <device_command> | <save_command> | <custom_command>
# Move to provided position on default speed
<basic_command> ::= <axis> <pos:mantissa>
# Linear, Rotation, Vibration, Auxillary
<axis> ::= "L" <digit> | "R" <digit> | "V" <digit> | "A" <digit>
# 1234 in 0.1234 - as values are always 0.0000-0.9999
# Digits after 4th are ignored
<mantissa> ::= <digit>+
# Move to provided position over provided milliseconds
<interval_command> ::= <basic_command> "I" <time:integer>
# Move to provided position with provided speed where 100 is 1/second
<speed_command> ::= <basic_command> "S" <speed:integer>
# D0 - device/firmvare info
# D1 - <tcode_version_response>
# D2 - <load_response> for each axis
# DSTOP - stop moving
<device_command> ::= "D" <digit> | "DSTOP"
# store user preferences
# Not used internally, it's intended for reading with D2
<save_command> ::= "$" <axis> "-" <min:mantissa> "-" <max:mantissa>
# custom commands outside this spec
<custom_command> ::= "#" <no_space_string> <custom_value>?
<custom_value> ::= "" | ":" <no_space_string> | ":\"" <no_quote_string> "\""
##################################################
<feedback_response> ::= "#" <tag> ":" <digit>+ "\n"
<tcode_version_response> ::= "TCode v0.3"
<load_response> ::= <axis> "-" <min:mantissa> "-" <max:mantissa> "\n"
Also I’m thinking on making a fork with Beziers for myself (not like I’ll use it but well)
Also we should make a
.funscript
JSONSchema spec as there is none