ForgePlayer User Guide¶
Feature-by-feature reference for v0.1.23-alpha. If you're brand new, start at Getting Started and come back here when you need detail.
The guide follows the app's tabs. Four have their own dedicated page; About is small enough to cover right here, in Window layout below:
-
Library — your scene browser, how tiles are matched, and opening
.forgebundles. -
Live — what's loaded, device routing, the timeline, transport, fullscreen, and calibration.
-
Setup — audio device roles, monitors, and per-monitor crop.
-
Preferences — content preference, synthesis algorithm, haptic offset, and debug mode.
Window layout¶
The main control window has five tabs across the top:
- Library — your scene browser. Click a tile to activate.
- Live — what's currently loaded, what's routing to which device, the timeline, transport, and scene-volume slider.
- Setup — physical-device assignments (which audio device handles which role, which monitor each player goes on, and per-monitor crop
- crop position).
- Preferences — content preference (sound vs funscript), synthesis algorithm, haptic offset.
- About — version, credits/attribution for the projects ForgePlayer is built on, links to docs and source, and update status (see Checking for updates below).
Top bar (right side): ⚑ Mark, Debug toggle, Export…, Clear.
Checking for updates¶
A few seconds after launch, ForgePlayer quietly checks
forgeplayer.app for a newer release. If one's available, an "Update
available" dialog offers Download (opens forgeplayer.app in your
browser) or Not Now (dismisses that version's nag — a later
version still prompts).
The About tab also has a manual Check for updates button with its own status line, for checking on demand — it always reports the live status regardless of any version you've dismissed.
Supported e-stim hardware¶
ForgePlayer drives e-stim by sending an audio signal to a stim power box. Each box plugs into its own audio output — a USB sound-card dongle (e.g. a VENTION USB sound card; any standard USB audio output works), kept separate from your speakers. You assign which dongle handles each role in Setup → Audio device roles:
- Haptic 1 (main stim) carries the optional three-phase / stereostim signal.
- Haptic 2 (optional) carries an optional prostate signal to a second box.
So a full e-stim setup is one or two USB audio dongles + one or two stim boxes. Match the synthesis algorithm (Settings → Generation algorithm) to your box:
Three-phase / stereostim boxes — use Pulse-based¶
Modern, audio-driven hardware:
Classic boxes — use Continuous¶
Not yet supported¶
- Coyote (DG-Lab) — Bluetooth-based; Bluetooth devices haven't been tested yet.
Always Calibrate a box (Live tab) and start low before you press play — set a comfortable level on the box's own knob first.
Sessions¶
Top bar shows the current session name. ForgePlayer auto-saves session state (which scene is loaded, which monitors / devices are assigned) on changes. Re-opening ForgePlayer restores the last session unless you explicitly start a new one via the Library scan.
Known limitations (v0.1.23-alpha)¶
- Control panel sizing on monitor change — moving the control window to a smaller secondary screen can leave it taller than 720 px. Cosmetic. Post-alpha fix.
- Click +10 s while stopped — timeline jumps to 0 instead of staying at the seeked position. Post-alpha fix.
- Empty Live tab when nothing is loaded — currently looks empty; hint text coming.
- Single-decoder for video walls — currently three independent decoders synced via mpv time-pos. Frame-perfect single-decoder rendering is a future feature for true video-wall use cases.
- macOS multi-monitor is unverified — macOS playback was rebuilt in v0.1.19-alpha on libmpv's render API, and single-display use is verified end to end on Apple Silicon. Two or more displays on a Mac has not been tested; the mirror path is exactly what it exercises, so report anything odd there.
- HDR passthrough disabled — the HDR-on-Windows renderer
(
gpu-next/ libplacebo) crashed on teardown, so playback uses the stablegpurenderer. HDR10 content can look over-bright on an HDR-ON display; turn Windows HDR off for now. Re-enabling awaits an upstream fix.
See BACKLOG.md (on GitHub) for the full roadmap.
Troubleshooting¶
A stim port is silent / reads "(unavailable — reselect in Setup)". The saved audio device was unplugged or its Windows name changed (common after a reboot or a USB re-plug). Open Setup → Audio device roles and reselect the device, then Refresh devices. ForgePlayer keeps the port silent rather than routing e-stim to your speakers. If you only have one stim box, set Haptic 2 to "— not set —".
I hear e-stim through my computer speakers. Fixed in v0.1.18-alpha — that was the release which closed it. A stim stream now opens only on a device assigned to Haptic 1 or Haptic 2, and the haptic side stays silent when neither is set, instead of falling back to the system default output (which, once displays became selectable, could be a monitor or TV). On v0.1.18-alpha or later this should not occur: check that Haptic 1 / Haptic 2 point at your USB dongle (not "Speakers"), that Scene audio is a different device, then reselect and Refresh devices — and please report it if it persists.
Sound plays but there's no picture. Largely fixed in v0.1.20-alpha — update first. If it persists, open Setup → Graphics, tick Use the default graphics adapter, and press Launch Players again.
ForgePlayer pins video to an NVIDIA GPU when it detects one, because mpv's teardown hits a confirmed, unfixed crash in AMD's D3D11 driver. Detection reads the Windows display-adapter list, which reports an NVIDIA GPU whether or not it is actually usable — and pinning the choice also removes the player's fallback to a different one. When that happens, video output never starts and audio carries on alone. The checkbox restores the fallback.
If that doesn't do it, check Setup → Playback screens: a ticked monitor that is switched off or unplugged still gets the video window, and you will never see it.
HDR video looks washed-out or over-bright. HDR passthrough is disabled for stability. Turn Windows HDR off for the playback monitor (Settings → Display → HDR) while testing.
Bluetooth output is glitchy / laggy. Bluetooth outputs are selectable and play fine for scene audio. For stim, use a wired / USB dongle: A2DP re-encodes audio with a lossy codec and for stereostim that waveform is the drive signal, plus Bluetooth latency drifts rather than holding steady.
The app disappeared mid-playback, or when closing a player. Both crashes were fixed in v0.0.16 — the second one was the crash reporter itself, which walked every live thread's stack on each of the hundreds of harmless exceptions mpv raises per session. If you still see a disappearance, grab the crash log below and file an issue; it now records only the thread that actually failed, so it's short and worth attaching.
Filing a good bug report. Turn on Debug (top bar) before reproducing, then attach:
~/.forgeplayer/debug-stream-*.jsonl— the event log for that session~/.forgeplayer/faulthandler.log— native crash stacks, if it crashed
Where files live¶
- Per-scene pin files —
~/.forgeplayer/pins/*.forgeplayer.json - Native crash log —
~/.forgeplayer/faulthandler.log - Library catalog index —
~/.forgeplayer/catalog.json - App preferences —
~/.forgeplayer/preferences.json - Library thumbnails (cache) —
~/.forgeplayer/thumb_cache/*.jpg - Session state —
~/.forgeplayer/<session-name>.session.json - Debug logs (when enabled) —
~/.forgeplayer/debug-stream-*.jsonl - Stim recordings (when env var set) —
<your-chosen-dir>/stim-*.wav
Where to ask¶
- Bugs / behavior issues — open an issue in the repo.
- Architecture questions — read
docs/architecture/(on GitHub) first; that's the dev-facing set, deeper than this guide.