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

Lol, this is not about disliking their work, it’s about (lack of) principles and transparency. But surely someone who throws around schitzo namecalling like yourself would have realized that because they had bothered to read what was written. Right? :slight_smile:

While it’s fine to criticize things you disagree with here, you have been repeatedly hostile in your approach. I’m giving you the chance to course correct now before punitive actions will take place.

edit: My post wasn’t very clear about the people who I’m referring so to make it clear this wasn’t one sided.


This is not acceptable on this forum. For more reasons than using schizophrenia as a derogatory term.


This is not conducive criticism. It’s charged with malice and doesn’t aim to speak out about the practice but directly push to shame.


Here is an example of what criticism should look like

9 Likes

Well, i wish being correct and chill somehow helps
But it’s not, i’m asking that question in this topic for about a year, and never got clear answer from dev, sadly.
So i understand someone less chill can get mad about it, exactly what happened here.

Only author answers is something like “can post free, can not post it, idk, whatever happens - happens”
No straight information provided in last year and half

2 Likes

MultiFunPlayer-1.32.1 incorrect operation of the com port

You need to be more specific. If you get an error then post the full error message.

errors are not recorded in the log, but the drives do not respond or react very little compared to the script.

well then its something to do with how you configured it, expand “axis values” section and check if the values there correspond to device movement, check if sync is maybe causing this, the sync progress bar should be grey, not red (its the button to the right of play/pause button in MFP)

everything is fine there and previously everything worked in 1.31.3
https://disk.yandex.ru/i/UjhqLn3inJjkUg

Assuming that the “axis values” move fully between left and right, and COM27 is actually your device, then I would need to see trace logs.

Open application settings at the top of the window, change log level to Trace, restart MFP, connect to MPC and Serial, play a video with a script, reproduce low movement, change log level back to Info and DM me latest log file.

If “axis values” are not moving fully then click third arrow button on the right and make sure that script scale is at 100%.

log problem
log worker

I could not reproduce your issue, I took your config and connected to MPC-HC and Serial and it all works fine.

In the problem log you are changing video position in MPC-HC every 2 seconds so the sync feature is preventing instant movement:

19:20:04.9495 Detected seek: -1078,5508928236613
19:20:06.7451 Detected seek: -1125,1732087958271
19:20:08.7460 Detected seek: 531,0055970699023
19:20:10.5435 Detected seek: 383,78435913721114

Sync duration is set to 4 seconds so you never allowed the device to go up to full speed.

Hi, I’m using v1.33.10 version and a few videos in slr won’t load script in mfp even though the script exists. Why is that?

https://www.patreon.com/posts/slr-support-in-138375626

I’ve encountered an issues with v1.34.1 where it just pretty much crashes sometimes when trying to load scripts there are times where it doesn’t load the script at all or if it does it takes noticeable amount of time to load in.

I tried everything I could think of to try to make the new system crash but I never managed to. I guess there must be some specific condition that triggers it.

Can you change log level to trace in application settings at the top of the window, then use MFP until the crash, then change log level back to Info and DM me the latest log file.
I’ll try to fix the crash first then I’ll check the scripts not loading or loading slow.

My problem is similar. Program is crashing when changing the video/script on SLR.
Not loading the script was just one or two times the problem, but crashing is happening a lot. I tried logging twice and this was always the end of the log file.

2026-03-25 23:56:05.3992|DEBUG|MultiFunPlayer.UI.Controls.ViewModels.ScriptViewModel|Invalidating media state
2026-03-25 23:56:05.3992|DEBUG|MultiFunPlayer.UI.Controls.ViewModels.ScriptViewModel|Invalidating axes [Axes: L0, L1, L2, R0, R1, R2]
2026-03-25 23:56:05.3992|DEBUG|MultiFunPlayer.UI.Controls.ViewModels.ScriptViewModel|Searching for valid index [Axis: L0]
2026-03-25 23:56:05.3992|TRACE|MultiFunPlayer.UI.Controls.ViewModels.ScriptViewModel|Ignoring invalid axis event [Axis: L0, Event: DeviceAxisValueScaledEvent { TargetValue = -0,09999999999999998, Duration = NaN, StartValue = NaN, Event = DeviceAxisScriptEvent { TargetValue = 0, Duration = NaN, StartValue = NaN, From = , To = Keyframe { Position = 0, Value = 0 } }, DefaultValue = 0,5, Scale = 1,2 }]
2026-03-25 23:56:05.3992|FATAL|MultiFunPlayer|System.Diagnostics.UnreachableException: The program executed an instruction that was thought to be unreachable.
at MultiFunPlayer.UI.Converters.MultiScriptResourceGroupToBrushConverter.Convert(Object values, Type targetType, Object parameter, CultureInfo culture)
at System.Windows.Data.MultiBindingExpression.TransferValue()
at System.Windows.Data.BindingExpression.TransferValue(Object newValue, Boolean isASubPropertyChange)
at MS.Internal.Data.ClrBindingWorker.ScheduleTransferOperation(Object arg)
at MS.Internal.Data.DataBindEngine.ProcessCrossThreadRequests()
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)

MultiFunPlayer v1.34.2:

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

