vFAPS 2.9 (Win + Mac!)(New: Dual Video Playback w/ Script Remixing)

vFAPS v2.9

New Free Version + 2 New Patreon Versions!

New Feature Drops

:film_frames: Dual Video Playback with Script Remixing

gifdualvideo

:red_apple: Native Mac Support

:globe_with_meridians: vFAPS Sync Chrome Extension

Details Here: Jump Link to Post


QUICK LINKS

FAP Store: Creator Early Access Now Open

vFAPS: Download on vFAPS.com

Patreon: Follow development & get early access


JUMP LINKS

:down_arrow: vFAPS 2.9 - Dual Video Script Remixing + Mac Support

:down_arrow: vFAPS 2.4 - Heresphere

:down_arrow: vFAPS 2.2.0 (BETA) - Media Browser

:down_arrow: vFAPS 2.1.0 - The Handy Integration + more!

:down_arrow: vFAPS 2.0 - Updates & Features

:down_arrow: vFAPS - Development Roadmap


What is vFAPS?

vFAPS is a funscript creation and consmption studio for single and multi-axis funscripts using standard point-based timeline scripting, or by recording real-time VR controller movements (or mouse-based input) synchronized to video playback.

With vFAPS, you can intuitively author, edit, and refine funscripts as well as enjoy them using the built in Media Library to browse your content and the Pattern Library to save and reuse your favorite funscripts snippets.

Bugs and Issues: report@vfaps.com
Contact and Inquiries: contact@vfaps.com


==========================================

vFAPS 1.0 Release

Introducing vFAPS

Virtual Funscript Authoring & Playback Studio


Creating funscripts by hand is slow, tedious, and I suck at it.

I wanted something that could get me ~80% of the way there without all the hassle.

I tried a few tools, AI automation shortcuts, computer vision motion tracking, etc., and they were all either too tedious, too complicated, too resource intensive, or just bad. So, I decided to create vFAPS.

vFAPS won’t turn everyone into a master funscript artist and it’s not trying to. It’s for capturing the feel of a scene, quickly and intuitively.

Think of it as ā€œvibe funscriptingā€.

When the scene ends, your script is already done and for me, that was exactly the point.

vFAPS isn’t trying to replace skilled funscript artists or the hand-crafted perfection they deliver. (Seriously, some of you out there are :fire:) It’s an 80% solution for the rest of us that gets it most of the way there without turning scripting into a second job.


vFAPS Highlights

Record motion, not points
Move naturally with a VR controller while the video plays. Your real-time hand motion is captured at ~90Hz and translated directly into funscript data.

One pass, multi-axis scripting
Record stroke, surge, sway, twist, roll, and pitch simultaneously. No separate tracks, no endless rework.

Organic by default
Because the input is physical movement, the result already has timing, variation, and flow. Built-in stabilization and smart point reduction clean it up without sanding off the human feel.

Fast calibration, flexible editing
A guided setup maps your physical range in under a minute, with a full timeline editor for tightening, re-recording, or polishing specific sections.

Beat-aware when you want it
Automatic beat detection and adjustable beat snap let you nudge motion toward the rhythm or fully lock it in without killing the vibe.

VR optional
Works with Valve Index, Meta Quest (Link/Air Link), Vive, and other SteamVR controllers. No VR? Mouse mode still gets the job (mostly) done.

Free and open source
MIT licensed, standard funscript export, project files included. Use it as-is or bend it to your workflow.

Check out the github page for more details.


vFAPS GitHub

(fork the repo, modify, enjoy)

.

vFAPS 1.0 Easy Install

(download the zip, extract, run)


vFAPS Quick Start Guide

1. Launch & Prep

  • Start vFAPS.
  • Make sure SteamVR is running and your VR controller is on
    (or let it fall back to mouse mode automatically).

2. Load a Video

  • File → Open Video (Ctrl+O)
  • The timeline and transport controls sync automatically once the video loads.

3. Calibrate (Recommended)

  • Press A on the controller or choose Recording → Auto-Calibrate Controller.
  • Follow the on-screen steps to define your natural movement ranges.
  • You can re-center anytime with C.

4. Choose What You’re Recording

  • Pick a primary axis (Stroke, Surge, Sway, etc.).
  • Optionally enable multi-axis recording via the checkboxes.
  • Adjust sensitivity if needed.

5. Record Motion

  • Scrub or play the video to your start point.
  • Press R or pull the trigger to start recording.
  • Move the controller naturally while the video plays.
  • Press R / trigger again to stop.

6. Refine the Script

  • Use the timeline to:
    • Drag points to fine-tune motion
    • Add points (double-click)
    • Select ranges (Shift + drag)
  • Apply smoothing or clear sections as needed.

