MultiFunPlayer v1.33.10 - Multi-axis funscript player with SLR & FapTap support

MultiFunPlayer v1.33.9:

Download: timed patreon only exclusive
Patreon build: https://www.patreon.com/posts/122741611

1.33.9

Additional patreon only changelog:

  • Convert SLR support from Haptics Connect to a script repository


    This is initial implementation so there are some drawbacks compared to Haptics Connect:

    • It currently does not support script switching, the repository only selects the latest user made script and falls back to latest ai script if it cannot find one. The script switching will come in later MFP versions but it requires big internal changes.
    • Heatmap in MFP will load in chunks, but there is a full one visible in DeoVR.
    • Only stroke axis works for multi-axis scripts (SLR limitation)
    • DeoVR haptics toggle gestures don’t work since they require Haptics Connect
    • Scripts stored on VR headset will not be detected by MFP since they require Haptics Connect

    If you had problems with SLR scripts not working on Quest due to firewall/VPN when using the old way then this fixes all of those issues.

Changelog:

  • Block plugins from accessing secure script resources
  • Add ability to toggle InPrivate mode in Web source
  • Add ability to export/import (copy/paste) shortcuts and shortcut actions (#195)
  • Add support for multi-axis funscript format
  • Support script scale when using PolledUpdate (#215)
  • Allow triggering multi key gestures without having to release all keys
  • Fix sync on script resource changed setting not being respected in some cases
  • Fix crash when invoking motion provider actions with axis set to null
  • Fix DeoVR and HereSphere MediaResetMessage spam when no video is loaded
  • Fix possible crash when opening error dialog from snackbar
  • Fix speed limit when using PolledUpdate

1.33.8

  • Fix possible crash when using LinkAxis::Set actions
  • Fix LinkAxis::Set action allowing circular links
  • Fix possible crash when window is restored after logging in into windows
  • Add ScriptChangingMessage to allow plugins to modify scripts before they are applied
  • Use PasswordBox for all api key fields

1.33.7

  • Fix possible deadlock when using Web media source
  • Fix possible duplicate items in Serial/Plex/Emby/Jellyfin selection box

1.33.6

  • Add ability to toggle script heat normalization
    • In previous versions script heat was always normalized, meaning the fastest section of the script was always red no matter how fast that section is, this version disables normalization by default and adds ability to enable/disable it. With normalization disabled script sections are only marked red if they are at or above 500 units/s.
  • Fix MPC source not responding correctly to play state changes causing no motion from scripts
  • Fix MPC source not resetting state when media file is closed
  • Fix XBVR/Stash not working in some cases due to endpoint check not resolving host names
  • Fix possible deadlock by compiling plugins only after the window is loaded
  • Fix missing maximize button in Web window
  • Fix main window padding when maximized
  • Limit number of heatmap preview updates caused by DynamicKeyframeCollection

1.33.5

  • Fix possible crash when using null to target all axes
  • Fix duplicate axis clear/reload actions
  • Fix Script::SkipGap action ignoring target axis
  • Fix Axis::Script::Reload and Axis::LinkAxis::Set actions not blocking until script reload is finished
  • Fire PostScriptSearchMessage before applying the scripts to allow plugins to modify the result

1.33.4

  • Support script invert and media playback speed when using PolledUpdate
  • Add ability to disable assigned shortcut actions without having to remove them
  • Add ability to search for local scripts from plugins
  • Add ability to load scripts from shortcuts actions
  • Improve randomness of random motion generation
  • Improve performance of heatmap generation
  • Change default Serial and UDP output settings to improve smoothness by adding some “additional elapsed time”
  • Fallback to default device when selected device has no axes
  • Remove CreateView from plugins and only load view from .xaml files
  • Fix Buttplug output PolledUpdate ignoring axis settings Enabled state
  • Fix broken interpolation preview
  • Fix exception when trying to schedule shortcut actions after disposing
  • Fix crash when disposing a plugin with registered actions
  • Fix crash when plugin throws exception during initializing or disposing
  • Fix crash when selected device is not found
  • Fix Axis::InvertValue actions migration
  • Fix cloned items in UI when using “move up”/“move down” buttons
  • Fix ability to set device axis name longer than 2 characters

1.33.3

  • Fix TCode commands sent without new line when using additional elapsed time
  • Disable Control-flow Enforcement Technology (CET) Shadow Stack, it was enabled by default in .net 9 but causes crashes on some systems

1.33.2

Additional patreon only changelog:

  • Fix FapTap repository not loading scripts for some videos

Changelog:

  • Add ability to stretch TCode move duration, can help with micro stutters caused by jitter
  • Add RawInput/XInput logging toggles
  • Add draggable separator between assigned actions and action search
  • Add ability to invoke shortcuts from plugins
  • Allow script file drag-drop on axis tabs
  • Allow drag-dropping multiple script files
  • Fix script out of sync when using PotPlayer
  • Fix PotPlayer media path containing garbage data in some cases

1.33.1

  • Improve Web window UI
  • Add support for F11 and video fullscreen in Web window
  • Close Web window if initialization fails
  • Show WebView2 runtime download dialog if it’s not installed
  • Allow changing playback speed of Web window player from MFP
  • Fix instant device movement due to invalid PolledUpdate events
  • Fix Web source start page not allowing urls with custom ports
  • Fix crash when calculating heatmap with negative keyframe positions
  • Fix crash when receiving messages in UDP output after disposing
  • Add FixedUpdate and PolledUpdate helpers for plugins
  • Add dynamic KeyframeCollection which allows live streaming of keyframes

1.33.0

Additional patreon only changelog:

  • Add FapTap script repository - works with Web media source
  • Fix scripts stored on VR headset not loading via SLR interactive api
  • Fix SLR login code not opening browser

Changelog:

  • Add Web media source - opens a custom Edge browser which sends playback information to MFP from a video element on the page
  • Add option to split axes in heatmap preview (#198)
  • Add ability to configure main thread update rate (#176) - can be used to lower CPU usage
  • Add support for reading and writing PotPlayer playback speed - requires 2501xx beta or later
  • Make looping optional in script motion provider
  • Aggregate plugin file watcher events and queue compile only once
  • Optimize axis state locking
  • Fix unable to receive data from auto-started PotPlayer
  • Fix OFS source PathAndQuery not set after changing ip or port (#203)
  • Fix first plugin #r reference not found if source file contains BOM

If you like what I’m doing, please consider supporting me on Patreon
https://www.patreon.com/yoooi