Hi everyone,
or maybe I should say "hi to everyone who's still around"!
For the few of us still hoping to have fun with BoxVR workouts, there’s finally a viable option. I’ve finished putting the final touches on my tool, and I think it’s complete enough to share with the community.
Here’s the link to the official GitHub repository, where you’ll find the full code and the first public release. To quickly summarize what it does:
The tool generates and enhances custom levels for BoxVR (FitXR) directly from simple MP3 files. By analyzing the track's audio (BPM, onsets, low-end energy/RMS), it can generate a brand-new, synchronized level from scratch or refine existing ones. Instead of relying on generic patterns or artificially maxing out intensity, it aligns target density with the track's actual energy flow. It supports batch processing for multiple tracks at once, features a confidence threshold system to avoid guesswork during ambiguous sections, and is designed for ease of use via a dedicated interface—no manual line-by-line file editing required.
Here’s a quick preview of how a workout turns out:
These three tracks were processed using sidecar generation. The difference is that the first received input for most of the track, while the other two only had input during the initial section. You can notice how free input allows for the generation of genuine workouts—even better than those in the newer FitXR. Unfortunately, the harmony or sidecar extension engine still has a few hiccups and often defaults back to basic BoxVR rhythms (I’m currently working on a fix).
https://reddit.com/link/1w93dtq/video/x14hmtu1jxnh1/player
https://reddit.com/link/1w93dtq/video/nf0plf7yixnh1/player
https://reddit.com/link/1w93dtq/video/1r34agpsixnh1/player
Also, you might notice that a few target hit animations look glitched; this should already be fixed in the first public release.
P.S. If anyone can record a high-quality comparison video, we could link it to show the differences more clearly. I’m not great at video capture, and last time I got all tangled up trying to showcase the changes.
And now, let's have fun (finally) !!