7. Export

  • File → Export Funscript (Ctrl+E)
  • vFAPS automatically outputs correctly named multi-axis funscript files.

Helpful Tips

  • Trigger = play/pause + record toggle
  • Thumbstick left/right = scrub video
  • Decrease your ranges in by ~10% on each side when starting (recommended)
  • I recommend using the beat snap (I’ve found 50-60% to be my sweet spot)

If you use it and you like it, consider supporting the development.

Otherwise, enjoy and thanks for being an awesome community!
(Special thanks to a true funscript artist, @EvelynEvil666 for introducing me to this place!)


Follow vFAPS development for free on Patreon. Supporters get early access, beta builds, and influence on new feature prioritization & development.

vFAPS on Patreon


vFAPS on GitHub

30 Likes

Awwwww….:face_holding_back_tears::face_holding_back_tears::face_holding_back_tears:
YW, sweetie! Dunno how I did but you’re welcome! It’s a great community. Very special to me. The support I’ve gotten here in my transition…it helped keep me alive. :heart_hands:t2:

9 Likes

Nice. Just a thought, makes me wonder if it would work to advance the movie by movement when a key is pressed and have VR like two screens, one advanced dunno maybe 100ms. Could work with one axis also and could speed up things.

2 Likes

First of all, a big thank you to the original poster! This is an excellent development tool that gives anyone with VR equipment a great idea for quick editing. I’m just wondering if there’s an integrated package or compressed package available for it, as I have absolutely no knowledge of coding. Anyway, thank you so much again!

1 Like

First of all, thanks!

Second, I got you :+1:

I compiled everything and packaged it up as a 1.0 release which you can grab here:


Download the zip file and extract (circled in red on the below screenshot), then just run the installer like any other program.

Should be good to go, but let me know if you run into any issues and I’ll see if I can help.

1 Like
  1. This is a great idea!
  2. I’m kicking myself for not having thought of it originally.
  3. I’ve moved this to the top of the ā€œto-doā€ list for the next release.
2 Likes

Thanks to all for the feedback and support thus far.

Happy to share v2.0 with everyone.

I’m debating if i should look into adding support for The Handy next, if there’s interest, lmk!

vFAPS 2.0 - Updates & New Features

Recording & Input :tada:

Motion-Drive Recording

Controller movement drives video advancement instead of recording against real-time playback. Move slowly for complex sections, fast through simple ones. One full stroke cycle advances video by a configurable amount of time.

Realtime Stabilization Pipeline

Per-axis 6-stage signal processing: spike rejection → One Euro adaptive filter → slew-rate limiter → jerk limiter → deadzone → hysteresis. Off/Light/Medium/Heavy presets with auto-scaling for rotation vs position axes.

Playback & Output :tada:

OSR2/SR6 Output Engine

Real-time funscript-to-hardware pipeline: 100 Hz dedicated output thread with sub-millisecond timing precision, monotone Catmull-Rom spline interpolation, async serial writer, non-blocking I/O.

Per-Axis Range Limits

Min/max sliders per axis in the output panel to constrain device travel with a global range scaler that applies on top of per-axis limits.

Device Save/Load

Connected device settings (port, baud, ranges) persist to JSON config file.

Output Tuning Controls

Adjustable update rate (50–200 Hz), lookahead compensation (0–20 ms), smoothing chase filter, spline/linear interpolation toggle, optional I parameter with configurable overlap.

Pattern Library :tada:

Save Selection as Pattern

Right-click a timeline selection to extract and normalize it as a reusable .fspattern file. Multi-axis patterns preserve all recorded axes. Right-click to rename, edit tags, or delete.

Pattern Browser

Dockable panel with mini waveform thumbnails, text search, and tag-based filtering with clickable tag pills.

Drag-and-Drop Stamping

Drag patterns from the library onto the timeline to inject them at any position. Ghost preview during drag.

Media Library :tada:

Folder-Based Media Browser

Dockable panel that scans a selected folder for videos and their companion funscript files. Persistent folder selection across sessions.

Auto-Detection of Funscripts

Automatically finds companion funscripts using the standard naming convention (e.g., video.surge.funscript, video.twist.funscript).

Per-Video Axis Indicators

Colored pills per video showing which axes have scripts available for a video.

One-Click Load

Double-click a video to load it with all associated funscripts and project files automatically.

Lookahead Preview :tada:

Floating Preview Window

Second muted mpv instance shows the video frame N milliseconds ahead of the current playback position. Like reading ahead in sheet music.

Adjustable Offset

Slider to control how far ahead to preview (configurable ms).

Video Player & Transport :tada:

Fullscreen Mode

Borderless fullscreen with translucent transport overlay on mouse movement. Auto-hiding cursor. Exit via Escape or double-click.

Repeat / Loop

Toggle repeat for continuous playback.

A-B Loop

