• Hi Guest!

    We are extremely excited to announce the release of our first Beta1.1 and the first release of our Public AddonKit!
    To participate in the Beta, a subscription to the Entertainer or Creator Tier is required. For access to the Public AddonKit you must be a Creator tier member. Once subscribed, download instructions can be found here.

    Click here for information and guides regarding the VaM2 beta. Join our Discord server for more announcements and community discussion about VaM2.
  • Hi Guest!

    VaM2 Resource Categories have now been added to the Hub! For information on posting VaM2 resources and details about VaM2 related changes to our Community Forums, please see our official announcement here.
StrokerSync

Plugins + Scripts StrokerSync

Download [<1 MB]
This update adds independent pause controls, finger+penetration blending, full Timeline Curve Learning with smart re-recording, and fixes a bug that caused vibration to keep running after leaving the clitoral zone.

Developing, debugging and updating plugins takes time. Your support pays for my coffee & the time it takes to keep the plugins running smoothly.
Support me on ko-fi


New: Independent Pause Controls

The old single "Pause Device" toggle has been split into two separate controls:
  • Pause Stroker — stops sending position commands to the stroker only. Vibration keeps running.
  • Pause Vibration — stops and silences the vibrator only. The stroker keeps running.
Useful if you want to temporarily mute one device without interrupting the other. Pausing vibration sends an immediate stop command to the device so it doesn't linger.

New: Blend Finger + Penetration

When both finger penetration and penis/toy penetration are active at the same time, the plugin previously picked whichever signal was deeper. There is now a Blend Finger + Penetration toggle on the Penetration tab.
When enabled, the two signals are averaged together instead of competing, giving a smoother combined feel during simultaneous stimulation.

New: Timeline Curve Learning

If your scene uses the VAM Timeline plugin, you can now enable Timeline Curve Learning on the Stroker tab. The plugin auto-detects Timeline in the scene — no setup or configuration needed — and records the stroke position
over one full animation loop. After that loop completes, it switches from velocity extrapolation to deterministic look-ahead using the recorded curve. This eliminates reversal overshoot entirely and keeps the device in perfect sync
at direction changes.

A status field in the UI shows what the plugin is doing: scanning, recording, or active. A log message confirms when the curve is ready.

If Timeline is not in the scene, nothing changes — the plugin works exactly as before.

Smart Re-recording

The curve automatically invalidates and re-records itself in three situations:
  • Clip change — you switch to a different animation in Timeline.
  • Animation length change — you add or remove time from the clip in the Timeline editor.
  • Drift detection — after editing keyframes, the live motion will diverge from the recorded curve. The plugin detects this automatically and triggers a fresh recording after a short sustained divergence.
There is also a Re-record Curve button in the UI for a manual reset at any time — useful right after you finish tweaking an animation and want to re-capture immediately without waiting for drift detection.

Bug Fix: Vibration Stuck On After Leaving Clitoral Zone

Several users reported that clitoral vibration would keep running even after moving the finger away from the zone and would not stop until the animation was paused or the plugin was reloaded.

The cause: when the finger left the clitoral zone, the last recorded intensity was never cleared internally — it stayed frozen at its final value. The vibration system saw a valid intensity every frame and kept sending commands indefinitely.

Fixed. Intensity is now explicitly cleared the moment the finger leaves the zone, and the stop command fires correctly on the next update.
First of all I would like to sincerely thank the people who joined my patreon. It really means a lot to me that people are actually willing to support me and the work I have done.

Now, to the update:

Actually I am too lazy to write all the updates here. But I have added functionality for:

Clit stimulation connected to vibration.
Fingering (middle- & index-fingers)
Reorganized the UI
Added a quick control floating window
Minor optimizations and improvements

Give it a go and let me know what you think
So, it's been a while since the last update now but I am confident that you will find it worth the wait.
Again, this has only been tested with a Handy 2 Pro with some overclocking so I cannot guarantee that it will be as great for other devices,
but to me, this feels like a brand new plugin.

I have rewritten several parts of the plugin. Now I would say the recommended starter settings would be:
Send Rate: 20Hz
Padding: 10-50ms depending on how rough you want the strokes.

You will need to play around with the settings to find the feeling you want.
I have also implemented alooooot of new features, mostly under the hood.

Blowjobs has been fixed and should now work, regardless of what gender is recieving.
I have tested it to make sure that it works Male/Female, Male/Male, Futa/Female, Futa/Futa.
You will have to manually select penetrator and reciever as it still defaults to Male for penetrator and female for reciever.

I have also added a dropdown under the penetrator where you can select a sex toy node, which will then override the above penetrator setting.
In other words, dildos and such works now.

The strokes should be overall way smoother than before and even more synced with the movements.

If you are using a scene where the persons use VAMTimeline, make sure to enable the Learn from Timeline checkbox, as it gives an even smoother experience.

I have also optimized the "turns" (where the movement changes from in to out and vice versa) so these should be alot less jerky/stuttery. Along with that
there is now a built in threshold that determines if a new position should be sent or if the plugin just keeps the old one, which is set dynamically depending on
how big the movement is. This makes sure that smaller "tease"-penetrations still gets translated well to the stroker, and larger moves will ignore the extra positions so
the stroke feels more natural/less jumpy.

As I said, overall this should be a huge improvement and I hope you guys like it.

On a second note, this will probably be the last update for the plugin. The patreon has recieved zero and null love and development does take up way too much time
for me to continue doing it just for fun, and I dont really like the idea of charging for the plugin since I want everyone to be able to enjoy it regardless of wealth. With that
said, don't expect any bug fixes and so on to be released any time soon.
I messed up when creating the .var file for update v4.

