HELLO EVERYONE
First-time poster here, so please be gentle ![]()
I built this little tool purely for fun and figured the community
might enjoy it too, so I’m sharing it as-is - no commercial intent,
no Patreon, just a hobby project. I’ve been daily-driving it on my
own setup for a while and everything works on my end (SR6 over
serial + FunscriptSimulator3D for visual check), but every rig is
different, so feedback, bug reports and suggestions are very
welcome. If you find it useful, that already makes my day; if you
have ideas to make it better, even better.
WHAT IS IT
A tiny Windows tool (14 MB single-file exe, no install) that drives
SR6 / TCode hardware as if it were an OFS client: ships with 53
built-in action loops, and can also play any .funscript multi-axis
script file (stroke / pitch / roll / twist all supported).
WHY I MADE IT
OFS is slow to start and needs a video on the timeline. When you
just want the machine to “move on its own”, or quickly compare
different rhythms, that workflow is clunky. This tool bypasses OFS
entirely: it pretends to BE an OFS server, feeding action loops to
FunscriptSimulator3D / MultiFunPlayer, while simultaneously pushing
TCode commands over serial to SR6 hardware.
FEATURES
-
53 built-in presets, covering:
- Core rhythms: edging / tease / grind / pound / jackhammer /
shallow_quick - Classic Ayva moves (down_forward / back_thrust / swirl family)
- 5 highlights extracted from “Flim13 - My Friend’s Mom 3”:
flim13_fast_full rapid full-amplitude strokes
flim13_hard_pound hard pounding beat (amp ~ 170)
flim13_groove_mid mid-tempo groove
flim13_deep_slow slow deep grinding (period ~ 780 ms)
flim13_shallow_quick shallow quick teasing
- Core rhythms: edging / tease / grind / pound / jackhammer /
-
Drag-and-drop any .funscript onto the exe to play it. Companion
files (.pitch / .roll / .twist) are auto-merged. -
Dual output:
- WebSocket (ws://127.0.0.1:8080/ofs) for FunscriptSimulator3D
or MultiFunPlayer 3D visualisation - Serial TCode for the actual SR6 hardware
- WebSocket (ws://127.0.0.1:8080/ofs) for FunscriptSimulator3D
-
100 Hz output, cosine-eased interpolation, low-pass speed
smoothing, fade-in transition between presets - no jitter, no
hard snaps when switching. -
Per-axis inversion flags (pitch is inverted by default; flip in
source if your sim shows the wrong direction).
HOTKEYS
Up / Down Speed control (0.1x - 5.0x)
Left / Right Switch to previous / next action group
Drag-drop Launch in script mode with the dropped funscript(s)
HOW TO USE
- Double-click sr6_controller.exe.
It auto-detects the first serial port and starts the WebSocket
server on port 8080. - Open FunscriptSimulator3D or MultiFunPlayer and connect to
ws://127.0.0.1:8080/ofs (subprotocol: ofs-api.json). - Use the arrow keys to pick a rhythm and tune the speed.
- To play your own funscript, just drop the file(s) onto the exe.
HARDWARE
Any TCode-compatible device (SR6 / OSR2 / etc). Serial port is
auto-detected (first available); baud rate 115200.
NOTES
- Global hotkeys rely on the
keyboardlibrary and may need admin
rights on Windows. - The default axis_map routes pitch/roll to L1/L2 (matching the
author’s existing wiring). If your firmware uses the standard
R1/R2, edit axis_map in main.py.