Hey everyone!
I've been working on a project for a while and finally feel like
it's ready to share. It's called Shockwave — an all-in-one e-stim
signal generator, funscript player, and remote control app for
Linux.
Why I built it: I love what's out there — Restim is fantastic for
tri-phase, Howl has great audio support, MultiFunPlayer does
amazing things with device sync. But I'm on Linux, and I wanted
something native that brought everything together in one place
without switching between apps or dealing with compatibility
layers.
So I built the tool I wished existed.
---
What It Does
Signal Generation — Full tri-phase with 24 animated motion
patterns, basic waveforms (sine, square, triangle, saw), and
pulse patterns. Real-time oscilloscope display.
Funscript Playback — Here's something I'm pretty happy with:
velocity-based intensity. Instead of mapping position directly to
output, it maps movement to intensity. Fast motion = strong
signal, stationary = silence. For e-stim this feels way more
natural to me since sensation comes from the change, not the
position. Your mileage may vary but I love how it feels.
Batch Funscript Conversion — Select a whole directory, convert
everything to tri-phase patterns in one go. Generates prostate
patterns, motion axes, all the good stuff. Great for processing a
big collection.
Media Player Sync — Connects to VLC, MPC-HC, HereSphere (VR), and
Emby. Play a funscript and it automatically searches your video
folders to find and play the matching video. Fuzzy name matching
handles inconsistent filenames. Adjustable latency for
fine-tuning sync.
Remote Control — This is my favorite feature honestly. Full
mobile web interface — open it on your phone, enter a PIN, and
you have complete control. Transport, signal parameters, library
browsing, edging sessions. Emergency stop always visible. No more
awkward trips back to the keyboard.
14 Edging Modes — Mix of automatic (Tease & Deny, Random Torture,
Wave Interference, Breathing Edge) and interactive (Ride the
Edge, Manual Throttle, Edge Training). Signal when you're close,
the system responds. Session stats tracking.
Audio Library — Import WAV/FLAC/OGG/MP3, rate tracks, create
playlists, favorites. Basic but solid.
Safety Features — DC blocking, amplitude limiting, fade-in
protection, rate limiting. Spacebar = instant silence. The
waveform shows actual output.
---
What Makes It Different
The main thing for me was having everything integrated. Funscript
conversion, playback, video sync, signal generation, remote
control, library management — all in one window, all working
together natively on Linux.
The velocity-based funscript playback is also something I haven't
seen elsewhere and it makes a real difference for how scripts
feel (at least to me).
And the phone remote is just chef's kiss for convenience.
---
Install
Linux, Python 3.12+:
git clone https://github.com/Tuna-Toys/shockwave.git
cd shockwave
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
python -m shockwave
GitHub: https://github.com/Tuna-Toys/shockwave
Screenshots, full documentation, and user manual all there.
---
This has been a fun project and it's become my daily driver.
Figured I'd share in case others find it useful too. Happy to
hear feedback, bug reports, feature ideas — whatever.
Enjoy!
---