Set loop points for a specific section of the video..

Other

Assorted enhancements, bug fixes, and improvements

1 Like

vFAPS Development Roadmap

Timing on the below is all TBD and based on community feedback and interest. I’m also open to other ideas, suggestions, and improvements. If you have an idea, lmk!

  • ML Vision Script Assist
    Machine Learning vision tracking to assist with movement translation of VR controllers to onscreen target similar to ā€œauto-aimā€ assist in FPS video games

  • AI AutoScript
    Use GenAI to automatically generate a funscript from a video, no hands required

  • The Handy Integration
    Integration with The Handy via connection key to keep things simple for regular/new users

  • Timeline Editor Enhancements
    Additional tools and features to further build out the functionality and usefulness of point based timeline editing and scripting

  • Video Player Updates
    General updates in addition to adding support for playlists

  • Output Engine Enhancements
    Updates, enhancements, and improvements

  • Funscript Remixer
    1-click remixer for funscripts by segment/action using similarly tagged action patterns from the Pattern Library

  • Lua & Custom Plugins
    A standard interface and architecture for creating custom add-ons / integrations / themes with simple install (possibly a shared 1-click Plugin Library within vFAPS)

1 Like

This is awesome! I’ve been tinkering with it for a while, but I just can’t seem to get the controller position right. I’ll need to spend some more time figuring it out. Oh, and by the way, I’m using a Pico Neo 3, and it seems to be pretty well-supported.

1 Like

Thank you! Glad to hear it! <3!

vFAPS 2.1.0

Time to get… ā€œHands-onā€ :wink:

The Handy

vFAPS Handy Integration: It’s here! v2.1.0 has added 1-click integration with The Handy into the vFAPS Output Engine. Works with video and funscript playback. Preliminary WIP integration with Motion Drive.

Video Player

Updates & Enhancements: UI/UX improvements and playback updates including A-B segment loops and video repeat functionality.

Output Engine

Improved Accuracy & Smoothness: Aligned output logic with MFP by implementing standard rounding, float passthrough, and a +0.75ms bias to eliminate systematic under-targeting and ensure smooth motion blending.

Motion Drive

Bug Fix: Resolved a shutdown race condition that could crash the application by rewriting closeEvent to strictly terminate threads and timers before attempting UI exit or file saving.

v2.1.0 is currently available in Early Access on Patreon

OK here is another idea or something to think on. As long as you dont have the pinpoint turning or endpoints you can not call it a script. At least I dont. So how to snap in the endpoint? Button press on controller or something like that. Up oh to far back button press?

1 Like

It is working perfectly with my antique OG Vive controllers.
This seems perfect for adding in the twist axis to my existing library in a simple way, now I’ve built an SSR2. One pass and I’d probably be sorted for personal use at least, frame perfect precision doesn’t matter so much on that axis to me, so it doesn’t matter if its someone as unskilled as me doing the input.
Thanks very much.

1 Like

This was exactly the use case I had in mind when I started developing it! Glad to hear it!

vFAPS 2.2 (Beta)

Version 2.2 (Beta) introduces a major upgrade to how you discover, navigate, and ā€œworkā€ with video in the new Plex-inspired Media Browser.

Key Features

  • Fullscreen gallery - for easy immersive browsing
  • Video thumbnails - that surfaces ā€œcontextā€ at a glance :smirking_face:
  • Heatmap displays - see the activity for each video
  • Favorites - star frequently viewed videos to pin them to the top row
  • Custom Tagging - create your own categories
  • Filtering - Sort and search instantly using filters based on your tags

Preview:

vFAPS-Media-Browser

Sorry for the potato quality, there’s an 8 MB size limit on uploads. :frowning:

HQ video preview on the vFAPS version features page:

Not sure you should reinvent Stash. Hard to outdo. You should stay with your fresh new approach scripting engine. Dont forget to pinpoint the turning points they are essential.

Not trying to reinvent anything,just trying to improve the experience as a whole as I’m able.

Can you clarify what you mean by ā€œDont forget to pinpoint the turning points they are essential.ā€? Not sure I follow what you mean with that.

Right, just meant you are on a nice path. The Medialib one is not so interesting.
The turning point or endpoint is the point the motion changes direction or stops or changes speed. So if you are able to set the point by controller when the hand reaches the top, then another point when the twist of the hand stops and goes down again, then your App is getting interesting. If not, its still going through every point and moving it to the right place which takes as long as just scripting in OFS. Those points need to be set accurately or the script feels off.
Right now your app works for someone dancing but not for precise movement. If thats the intention fine but I think you could accurately set those point by trigger or button.

1 Like

Ah, I see what you’re saying. And yes, fully acknowledge that it’s a current weakness.

I’ll dig back into this, hopefully should have some good news in not too long.

1 Like