1.34.2

  • Fix potential crash when changing media
  • Fix possibility of wrong scripts or no scripts getting matched when rapidly changing media
  • Fix mpv generating unnecessary path change events when using playlists
  • Fix script drag-drop not adding scripts to the list
  • Fix scroll wheel not changing scripts when hovering over script list popup box
  • Fix selected script clear button not working
  • Fix changing link axis target not causing the script to be updated
  • Fix bypass all/none buttons not working
  • Fix ability to set smart limit input axis to self
  • Fix ability to set motion provider update with axis to self
  • Use accurate UTC time for logging

1.34.1

  • Allow saving passwords in Web window when not in private mode
  • Create config backups when migrating to new config version
  • Fix unable to connect to outputs due to exception when generating TCode
  • Fix Web window only having 1px resize border

1.34.0

Additional patreon only changelog:

  • Add support for matching all scene scripts in SLR repository, previously only latest user made or ai made script was used
  • Add support for watching SLR 2D/VR videos in Web source with script streaming
  • Add support for multi-axis scripts in SLR repository
  • Add support for multi-axis scripts in FapTap repository
  • Add support for matching all scripts in HereSphere repository, previously only first script was used
  • Fix SLR repository not working with hls_h265 videos

Changelog:

  • Update to .net 10 (performance improvements)
  • Add support for matching multiple scripts per axis
    • Allows matching scripts from multiple sources to a single axis, for example multiple script libraries or HereSphere/SLR repotiory scripts.
    • Matched scripts are organized into colored groups (except when a group contains a single script, then the group has no color). When switching between groups all other axes also switch to that group, when switching to a script within a group only that axis script changes.
    • For example when switching L0 from orange to purple group, other axes like R0/R1/R2 will switch to the first script in purple group, while switching L0 from first to second script in orange group will not change scripts in other axes.
    • Users can add shortcuts for easily switching scripts (actions Axis::Script::):
      • Next/Previous script
      • Next/Previous script within current group
      • Next/Previous group
  • Add support for alternative script names (#145)
    • MultiFunPlayer now matches script files that start with video file name, so additional text can be added after. For example if the currently played video file is MyVideo.mp4, valid script file names for the L0 axis would be MyVideo.funscript, MyVideo.slow.funscript, MyVideo [fast].funscript etc., and MyVideo.twist.funscript, MyVideo.slow.twist.funscript, MyVideo [fast].twist.funscript etc. for R0 axis.
  • Rework sync settings to allow ignoring sync per setting/event
  • Allow hiding unused heatmaps when heatmap is split per axis (#205)
  • Rework Plex source to use user sessions instead of clients
    • This allows use of all Plex clients instead of only few select ones, but control (seek, play/pause etc.) from MultiFunPlayer UI can still only happen for those select clients (needs “Advertise as player” enabled)
  • Add ZoomPlayer support (#134)
  • Optimize TCode command generation for high frequency updates
  • Improve UI responsiveness
  • Fix possibility of some migrations to not run by changing config version from integer to date
  • Fix additional elapsed time could cause devices to exceed range limits
  • Fix stuck keyframes preview when media is reset while the popup is open
  • Fix heatmap “split axes” and “normalize heat” settings not loading
  • Fix shortcut action configurations not getting marked as valid when missing action gets registered
  • Fix pasting actions from clipboard not preserving enabled state
  • Fix duplicated JSON logging
  • Fix keyframes tooltip content overflowing available space
  • Fix motion providers not updating time in UI
  • Fix possibility of unwanted motion when keyframe collection changes at current script position
  • Fix The Handy output ignoring range settings
  • Fix custom curve motion provider time overshooting set duration
  • Fix Plex timeout exception when using auto-connect
  • Fix ability to shrink output range size below 1% using actions
  • Fix mpv downloader using old boostrapper script
  • Fix mpv download popup showing when trying to connect to external instance with auto-start disabled
  • Fix keyframes tooltip performance degradation when showing script end
  • Many other small fixes and improvements

Additional plugin changelog: (plugin samples):

  • Use ignored preprocessor directives for references (#:reference)
  • Add ability to set plugin metadata which will be visible in UI (#:name, #:version, #:author, #:description, #:url)
  • Add OnLaunch() method, called after settings are loaded
  • Call Close() method before saving settings
  • Add new helper methods to DynamicKeyframeCollection
  • Add ability to broadcast PolledUpdate events from actions
  • Prevent possible object disposed exception in PluginBase when using CancellationToken property
  • Force actions invoked inside other actions to be run directly to prevent dead locks (#196)
  • Fix plugin compile/dispose race condition when handling file events
  • Fix DynamicKeyframeCollection RemoveRange removing additional items

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

1 Like

Thanks for reporting, both bugs should be fixed in 1.34.2.
Let me know if you still have any issues.

So I have experimented a bit with this on V1.34.2 with Stash in a Web source. The multiscript dropdown option is great and works well in finding the alternate scripts. The only issue is that it doesn’t load any script or the dropdown menu for ~5-10 minutes after clicking a video. I assume this is because of the large local script repos it has to search. Not sure what the best way to speed this up would be. Perhaps an option to generate an index or loading the default stash script while waiting for the search could help.

It must be your file system being slow at enumerating files, or you have millions of files. What file system and setup do you use?
I tested standard windows shares with 50k files and 3k folders, spanned across multiple hdds and it took <10s.