It should now be fixed and the plugin is working again.
StrokerSync Update v4 — Signal & Connection Improvements
Sync & Responsiveness

Position extrapolation: Instead of sending where the penetration IS, the plugin now sends where it WILL BE at the end of the interpolation window. This lets the device glide smoothly across the full LinearCmd duration instead of staircase-jumping between positions. At 20 Hz, each command gets ~55ms of uninterrupted movement — dramatically smoother than the old approach of interrupting every 33ms with a new target.
Adaptive send rate: Command frequency now scales dynamically with motion speed. Fast strokes use the full configured rate; slow/idle movement backs off to 5 Hz, reducing unnecessary Bluetooth traffic. The "Send Rate" slider now sets the maximum rate. Default lowered to 20 Hz to complement extrapolation (fewer commands = longer glides = smoother).
Accumulator-based timing: Replaced the simple timestamp check with a time accumulator that carries leftover frame time forward. The average command rate now stays mathematically on-target regardless of frame rate fluctuations. Capped at 2x interval to prevent burst-sending after alt-tab or loading stalls.
Predictive LinearCmd duration: The device interpolation duration is now calculated from the actual time until the next expected command, plus a small user-configurable padding. Previously a fixed value, this caused the device to either sit idle between commands (at low rates) or never complete a movement (at high rates). The "Device Smoothness" slider is now "Duration Padding" (default 10ms).
Source-space deadband: Position deadband is now applied before stroke zone mapping. Previously, a compressed stroke zone (e.g. 0.3–0.7) inflated the effective deadband by up to 2.5x.
Penetration hysteresis: The "no penetration" threshold now uses hysteresis (stop at 0.005, resume at 0.02) to prevent the device from rapidly toggling on/off when the tip barely touches the target.

Tracking & Filtering

Rolling calibration: The penetration range now adapts continuously during play without manual intervention. New extremes expand the range instantly; if the observed range narrows (position change, different angle), the stored range slowly contracts over ~45–60 seconds. Pauses and cutscenes freeze the range. This eliminates the need to open the menu and recalibrate after changing positions. Enabled by default, can be toggled off for full manual control.
Conditional spike rejection: The median filter no longer runs unconditionally. During smooth motion, raw samples pass through with zero added latency. The median only engages when a sample deviates beyond a spike threshold, limiting the 1-frame latency penalty to actual physics glitches.
Asymmetric EMA: The noise filter now smooths direction-dependently. Increasing penetration depth gets 4x less smoothing for snappy attack feel; withdrawal uses full smoothing for softer release.
Pelvis-blended vaginal direction: Vaginal canal direction now blends 70% trigger-based vector with 30% pelvis bone axis. This stabilizes depth tracking during extreme poses where the labia/vagina triggers alone give a poor canal estimate. Falls back to trigger-only if no pelvis bone is found.

Connection & Reliability

WebSocket fragmented frame support: TinyWebSocket now handles continuation frames (opcode 0x0) per RFC 6455 §5.4. Control frames (ping/pong) are processed immediately even mid-fragment.
Callback TTL cleanup: Pending Buttplug protocol callbacks now expire after 10 seconds. A sweep runs every 5 seconds to prevent unbounded memory growth during long sessions if the server silently drops responses.
Sampled LinearCmd error logging: Every 100th position command now registers an error callback. This catches persistent device errors without flooding the callback system (~one check every 3 seconds at 30 Hz).
Clean client disposal on reconnect: The old ButtplugClient is now explicitly disconnected before creating a new one during auto-reconnect, preventing ghost receive threads from accumulating.
Component cache validation: Cached rigidbody/transform references are verified every 2 seconds. If an atom reload (clothing change, appearance preset) silently destroys a component, the cache is rebuilt immediately rather than waiting for a full null-out failure.

Added Hand tracking for jerking off or getting jerked off. Have not had time to test it 100% so it might be buggy.
Save Settings:


  • "Save Settings as Default" button saves all tuning values (Device Smoothness, Send Rate, Stroke Zone, Noise Filter, Detection Radius, auto-cal settings) to a config file
  • Saved defaults are automatically applied on every plugin load, across all scenes
  • Scene-specific overrides from VAM's built-in save system still take priority

UI Improvements:


  • Auto-Calibrate button moved to the very top of the motion source panel — no scrolling needed
  • Live penetration readout display positioned directly under the button for immediate feedback

Auto-Calibrate on Scene Load:


  • New toggle: "Auto-Calibrate on Scene Load" — when enabled, calibration starts automatically after a configurable delay
  • New slider: "Auto-Cal Delay (seconds)" — range 3–30s, default 10s, gives the scene time to start its animation before calibrating
  • Both settings persist via "Save Settings as Default"

ADDME.cslist Location:


  • Moved to the root of the plugin folder for faster access when loading manually
  • Source files organized under src/ subdirectory

Ping/Pong Fix (Connection Stability):


  • Fixed disconnects and unstable connections to Intiface.
  • Also added Buttplug protocol-level Ping messages
Changed the tracking from gender-based to oriface/penis-based. Now you can enjoy Futa models as both penetrator and/or reciever atoms.

Changed speed limiter + EMA with a 3-sample median filter for smoothing. Removes single-frame physics spikes with zero amplitude compression, then let the device handle physical smoothness.

All in all the experience should be way smoother now than with the old filtering.
Back
Top Bottom