MultiFunPlayer v1.32.0 - Multi axis funscript player - Now with SLR script streaming

Oh, yea makima will overshoot, with large gaps like that it will just be clamped to 0% or 100%, thats why pchip is the default.

You can see it when you hover over the heatmap:
MultiFunPlayer_18TNFuMOLA

Don’t think there is a fix other than using pchip or implementing some new/other interpolation method.

1 Like

Thanks. By the way, here’s a (rather old) question: Since MFP already does interpolation, is it really necessary to manually make a sine wave by adding additional points inside a script?

I’ve stopped doing this for a while but still seeing this technique being brought up. Some does it for the pursuit of circular motion. And there is people like @codeScripter who goes absolute overkill at it.

Since I will use complex animation curves, I choose to interpolate by myself and makima interpolation will have overshoot between two parallel points. If there is no interpolation and the user selects pchip interpolation, the smoothness will be somewhat reduced. I interpolate by myself in order to convert the script From 90 points to 100 points, many users actually don’t understand interpolation at all. If I regard my script as a product, I must think more about it.

1 Like

In fact, I have always wanted to give Yoooi an idea: when scaling the script, do not scale uniformly. Actions with an amplitude of <20 can not be scaled, so as to avoid these actions becoming imperceptible after being scaled.

In addition, I have carefully studied the interpolation algorithm. Yoooi has done a good job in this regard, but spline interpolation is not equal to the animation curve. The situation of the animation curve is much more complicated. Regarding the speed changes produced by the animation curve, you can actually perceive it because The nerve synapses on the sexual organs are very rich

Another practical experience is that when using makima interpolation and your script has two parallel points, overshooting will cause safety problems. The user’s sexual organ may come out. I have experienced such a danger.

image
If you are interested, you can study the overshoot analysis of the interpolation algorithm. I think it’s better to forget it. This requires very high mathematics.

If you are just doing a simple up/down triangle wave pattern then probably not, it will interpolate to more or less a sine wave. But if you want to spend the additional time you will always have more control over the smoothness if you do it manually.

I think it makes a lot of difference if you add additional points between stroke top/bottom to change the speed and acceleration ramp up/down, rather then just doing sine wave.
Basically the two bottom images from your post here: On Script Interpolation / Curved Strokes - #24 by Falafel
Ideally the funscript format would include tangents for each point, then you will have full control over interpolation, but we need OFS to support that first.

Yea I have random thoughts about new scaling methods in #156 on github. The current one is pretty useless.

PChip and makima were the only two suitable interpolation algorithms I could find, spline and cosine are worse. There will always be drawbacks to interpolation, ideal solution is to have tangents in funscripts for full control.

1 Like

Yes, tangent is the best solution. It’s a pity that the author of OFS archived the project. I have seen the source code of OFS. I don’t have that much free time to contribute to OFS. Besides, I am not very proficient in C#. I am most familiar with python, java and nodejs…

I believe this concern was prompt by a reply in my old post:

But this is basically what I wanted to know. Thanks for answering!

And thanks for @codeScripter 's insights as well. Just wanna say I didn’t mean to disapprove your workflow in anyway and I appreciated all the dedication and craftsmanship poured into your scripts.

1 Like

tested in 1.29.1 and 1.29.2-- my keybinds *dont work on loading the app until I open up the shortcut menu. 1.28.2 doesn’t have that prob.

1 Like

Fixed, use this build: nightly.link | Repository Yoooi0/MultiFunPlayer | Run #8088620282
Thanks for reporting the bug.

1 Like

Btw, i did test the setup and on most parts it works great. Its only vibration patterns in scripts that it just cannot handle. While it will vibrate, its often not smooth and skips a lot of points in it.

But this is highly depending on the vibration movement with it. Strong vibrations are handled better than light ones.

But if using a vibrator, this sort of script portions can just be altered anyway. There is no need making the sleeve also vibrate. Technicaly for PMVs this can still be beneficial if properly working, but most pmvs arent multiaxis with vibrators in mind so atm its just not relevant. And let those normaly dont use those vibrations in scripts since they already have more axises to work with.

Converting a multiaxis script to also work with vibrators isnt too difficult (i just need to make a script for that). Converting the rotating speed to for example a vibration strength would do enough.

MultiFunPlayer v1.29.3:

