About
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.
The project is hosted on github so any issues/feature requests should preferably be posted there, but you can of course always do that here too. Under the “actions” tab you can find development/beta builds with not yet released features.
If you are interested you can also find my other OSR/VaM/TCode projects on my github profile.
If you like what I’m doing, please consider supporting me on my Patreon
Features
- Supports DeoVR, MPV, MPC-HC/BE, HereSphere and Whirligig video players
- Supports buttplug.io, network TCP/UDP, namedpipes and serial output
- 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 feature which when video is paused moves axis to its default value after some delay
- 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 motion for unscripted axes with motion providers
- Smart limit on R1 (roll) and R2 (pitch) axes to limit values based on L0 (stroke) height
- Multi funscript heatmap with stroke length visualization
- True portable app, no files are created/edited outside of the executable folder
Download
How To
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
Load script
button 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.