MultiFunPlayer is a simple app to synchronize your devices (e.g. OSR or buttplug.io supported devices) with any video using funscripts. Supported video players are DeoVR, MPV, MPC-HC/BE, HereSphere and Whirligig. The player's main feature is the ability to play multiple funscripts at the same time, allowing for greater movement fidelity.
- Support for DeoVR SLR Interactive script streaming (requires SLR subscription)
- Supports DeoVR, MPV, MPC-HC/BE, HereSphere and Whirligig video players
- Internal player to play scripts without video files
- Supports buttplug.io, network TCP/UDP, websockets, namedpipes, serial, file and The Handy outputs
- Supports multiple outputs of the same type working concurrently
- Supports TCode v0.2 and TCode v0.3 devices
- Auto detection and connection to any supported video player and output
- Bind keyboard/mouse/gamepad input to almost any customizable action (150+ available actions)
- Seek and play/pause video from MultiFunPlayer
- Supports multiple concurrent outputs
- Real time script smoothing using pchip or makima interpolation
- Per axis speed limit
- Auto-home when axis is idle for specified time
- Smart limit to limit axis output range or speed based on position of another axis with fully customizable curve
- Supports local, DLNA, web and unc video paths
- Soft start sync feature to prevent unwanted motion
- Script libraries to organize funscripts in different folders and load funscripts not located next to the video file
- Ability to link unscripted axes to scripted axes
- Ability to generate additional motion or fill script gaps using random, script or pattern motion providers
- Customizable color theme
- Multi funscript heatmap with stroke length visualization
- True portable app, no files are created/edited outside of the executable folder
To synchronize with videos, start your desired video player and wait for automatic connection or click on the connect button to connect manually (NOTE: DeoVR, Whirligig and HereSphere require you to enable remote support in their settings). Once connected, the funscripts can be loaded in several ways:
- Manually, by dragging a funscript file from windows explorer and dropping it on the desired axis
File
text box. - Manually, by using the
Script->Load
menu in the axis settings toolbar. - Automatically, based on the currently played video file name if the funscripts are named correctly:
Common
Axis | Description | Valid file names |
---|---|---|
L0 | Up/Down | <video name>.funscript <video name>.stroke.funscript <video name>.L0.funscript |
L1 | Forward/Backward | <video name>.sway.funscript <video name>.L1.funscript |
L2 | Left/Right | <video name>.surge.funscript <video name>.L2.funscript |
R0 | Twist | <video name>.twist.funscript <video name>.R0.funscript |
R1 | Roll | <video name>.roll.funscript <video name>.R1.funscript |
R2 | Pitch | <video name>.pitch.funscript <video name>.R2.funscript |
TCode v0.2
Axis | Description | Valid file names |
---|---|---|
V0 | Vibrate | <video name>.vib.funscript <video name>.V0.funscript |
V1 | Pump | <video name>.lube.funscript <video name>.pump.funscript <video name>.V1.funscript |
L3 | Suction | <video name>.suck.funscript <video name>.valve.funscript <video name>.L3.funscript |
TCode v0.3
Axis | Description | Valid file names |
---|---|---|
V0 | Vibrate | <video name>.vib.funscript <video name>.V0.funscript |
A0 | Valve | <video name>.valve.funscript <video name>.A0.funscript |
A1 | Suction | <video name>.suck.funscript <video name>.A1.funscript |
Names in bold are commonly used used and are preferred
The above file names are matched in all script libraries and in the currently playing video directory.