JoyFunPlayer 4.0 - OSR (TCode) Player

Hi, I’m new here and am in the middle of making an OSR2 but I have a question about the JoyFunPlayer 2.0.

I have some videos that have multiple .funscripts for with/without fillers. When I was testing out the player I was able to run a video/script with the same name and I was able to skip through parts of the video while using the same script but when I use a different named script and tried to skip a bit of the video it stopped using the different named script and tried to go back to the one with the matching name.

Is there a way to play a video and use scripts with a different name or even from a different location? Could it have just been a glitch?

Thanks.

@McCoy1203

Hey bud, welcome. So JFP 2.0 looks for scripts with names that matches the video title. If you want to watch videos with fillers the best course of action would be to change the name of the video to match that funscript file name, then change the name back to it’s original once it’s done.

There is another player on this site XTP, which allows you to choose a different named script. Check that out and see if works for you.

@poet145x

Thanks for the response. I was hoping not to have to change the script file name every time to run a different script from the original. Sometimes I like to mix scripts from other videos and it seems like a lot of work just to run it differently when ScriptPlayer does it with ease. I may just stick with a Launch instead of the OSR2.

I’ve also tried to use the XTPlayer but I keep getting an error when I select a media library folder. It’s just a blank error box but then the programs stops responding and crashes.

Well i won’t tell you how to spend your money but the OSR2 is a worthy upgrade. Were you just messing around with JFP 2.0 for fun?

As for the XTP, just realized the one available is one update behind. I’m sure he’ll update it soon but it crashes because the OSR2 needs to be plugged in before you start the program. Like i mentioned the next update fixes that issue though

Could you make a “true raw” mode where the serial buffer only includes positions and times from the funscript file? Right now even in “raw” mode, the linear position output seems to be interpolated. For example, let’s say it’s playing a funscript that has two points (position, milliseconds): (0, 0) to (100, 1000).
At time=500 milliseconds, JoyFunPlayer’s serial output would look something like xL0[0]=450, xL1[0]=550.
XTPlayer seems to have true raw output, where at time=500 milliseconds, the serial output looks like xL0[0]=0, xL1[0]=1000.

The reason is, I am running a Venus 2000/Venus for men setup with a stepper motor and the motion control seems easier with raw output. I have it working as a Fleshlight Launch emulator and it’s a lot quieter since each motor movement command moves to the next position in the funscript. In my TCode control program, it constantly makes tiny movements to get the stepper to the interpolated target position, which causes noise from vibration. A better motion control loop would also be a solution but raw output would be more efficient and a good feature to have regardless.

1 Like

Not sure if you solved this problem with your multiple scripts causing problems. but theres a solution i would use.

Create a bat file that renames the video file in the folder to match each script. You can just create a new txt file in the folder, edit it in any text editing software. then later rename it to a .bat file.
As for what to write in the file, this line should rename your video file

rename *.mp4 “same_name_as_script.mp4”

That line takes any mp4 file in the folder and renames it. so that would only work with one video file in the folder, and obviously change the mp4, if its an mkv instead for example.

Then you can even have the bat file launch the video in a specific program,

start C:\Windows\System32\write.exe [same_name_as_script.mp4]

Instead of the generic program location C:\… replace that with the exe for whatever script/video player you want. So if you make a bat file for each of your scripts. name the bat files to be the same as your different scripts, then clicking the bat will do all the work.

Might be a bit of work to set up if you’ve got a lot of files. But its a solution.

1 Like

Can someone do this already for us not too versed in code? :grinning: :slight_smile: A simple tool for renaming videos/ funscripts to the same name, diff extensions. That would be super noice…

I had a thought today as I was learning to fine tune my pitch offset slider, which made a huge difference to my session, shoulda been messing with that sooner!

I was thinking, do we really want a pitch offset at the top of a stroke, im mostly using it so the bottom of the stroke is as perpendicular to my body as can be, but top of the stroke id much prefer it just be straight. Would it be possible to add an option/slider/something to choose the point at which the offset is applied? then apply it over the length of time it takes to go from that point to the bottom of the stroke… so i could say at 70% of the way down, begin applying the offset.

I dont know if thats getting too deep in the weeds, but it seemed like a small thing to me and would allow to go slightly higher on the upstroke and perhaps make a sort of artificial griding on the down… idk just an idea :slight_smile:

Updated the app to 3.1 with SLR login support. This way it’s very easy to play scripts on your mobile VR headsets like Quest / GearVR.

Also give the new Random stroking mode, Manual rotation control (pitch/roll) and twerking mode a try. I might be biased, but I promise it’s awesome. :stuck_out_tongue:

fyi - I will probably rework the app in the future to also support other toys again (Launch / Onyx / Keon).


