forgegen analyses the rhythm, phrase structure, and energy of any audio
track, then writes a phrase-aware .funscript ready to drive
any haptic device. Phrase-level mode shaping, comparison-strip preview,
stable beat tracking — and a clean handoff to FunscriptForge for refinement.
Latest release · Free · No Python required · Open source
Pre-release software. Provided as-is, without warranty of any kind. Use at your own risk.
A quality first-draft funscript from any audio track — in under a minute.

Each phrase is classified — tease, steady, fast, edging, break, chaotic — and the curve is sculpted accordingly. Edging builds 50→100, breaks go quiet, teases narrow. Not a uniform beat-thump.

PLP-based tracker holds the beat through tempo changes and weak downbeats. Locked-BPM mode for tracks with a known fixed tempo. Sub-beat density: 1, 2, 4, or 8 actions per beat.

Every Style / Stroke-density / Tone option rendered as a velocity-coloured curve thumbnail with synced ◀▶ scroll and a 5-step zoom ladder (4s → 16s → 1m → 3m → 10m). Pick the option that fits before exporting.

Save writes the .funscript plus an .analysis.json sidecar — chapter proposals, source metadata, generation parameters. FunscriptForge auto-loads it on funscript open. Generate fast, refine deliberately.

Mean position, range, average velocity, p90 velocity, peak velocity — the same metrics FunscriptForge surfaces. Compare a generated curve to a gold-standard reference at a glance.

Runs on your machine. No cloud, no account, no telemetry. Your audio and funscripts never leave your computer. CLI and importable Python library for batch and pipeline workflows.
A four-step pipeline from raw audio to phrase-shaped funscript.
Detect the beat grid, BPM, phrase boundaries, and energy envelope. Embedded MP4 chapters or a chapters.json sidecar feed into the structural pass.
Label each phrase: break, tease, slow, steady, fast, or edging. Auto-tone derives a per-phrase tone from energy and density signals.
Sculpt the motion curve per mode. Pick a Style / Stroke-density / Tone combination from the comparison strip — or accept the auto pick.
Click Save. Validated .funscript JSON lands in your chosen folder, alongside a .analysis.json sidecar that FunscriptForge picks up automatically.
Standalone app — no Python, no ffmpeg install, no dependencies.
| Minimum | Recommended | |
|---|---|---|
| OS | Windows 10 (64-bit) · macOS 10.15 Catalina · Linux x86-64 | Windows 10/11 · macOS 12+ · Ubuntu 24.04 LTS |
| RAM | 4 GB | 8 GB or more |
| Disk | 1 GB for the app plus room for your media and outputs | SSD recommended for batch runs |
| Display | 1920 × 1080 | 2560 × 1440 QHD |
| Media length | v0.1 expects ≲10-minute tracks; long-form scaling is on the v0.5 roadmap. | |
| ffmpeg | Bundled — no install required | |
| Python | Not required — standalone installer | |
Small, focused desktop tools that fit together. forgegen generates the draft; the others edit and assemble.
Structure-aware funscript post-processor. Picks up forgegen's analysis.json sidecar automatically — refine the generated draft per phrase, preview against the source, then export.
Concatenate many finished clips — video plus every funscript channel — into one long combined output. Chapter markers, fade-to-black joiners, per-section overlays, heatmap.