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

when we link R0 to L0, the twist turns left when it goes down and right when it shows, is it possible to reverse this movement when the R0 axis passes into its neutral position (50%)? I know that we can reverse the direction of the axis randomly with the motion provider option, but I find that it makes the twist a little soft at times.
I hope my explanation is better x)

You can open the ā€œadvanced settingsā€ section in random motion provider and play with the values, you can tweak it so the movement is more aggressive, or just adjust the speed.

So like this?:
pXJ824jBWx

Its possible but it will make it so twist only turns left.

without the motion provider it is impossible to invert the axis automatically on a given value

Love the work youā€™ve done with this! :heart: I have a few requests to consider or perhaps questions on how to do things I may have overlooked.

As Iā€™m getting into scripting, I really like seeing the detailed waveform of the script playing in Script Player. Iā€™ve noticed you can see this in MultiFunPlayer when you hover your mouse over the heatmap, but is there anyway to pin this up to always show and track along with whatā€™s playing?

I suppose I could just play the media in OpenFunScripter(OFS) with MultiFunPlayer, but then thereā€™s no playlist support.

While Iā€™ve seen people mention use of VirtualDesktop, everything Iā€™ve found is just using this as a bridge for a Quest to then get to HereSphere or other player. I really like the video player in Virtual Desktop itself. I find it really useful to play in VirtualDesktop and then manage and search for files in the Windows desktop w/o needing to take off the headset. I can imagine it would be really useful when testing and adjusting scripts to do it all in VirtualDesktop so I could have both OFS up on my display with the video in the background.

Is it possible to connect MultiFunPlayer to VirtualDesktopā€™s video player? Is Virtual Desktop piggybacking on something else I need to hook MultiFunPlayer into? Does Virtual Desktopā€™s video player not support any remote connections for MultiFunPlayer to hook into? Iā€™m not sure what the situation is here.

1 Like

No way to pin it, if I would add a way to pin it it would be the height of the heatmap itself, so pretty useless. This could be made as an easy plugin in the next version tho.

I have no idea as I never used it, if there is an api that you can connect to then I can add it as video player to MFP. But looking at it there most likely is no api. You would have to make a feature request. The api has to send video path, duration, current position, play/pause state, playback rate (optional).

But since this is a virtual desktop you can also probably use mpv, vlc or mpc-hc.

1 Like

Thanks, I got it working with stash-vr. The filename still displays as ā€˜streamā€™ but itā€™s picking up the funscripts now.

image

Hi, Iā€™ve finally decided to look into this side of things, and Iā€™m just a little confused. In order to get the valve to open on the way down and close on the way up, do I need both A0 and A1 activated for an SR6? And what would my settings be? Thanks

You only use either A0 or A1, cant use both at the same time. In your case I think you can just enable a custom curve motion provider on A1 and set it to a flat line at 100%. And that should fully close the valve on the way up and fully open on the way down. Iā€™m not sure if you need to constantly send A1 commands, if it stops working then you can disable ā€œsend dirty axes onlyā€ option on the output.
It also can depend on the firmware you have.

1 Like

Thanks for the help, Iā€™ll give it a go!

Hi @Yoooi, is it possible to set the range for the L0 output of a serial device using a custom plugin? Iā€™ve made a plugin but I cant figure out how to write the range to the device. Thanks for the help!

Yes, call:

InvokeAction<DeviceAxis, double>("Serial/0::Axis::Range::Minimum::Set", DeviceAxis.Parse("L0"), value);

there is also ::Maximum::Set, ::Middle::Set and ::Size::Set.
The actions are the same as for the shortcuts.

1 Like

Much appreciated!

Not sure if itā€™s just me but on the Patreon and public release Iā€™m experiencing a bug.

When random motion is turned on for R1 and R2 AND invert is also on for R1 and R2, Roll and Pitch axis values from scripts do not get read (and therefore sent to the device).

Anyone else?

Final question :). Is it possible to listen for deovr haptic button events? It would be great if I could register an event listener or something

This will be fixed in the next release, tho the invert option will only invert the script, it will not invert motion providers because thats the source of the bug.

You canā€™t directly listen for input events, but you can register a shortcut action:

RegisterAction("Plugin::Test", () => {
    // handle action
});

And then you just create a normal shortcut with your plugin action.
Note that there is an issue with current version where the plugin action will be removed from the shortcut on restart because the plugin is not yet loaded when launching MFP, this is fixed in next version.

It would be nice to allow plugins to just listen for input gestures but it currently would require exposing like half of the classes from the input system to the plugins. Iā€™ll see if it can be added in some reasonable way.

Cool, thanks! Should be fine for now, but will be looking forward to the next version then :slight_smile:

Got it, good to know itā€™s in the works! I

yeah itā€™s just a QoL thing where one would have to toggle the random motion on and off when switching between media that has and doesnā€™t have roll and pitch scripted.

Not looking to invert the random motion as itā€™ll just be as random haha :joy:

@Yoooi recently started using your free player, and i use osr2 connected via serial, and quest3 connected wirelessly, with deovr option as i use slr site on it. All works good but problem im having is lets say i take my quest3 off my head for a minute or 2, multifunplayer will disconnect from deovr. than i have to put my quest3 on my head and than click connect on multifunplayer for it to reconnect, which is annoying. Any way to have the player stay connected to deovr, even if i take my headset off?

There is auto-connect button next to the connect button, toggle it on and MFP will try to connect automatically every few seconds.
That disconnect is probably some quest3 behavior I cant control.

MultiFunPlayer v1.32.0:

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

Additional patreon only changelog:

  • Support SLR login using login code
    MultiFunPlayer_eFKZISyfLM
  • Allow connecting DeoVR even when SLR login fails or credentials are empty
  • Donā€™t use cached session if username is different
  • Fix ā€œwrong passwordā€ error when logging in to SLR
  • Fix SLR api sending local scripts causing double sync

Changelog:

  • Rework and simplify plugin system
    devenv_uEsUsCvzOg
    • Allow placing plugins in subfolders
    • Expose available actions and properties to plugins
    • Allow plugins to create their own UI
    • Improve performance of creating assembly references for plugins
    • Register missing properties for plugins where possible to match registered actions
    • Sample plugins: MultiFunPlayer Sample Plugins Ā· GitHub
  • Update to .net 9 (performance improvements)
  • Allow assigned actions to be in disabled state instead of getting removed from shortcuts if plugin or output target action is unregistered (#88)
    P4FSRlLpSY
  • Add support for auto-home and speed limit when using PolledUpdate (#180)
  • Fix unable to place breakpoints in plugins due to plugin assembly embedded source not including BOM
  • Fix nested dialogs getting stuck invisible in certain situations
  • Fix custom curve motion provider tiling when using makima interpolation
  • Fix manual axis transitions loosing steps with shortcuts in relative mode
  • Fix axis value flipping repeatedly with invert option enabled by reverting it to invert script only
  • Fix auto-home taking shorter time to complete than configured
  • Fix SyncOnMediaResourceChanged not having any effect when set to false
  • Fix MotionProvider::Custom Curve::Points::Set actions not updating display name
  • Fix MotionProvider::Custom Curve::Points::Set actions adding additional point on each launch

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

3 Likes