Interesting idea @Nfinite - I think this can be done inside the arduino actually. So it’s supported on every app.

2 Likes

My go to App guys - Highly recommend - Thanks for letting me test @raser1 ! :stuck_out_tongue:

Its an Edging paradise with marathon sessions possible using with the Xbox Controller features, and small touches that really make life good using it :+1:

1 Like

Does the new SLR integration only function for scripts/videos purchased through SLR? Most of my content is local scripts/videos, if I connect SLR and have a local script on my headset and say stream via DLNA, will it still work? or the SLR integration will only work for the content I have available on the SLR platform itself?

I currently just use VD on my headset and run everything on the PC, but natively running the content is something id like to mess with if available.

oman, just tried out the new twerking mode, that is something great… It noticeably increased the immersion, now I gotta remember where i put this xbox controller in addition to my VR ones lol. I am pretty shocked at how much better it was with that turned on.

seriously though that mode is amazing, could you just invert the pitch and have a cowgirl mode?

small feedback :), would be nice if the mode would set the pitch back to what it was when the mode started and not 50%, for those of us who like to have a pitch offset, would be really nice if the mode took your set pitch into account in deciding its own pitch range.

Thanks for the update! its really great!! Just when I think I’ve optimized my experience as much as I care to, you drop this easy gem on me!

Hey thanks for the comments @Nfinite :smile:

The twerking mode was a quick last minute idea & addition which turned out pretty well. I should be able to improve on it in the next updates. :slight_smile:

Yes, the SLR integration also works with local files. I use it for both local and streaming. There’s a FAQ on the SLR discord that you could check for more tips on how to set it up:

Link to discord: Join SLR Discord
Link to the FAQ: SLR Discord - Interactive FAQ

Also great idea about having an inverse twerking (cowgirl) mode. I’m kinda running out of buttons, but I’ll figure out a way to add it.

P.s. don’t forget to check the Manual rotation control & 3-axis random stroker features. :stuck_out_tongue:

The manual rotation control also doubles as a way to adjust the pitch & roll at the same time. It’s kind of finicky, but if you press it again to disable then it will remember that last angle.

1 Like

I noticed in the twerking mode at the top of the stroke, the mini arm coming out of the pitch servo is banging into the lower edge of the little back window it goes through on the frame. It actually pushed hard enough to sort of twist the frame until it let off, is my OSR just messed up lol…

It sounds like the pitch arm has too much range. Unfortunately the pitch angle also changes depending on the depth of the stroke because of the kinematics. You can lower the maximum pitch angle inside the Arduino if you’re comfortable doing that.

The pitcher base was updated by Tempest a little while ago to fix this problem. If everything is aligned just right, the original pitcher base can work but yeah, it’s a tight fit

https://www.patreon.com/posts/47387624

2 Likes

I actually found out specifically what XTPlayer is doing, it’s using “interval” commands like “L0999I250” which means “go to position 999 in 250 milliseconds.” I like this since it seems “better defined” than just sending interpolated values for the current time as fast as possible. With the interval commands, the OSR knows where it needs to be in the future, unlike with JoyFunPlayer’s “moment in time right now” interpolated solution.

I think this would be smoother because it lets the interpolation happen on the OSR’s end. Let’s say we need the servo to move 1000 servo position units in 1 second:

  • I’m estimating that JoyFunPlayer operates around the 100 Hz range so JFP would send 100 movements, meaning the servo moves 100 times, moving 10 units each time.
  • With the interval commands, the OSR board knows that it needs to move 1000 position units in the next second. The Arduino is fast enough to chop this up into as small of increments as possible, making the servo move 1000 times, 1 unit each time.

The interval commands should be smoother. Since the servo tries to move to the commanded position as quickly as possible, the graph might look something like this in an exaggerated case with ~6 Hz command rate:
image
Each of those corners on the JFP line represents a newly commanded position, which the servo moves to instantly (unrealistic but assumed here to exaggerate). You can imagine how the red line would get smoother as the command rate increases (more and more corners until it looks like a smooth slope when zoomed out).

TL;DR: adding interval command mode to JFP would be nice!

Hey @f86k, I have actually done lots of research on this topic. The commands are sent at a max rate of 500Hz. I’m using this method because it allows true immediate control which simply isn’t possible with the regular interval commands. JFP can also do smooth curves instead of straight lines with the Cubic & Cosine function. This makes a big difference with the right servos.

Edit: I did notice a mistake in my interpolation since my last code cleanup. I should have a fix uploaded soon :slight_smile:

It has been fixed. The ‘Cubic’ mode should be very smooth again.

4 Likes

Too bad it isn’t open source. There are so many improvements that can be done on that app. Interface wise, mostly.

2 Likes

If you use deoVR where should you store the scripts ?