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

Autohome only works with fixed update, but I have to use polled update for my hismith to work. If I use fixed update it only performs the fastest thrusts in the script but when it’s paused, closed, or I seek to another point it actually stops moving. with polled update it will swap between the speed of each point but when the script stops playing then it continues at the last speed it was told to do by the script. home is set to 0, L0 default setting is 0. I’ve tried enabling and disabling all the sync buttons and auto-home toggles individually and editing the timings. Nothing has worked.

Nvm I figured it out, the free version is bugged. You honestly should push that fix to the public build before someone runs a script without testing it first and ends up injured because MFP kept telling the machine to run at max speed after the user paused or closed the script or video when the script was at max speed (or any speed tbh the danger is situational). It definitely isn’t right to fix a dangerous bug you know of and then put the fix behind a paywall leaving said dangerous bug in the public build.

It’s not bugged, auto-home with PolledUpdate was implemented in v1.32.0.
The only devices that this affects are vibrators and oscillating machines.
You could try using FixedUpdate and just lowering the update rate to minimum.

It is a bug, you even just described it as such

If you didn’t intend for it to be used on those machines then that’s a bug. If you intended it to be used on those machines but it disables another feature then that’s a bug. It’s not an issue of two features that inherently can’t be used together like different graphic techniques that control the same thing, you fixed the bug so they can be used together.

But what you think it is or is’t doesn’t matter, what matters is you’re pay walling a fix to a known flaw that can cause injury. The myriad of added features you’ve pay walled, right on man if you’re good at something charge for it!

You could remove the ability to use polled updates on those machines so you can then call polled updates on those machines a feature behind a paywall, or fix the flaw that causes polled updates to not work with auto-home on specific devices. Heck you could even, at the very least, add a popup warning when someone changes one of those machines from fixed to polled that says “polled updates disables the auto-home safety feature”.

Bottom line is the issue isn’t tripping into a cushion of flowers as you frolic through the daisy fields. It’s oh no, my hole has a new hole, now I’m frolicking to the ER, all the while you have multiple options to help prevent that and choosing not to. MFP has a lot of safety features and that’s pretty cool, but if you can’t use em it defeats the purpose and that’s not cool.

So I first encountered this specific issue here and figured it was a quirk of that specific integration, but I recently encountered it outside that as well (loaded a script I forgot was multi-axis and thought I had a busted servo at first :P) so figured it might be more generally MFP-related.

Basically, whenever an axis isn’t loaded/running (say, going from a multi-axis script to a single axis that only uses L0), the unloaded axes (L1, L2, etc.) instead of homing to zero/center just keep whatever position they happened to be in at the time, until I close out MFP (or maybe re-loading another multi-axis script would work? I don’t believe I’ve tried that yet, just realized it’s probably the most obvious workaround). I don’t know if this is some setting I have disabled/altered without realizing or something else going on.

This also is using that 1.3.2 version of MFP, so if it’s already fixed then my apologies. Haven’t had the time to load a newer version yet to see if that resolves it.

It’s most likely your settings, check your auto-home settings. Do you use PolledUpdate or FixedUpdate?

FixedUpdate, here’s my settings. Made sure everything was the same across all the axes, did find a few minor discrepancies but nothing that should’ve affected any auto-homing or lack thereof I’d think? Hoping it is just something here I haven’t spotted, would be nice if the problem was me being blind.

Target auto-home value should be 50% for L0/L1/L2/R0/R1/R2 for it to center.
If you expand “Axis Values” section you can see it auto-home when you pause the video (after 5 seconds).

Well, at least according to the axis values that appears to have worked - or at least done something if nothing else. Must’ve adjusted the target value at some point and forgotten about it, or saw it was at 100% from another adjustment and mistakenly assumed that was the proper value. Glad it was likely my issue after all. I’ll test it out at some point and update this post hopefully with good news.

1 Like

We have updated heatmaps, now they can merge multiaxis scripts
@Yoooi please review (and maybe add it to OP)

https://discuss.eroscripts.com/my/preferences/account

I dont think it should not be enabled by default, no other funscripts require you to rename the video file to match the funscript name, its always the other way around. There should also probably be some help section when the funscripts are merged.
I also don’t know about the .max, its not very descriptive. Since you suggest renaming the video I don’t know if you want .max to be added to script players. If this should be added to script players then I think there could have been a discussion beforehand on the extension name and if the multi-axis scripts should have higher/lower priority than simple .funscript or if this is even necessary as merging to .funscript is the simplest solution.

:thinking: maybe I’ll change that in the next version
(currently merging is OFF and .max is ON by default)

This is exact reason I recommend renaming - it doesn’t need discussion and backwards-compatible.
(personally I’ve started renaming videos to see if they are multi-axis in video players like DeoVR that have no idea if the script even exists)


I think it’s time to ask @Khrull to implement single-file script support in XTPlayer and make a proper discussion on what to do next

I think enabling merging by default is fine if you add some sort of help section/popup.
People won’t know that this merging is even a thing as its in account settings, so if you want this format to popularize then you have to merge by default.

But imo .max should not be enabled by default as it requires additional steps for users or it requires updates to script players. Just merging to .funscript is the most compatible solution.

1 Like

This is exactly why .max is enabled by default - because merging is not :joy:

It’s named after @Tempest :rofl: (MAx stands for multi-axis)
I’ve found all other variants either less descriptive or too specific (or too long)

感谢你的回复,现在新的问题是如何同时播放4个脚本。我主要的问题是如何确保其他轴链接到正确的脚本

You have old version, update to latest github or patreon version and there will be a “load additional scrips” button above the playlist, after enabling that the scripts will be loaded for all axes based on the file name.

MultiFunPlayer v1.33.7:

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

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

Hi, I’m using the patreon version 1.33.6 with Stash, and it definitely works for the first video I choose on stash, however, when I click off and choose a different video, sometimes COM3 disconnects and I need to plug it in again, and the whole web + mfp freezes and a restart is required. This is the message I get after closing the app, and not replugging in the USBC.

Thanks!

Error when connecting to Serial:

System.UnauthorizedAccessException: Access to the path ‘COM3’ is denied.
at System.IO.Ports.SerialStream..ctor(String portName, Int32 baudRate, Parity parity, Int32 dataBits, StopBits stopBits, Int32 readTimeout, Int32 writeTimeout, Handshake handshake, Boolean dtrEnable, Boolean rtsEnable, Boolean discardNull, Byte parityReplace)
at System.IO.Ports.SerialPort.Open()
at MultiFunPlayer.OutputTarget.ViewModels.SerialOutputTarget.Run(ConnectionType connectionType, CancellationToken token)

This error doesn’t occur on XTPlayer, I can switch many videos without the COM3 being denied / disconnected.

I could not reproduce this. Can you change log level to “trace” via application settings at the top of the window, then reproduce USB issue with MFP freezing, then DM me the latest log file. Remember to change the log level back to “info”.

Does this issue happen when you use a normal video player?
Do you have anything else running that might connect to the serial port? Maybe stash or stash plugin is trying to connect to the same serial port?

1 Like

Hey. does anyone know how to adjust the script timing / latency in multifunplayer? It sometimes is a bit out of sync when using a vr headset with the devor app.

1 Like