Multifunplayer - TRANSFORM Single Axis Scripts into Multi-Axis

Jackie GIFs | Tenor

Hi all! Like many of us - the prospect of mutli axis scripts was mind blowing. However, when I finally got my OSR2+, I realized that there weren’t many multi axis scripts available. I found myself jacking off to videos I wasn’t even into simply because there were multi-axis scripts for them. Those were dark times.

I actually went back to my Handy for a while until I started reading about randomized motion through Multifunplayer. IMHO, it’s the best script player and heavily supported by @Yoooi with great user engagement and frequent updates (he is the real MVP).

I started playing around with adding randomized motion on the pitch and roll axises - and WOW. The experience was completely changed. I (and others who have also tried) feel that a single axis script with randomized multi-axis motion is 90% as good as dedicated multi-axis scripts. Moreover, it allows us to enjoy the TON of single axis scripts in new ways.

Here’s a quick tutorial on how to do it.

Prerequisites - You MUST have your pitch and roll axis limits tuned properly. If they are not, your dick may fall out and get smashed to smithereens. No one wants that.

When a single axis script is loaded into MFP, L0 is automatically activated (up/down). We want to enable R1 and R2 so we get some nice swerve motion.

  • Click on over to the R1 axis (roll).
  • Hit the “Link” button and set the target to L0 - now the Roll axis is activated when a script is loaded to L0
  • Leave priority unchecked - this will still allow multi-axis scripts to be loaded as usual and override the link to L0

Here we’ll be defining what type of motion will be used to make the OSR2+ roll.

  • We’ll set the motion provider to random (don’t worry, this won’t be wonky stupid random motion, we’ll define that in the next step)
  • Next, expand out the “common settings” pane

This is where we can do some fine tuning and blend the literal “up/down” action as a seed to blend with some random-ness to give it some flavor.

  • A good starting point for blend values is 50/50. If you set it 100% script, it will literally go “right” when the OSR goes “down”, and “left” when it goes “up”. Adding some randomness will prevent it from being too boring.
  • Check update when… " R1 axis has no script" and L0 axis is moving. This will prevent the roll/pitch axis from moving when there is no action and breaking immersion with weird movement.

  • Next, enable smart limit. This will adjust the additional axis in concert with L0. e.g. if you turn L0 travel limits down, it’ll also automatically turn down the other axis.

  • Next, enable auto-home. This will prevent your dick from being held in a funky angle if you stop the script or pause, etc. Delay is how long it’ll wait before sending your dick home. Duration is how long it’ll take to move back home - short delay will jerk it back home, while a long delay with move it more gently.

Lastly repeat the above for R2.

Have fun - let me know how it goes and if you have any questions or corrections (I’m not 100% sure of exactly how everything works, but have had great luck with doing the above.

If you enjoy anything about MFP at all - PLEASE PLEASE PLEASE consider subscribing to Yoooi’s Patreon. He does great work helping enable our hobby. He’s def deserving of a few bucks.


This is great, thanks for the comprehensive explanation. I only just now realised that MFP also supports connecting over TCP/UDP (and much more) :sweat_smile: I’ll be giving MFP a try to see if I can get that “random” motion for unscripted axes even better than with my current setup.

Yeah it’s super feature rich. And soooo many of the features in there are in response to community feedback as well. I’m gonna make another tutorial on how I setup my hotkeys for edging.


Thank you for this :slight_smile:

Few notes from me:

  • The “link script” is pretty optional, I just use random motion provider without linking scripts and it works very good.
  • You are using rather old version of MultiFunPlayer, so for example “smart limit” is no longer a toggle and is fully configurable, this is current configuration to match the old toggle (points at (25, 100) and (90, 0)):

  • Auto-home duration is just how long it will take to home to default value

Oh, man, I just can’t wait for my SR6 to arrive in the mail so I can start trying these things out. Many thanks for this lucid and simple tutorial.

I would be keen to hear about what settings people enjoy for the blend value of random vs script and why.

I’m looking forward to the tutorial for how to set up your hotkeys for edging.

This is a great write up. Thanks for making this. Even if there weren’t any mult-axis scripts I was interested in, this function alone really makes me want an OSR.

1 Like

I noticed a lack of multi-axis too. Obviously I could not let that stand since almost all of my scripts are multi-axis. If you want a super easy way to add multi-axis to a single-axis script, I’d recommend using a Leapmotion controller with Recaxis. I added multi-axis to a couple of scripts that others have written. My multi-axis accuracy to the video is probably pretty poor, but it’s hardly noticeable. The main funscript is where accuracy is felt.

What does this mean, and how do I do it? I’m very confused by what’s happening in the “smart limits” tab.

1 Like

Click on the smart limits tab of the axis you want apply a limit to. In the graph, double click in the empty space to add a node. If you just add one node in the middle, you will limit the range of motion of that axis to 50% of it’s full output range no matter what position the input commands. But, if you move the one node over to the lower left corner and then add another node to the upper right corner, you will have defined a sliding scale for input vs output so that at the bottom of the range, the movement is constrained to zero, but at the top of the range, the movement is unconstrained so that 100% of the range is available. I use this for the pitch and roll axes which I link to the movement of the L0 axis, plus a little random movement. I want the movements to be larger at the tip, and more limited at the base so as not to bend my cock, so I set up the limits with a node about 30% from the left and about 30% up from the bottom, and then another node about 75% from the left and 100% to the top. This limits the pitch and roll to about 30% movement range from the very bottom up to about 1/3 of the way up, and from there their range of motion increases to 100% by the time L0 is at 80% to the top.


Great write up! I actually didn’t mess too much with mfps features besides running scripts but I was wrong. Nice!

The smart linking is still a bit confusing imo but I will tinker around with it :slight_smile:

1 Like

@StyleMavin Thanks for such a detailed explanation. It’s honestly a bit over my head at the moment, but I’ll read through this some more and hopefully with some trial and error I’ll understand it better.

Can you automate this function in future versions for us dumbdumbs?