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

Yes, the IP of the plex server.

I tested it with Plex Media Player and Plex on iOS, apparently Plex for HTPC should work too. Plex for Windows doesnt work.

MFP tries to get clients from http://<ip>:<port>/clients?X-Plex-Token=<token> so you could try accessing that in your browser.
I guess I assumed the server will always be accessible via http on local networks, don’t know if you can force it to https only.

1 Like

alright, downloaded Plex HTPC now it works, thanks :slight_smile:

I’m using the 1.24.1 version to be able to connect 2 devices. It connects to interface and I am able to add the 2 devices ,but neither of my device is responding to anything. I’ve attached the error that shows up on Interface.
In fact even with just 1 device the newer version still doesn’t respond and gives the same error.
The stable 1.24 version works fine but as mentioned before you can only connect 1 device.

Yea that was a bug in the buttplug library, thanks for reporting.
Fixed in this build: nightly.link | Repository Yoooi0/MultiFunPlayer | Run #4447021420

Thanks everything works now

Would it be possible to automate this kind of process? Ive seen you commented on this trick before.

Automate how?
I could maybe just set the default values for R1/R2. It’s just a few clicks so an additional button/functionality to set them seems pointless.

Tbh that is a firmware problem, I have my own custom OSR with custom firmware that does not have this issue.
In MFP you could maybe setup smart limits based on stroke position for each axis so that it does not hit itself.
Also MFP assumes it works with generic TCode not with any specific device, so something like that would have to be implemented in a generic way.

Probably not in MAUI anymore. MAUI ended up more of a mobile cross platform framework that by accident runs on desktop. I’m leaning more towards rewriting in avalonia, which should also make the rewrite easier since avalonia is based on wpf.

Current problem is choosing a nice control library, avalonia does not seem to have any that are as mature as MaterialDesignInXAML. But I would probably use something like FluentAvalonia.

Does the custom firmware use TCode too?

Are the axes/movements synchronised for TCode in the MFP?
For example, there is an upward movement and in the middle of the movement need to start a Z turn - will an intermediate calculated value be sent to the device for the upward movement?

Yup, thats why MFP is generic, to support different TCode devices and firmwares.

I’m not sure I fully understand but you dont need to send intermediate commands.
If you send L09999I5000 which will take 5 seconds to reach 9999, and then in the middle of the move send R09999I1000, both commands will be executed in parallel by the firmware.

But MFP works differently where it samples all axis positions at fixed rate (the update rate slider in outputs) and sends the commands in small steps, for example a script move from 0% to 100% over 300ms will be split into 100 commands (at 333hz).
If MFP was made to only play scripts and nothing else then I would send commands based on the script instead of sampling. But you lose the ability to interpolate the script, generate random motion and a bunch of other features.

2 Likes

Um… Then it turns out that if I don’t use linear movement or rotation on device, the MFP will still send me this data. Or is it possible to disable this function and only send boundary values with timeslots to the device?

I’m just asking why, I’m back to my robot project again, and vector+quaternion is more preferable for robot - but I want to keep compatibility with TCode (scripts + MFP), if enough controller power to process values. Don’t know C#, don’t want to understand syntax (at the moment) and want to think through top-level logic before programming controller.

My idea is to give the data as a json:
{"actions":[{"at":650233,"pos":{"x":50, "y":50,"z":100},"rot":{"qw":1.0,"qx":0.0,"qy":0.0,"qz":0.0}}]

MFP by default sends commands only when the axis position has changed enough. Also on successful connection commands are sent with default positions for all axes.
IIRC only UDP output has this disabled by default because there is no way to know if the client received last commands. This can cause OSR to rapidly move when it receives the commands for the first time so UDP output sends data all the time. But this behavior can be enabled/disabled if you click the button to the right of the update rate slider.

I think my firmware converts TCode into position + normal vector of the receiver, and then calculates servo angles to match that.

1 Like

Yea, something like that would be nice, but we are stuck with funscripts.
Tho I would make the position xyz to still be in 0-1 range.

1 Like

In the post above, I was thinking of asking in this way:
x, y - position in mm (both positive and negative - +/- 75 mm).
z - vector modulus from the maximum length of 100 mm (to calculate the vector of the cup’s starting point position, depending on the length of the dick). Your idea is very correct - since we have float, let there be all float values, e.g. up to the 4th digit.
Well, a quaternion to the 4th digit seems to give an accuracy of 0.5 degrees.
Great idea! Thank you!

Took a while but I slightly reworked how the gap fill works, with gap fill enabled and no script present it now fallbacks to normal motion provider behavior, with gap fill enabled and with script present the gap fill respects the other settings, so you can limit gap fill motion based on other axis.

Build here:
Let me know if you manage to test it.

1 Like

Fixed a few gap fill edge cases with auto home and speed limit: nightly.link | Repository Yoooi0/MultiFunPlayer | Run #4707820367

1 Like

Does the SLR interactive support work for streaming the script to Multifunplayer? I am able to download the funscript and load it to sync with DeoVR, but SLR limits you to download only 3 scripts, however if you connect to the handy, you can play as many scripts as you want on the monthly script subscription.

Yes it does. It streams video to DeoVR/SlrApp and streams script to MFP.

@Yoooi Oh cool! I haven’t been able to figure out streaming the script to MFP from DeoVR, I enabled Remote Control in DeoVR, but I’m not sure how to load the script in MFP. Do I need to do something to the Scipt Librarys or Media Path Modifiers? Or edit something in the script menu like “Open Folder” or “Load”

You need to use the patreon only build, public builds don’t support SLR.
Then under DeoVR you will find “SLR” button where you enter your SLR credentials.

1 Like