Download: Release MultiFunPlayer v1.29.3 · Yoooi0/MultiFunPlayer · GitHub
Patreon build: https://www.patreon.com/posts/97781216

1.29.3:

  • Fix shortcuts not working until the shortcut settings popup is opened and closed
  • Fix possible exception when parsing VLC source position/speed due to user culture info
  • Fix possible incorrect MPC source speed due to user culture info
  • Fix plex source exception when receiving invalid timeline response xml
  • Fix no delay between plex source retries after receiving invalid response xml
  • Fix inconsistent width in device settings tab when changing selected device
  • Fix inconsistent toolbar button width
  • Add “raw” to L0 funscript names in default devices

1.29.2:

  • Fix polled update TCode commands duration getting sent as seconds instead of milliseconds
  • Fix url encoding of media resource name when parsing from url causing script repositories fail to match scripts (#155)
  • Fix incorrect host comparison in Stash/XBVR repository causing no matched scripts
  • Fix Stash/XBVR repository not using full path and query when parsing for scene id causing no matched scripts
  • Fix invalid scene id regex in XBVR repository causing no matched scripts

1.29.1:

  • Fix unable to capture mouse wheel gestures
  • Fix gamepad axis gestures not displaying user index
  • Fix commit sha in window title version in release builds

1.29.0:

  • Add polled update option to all output targets (#92)
    • Polled update only sends script actions to the device ignoring all other MultiFunPlayer features, used mostly for BLE devices like The Handy to improves smoothness
      MultiFunPlayer_JZlaW8Xt5m
  • Add configurable shortcuts (#28)
    • Supports multiple shortcuts for the same gesture
      iw0QbXnzmK
  • Add ability to change between secured/unsecured schema for endpoints (#150)
  • Add ability to change axis used for heatmap range and tooltip with scroll wheel (#148)
  • Add update check to information dialog (#34)
  • Add ability to toggle force seek option in OFS source
  • Improve keyframes heatmap range display
  • Change default UDP output endpoint to tcode.local:8000 to match WiFi firmware
  • Fix gamepad axis gestures not working
  • Fix invalid VLC source media path causing scripts to not load automatically
  • Fix XBVR and Stash script repository returning no results with UseFirstMatchOnly
  • Fix script link not updating for axes without priority
  • Fix heatmap enable preview setting not getting loaded
  • Fix possible min/max exception when using Axis::Range actions
  • Fix delay when disposing media source or output target
  • Fix buttplug output creating invalid device map when loading settings
  • Fix endpoint settings not loading when using hostname
  • Remove Uri To Local media path modifier

If you like what I’m doing, please consider supporting me on Patreon

1 Like

I feel like an idiot, but just ran this for the first time and am trying to follow instructions. I hit the plus and select OFS, and click connect, but get this:

You need to enable websocket server in OFS first.

Thanks. Just tested with my Handy, but ends up being totally out of sync with OFS. It says Handy support is in experimental state, so oh well. Was hoping I could use this for live testing of scripts as I make them

You need to use buttplug output, after connecting to intiface you map The Handy to L0 axis in MFP and change it to polled update. Should work like that but dunno how it will behave will live changes.

cant seem to get the axis for v0 and v1 to appear… any ideas?

Default device only shows the basic 6 axes, you need to go to devices tab in the application settings at the top of the window, clone the default device and enable V0/V1.

1 Like

thank u soo much got it now

Hey, long term user and big fan (and patron) of the software, just having a slight issue: DeoVR doesn’t seem to put the scripts out to MFP: I can connect, and the bar where the script should be does have the line indicating the current point, and I can even move that line within MFP to move the DeoVR playback to various points, but the heatmap doesn’t appear and there is nothing showing on the playback indicators.

I had a similar problem before which you solved for me, on an earlier version of the DeoVR s/w but can’t seem to find the question/answer in this thread, sorry. I’m using DeoVR on a Quest 3 and connecting to an SR6. I’ve tried toggling the haptics on/off and the device icon which shows in DeoVR during playback too.

This has mainly not been a problem/is now a problem because I’ve barely used DeoVR since I got Heresphere, but sometimes I’d like to be able to use DeoVR instead and take advantage of my streaming script sub. Sometimes it connects right away, but I’m never quite sure what I’ve done differently, and what I’ve found is that once it won’t work for me, I then can’t get it to work for me despite various togglings/restarting of things. Thanks for any help