I have some videos where I have multiple versions of a funscript (not multi-axis, just on the main axis). I have them assigned in XBVR which is what I’m using for my script repository, and it looks like XBVR does send the multiple file data in the API. Is there a way to choose among the scripts in MFP (e.g. set up a controller shortcut to cycle through them)?
Is that linked to a specific behavior of MFP?
Currently multiple scripts per axis is not supported, but I want to add it some day.
You could set the dms match to selected only, and select the script you want to use in XBVR web ui, but that is very cumbersome.
I dont know the full context of that comment, but if you are creating a script in realtime then obviously having a 1s buffer will smooth things out as you are not creating points at current position.
Thank you for the quick response. Can you explain the difference between “MatchAllUseFirst” “MatchAllOverwrite” and “MatchSelectedOnly”? It seems like you are suggesting using the MatchSelectedOnly, I suppose MatchAllUseFirst just uses the first one in the list that XBVR sends via its API, but I don’t understand the overwrite option (what is it overwriting exactly?)
I’ve recommended to add 2-frame buffer (in the past, so there are always frames to use) to reduce jitter
Someone posted that that didn’t help, but adding a minus-2-frame buffer (in the future, where there are no frames yet so I extrapolate a point 1s in the future as if the speed is constant) gelped
I was like WTF
I’ve tried it
It helped
If you hover over the “?” it will show you a short description.
MatchAllUseFirst
matches all scripts attached to the XBVR scene, and for each axis uses first one that matches, MatchAllOverwrite
uses the last one that matches.
So if you have 3 pitch scripts a.pitch.funscript
, b.pitch.funscript
, c.pitch.funscript
, MatchAllUseFirst
will select a.pitch.funscript
, MatchAllOverwrite
will select c.pitch.funscript
.
You can make it match b.pitch.funscript
if you use MatchSelectedOnly
and if you select it in XBVR web ui. Tho you will have to select scripts for all scenes.
Currently you can’t, that would require big changes to the plugin compiler.
Could I do that via C# dll?
…
I guess I’ll just make a watcher that concats my files then
(question still stands)
By the way, could you please add a delay to file watcher? Compiling fails in 30-40% of cased because file’s still locked
Also here’s a reference watcher implementation
Hey.
I have a quick question. Is it possible to “key-bind” the output range? i use the funscript player with VR glasses, and had to remove the glasses every time i wanted to lower, raise the stroke length, and it would be easier to just bind it to, lets say the numpad or something like that. If you understand the question?
Yes, open application settings at the top of the window and select shortcuts tab, capture numpad buttons and add a “button press” shortcut. Then expand actions tab and search for “range”, you can either set or offset the range minimum/maximum/middle/size, after assigning the action you can configure the set or offset value.
Yes
I have a Mouse4 Press action (not Click as press is faster) for -5 max L0, Mouse5 for +5, and another button for set to =80
This is annoying (ik I can workaround but I fail sometimes)
2025-01-18 04:21:07.7233|ERROR|Stylet.BootstrapperBase|Unhandled exception|System.IndexOutOfRangeException: Index was outside the bounds of the array.
at MultiFunPlayer.UI.Controls.KeyframesHeatmap.UpdateRange(Span`1 buckets)
at MultiFunPlayer.UI.Controls.KeyframesHeatmap.Refresh()
at MultiFunPlayer.Common.ObservableConcurrentDictionary`2.<>c__DisplayClass12_0.<NotifyObserversOfChange>b__0(Object _)
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)
2025-01-18 04:21:07.7233|FATAL|MultiFunPlayer|System.IndexOutOfRangeException: Index was outside the bounds of the array.
at MultiFunPlayer.UI.Controls.KeyframesHeatmap.UpdateRange(Span`1 buckets)
at MultiFunPlayer.UI.Controls.KeyframesHeatmap.Refresh()
at MultiFunPlayer.Common.ObservableConcurrentDictionary`2.<>c__DisplayClass12_0.<NotifyObserversOfChange>b__0(Object _)
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)
at System.Windows.Threading.DispatcherOperation.InvokeImpl()
at MS.Internal.CulturePreservingExecutionContext.CallbackWrapper(Object obj)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
Caused by negative keyframes or whatever
Could you please crash when I try to enter the invalid state by pushing bad keyframe or whatever
Thank you! this app has lots of nice features, i just have to ply around with it some more. Got it working. Thanks again
I’m having an issue where MFP won’t connect properly to Intiface using a Lovense Edge.
When I search for devices in Intiface to check, it finds the Edge no problem. Since I read in some thread that searching within Intiface and MFP clashes, I close everything, restart the toy, replug the Bluetooth dongle.
When I start Intiface again and start the engine, the light on the dongle becomes static. Next I start MFP. I managed to add V0 and V1 axes by cloning the TCode 0.2 device. When I connect to the Buttplug output, the light on the toy goes to static, so it does connect somehow. However, no output from the toy and after ~20-30 seconds the Buttplug output in MFP disconnects.
Intiface log attached:
One thought is it might be worth updating your Intiface, they’re up to 2.6.5 now so you’re quite a few versions behind.
That was fixed in v1.31.3 or later, it was a bug in the library used for connecting to buttplug
So in other words, without paying for MFP, Intiface/Buttplug support is not existent?
Paywalling features is standard practice, but bugfixes?
Thanks, but I mainly use it to connect to Handy via BT when their servers are acting up and there’s a thread somewhere around that advises against updating.
If you want to call it that then sure, the updates will be released on github eventually. Bugfixes still take time to implement, bugs probably take more time than features.
And I would not call buttplug support not existent, the bug is caused by one of the messages sent from intiface, and it is pretty rare. I could not reproduce this message on my PC, it should be sent mainly on android.
If you really want you can recompile MFP with the updated library, or maybe download latest Buttplug.NET
dll and try replacing it, but not sure if MFP will start.