Hi HN, I’m a new developer with Aphantasia (no mental imagery).
A side effect of this is that regaining focus after a distraction takes me a long time (the "23-minute lag"). I tried standard binaural beats, but I discovered a technical flaw: streaming compression (AAC/MP3 on Spotify/YouTube) often muddies the specific phase differences required for effective entrainment.
I realized that to get effective entrainment, I needed lossless audio. Since I couldn't stream lossless easily, I decided to generate it locally. I built Phantas – a browser engine that uses the Web Audio API to generate raw sine waves in real-time on the client side. This ensures mathematical precision with zero compression artifacts.
For audio it uses Native AudioContext for dual-oscillator generation (Left/Right channel split).
For visuals I pair the audio with a 490nm Cyan strobe. The hardest part was syncing the visual flash (using requestAnimationFrame) to the audio pulse without "drift" caused by JavaScript's event loop latency.
I built this primarily for myself. Subjectively, it has reduced my "ramp-up" time from ~20 minutes to about 5 minutes.
I’m releasing the generator for free (no login) to see if this works for others or if it's just my specific brain chemistry. I’d love feedback on:
- Audio/Visual Sync: Does the strobe feel tight on your specific browser/refresh rate?
- Intensity: Are the default 14Hz flickers too aggressive?
- Allow enter/leave Driver mode even while sound is playing
- Hide the "tab to minimize" after several seconds
- Allow customize the pattern. Now it's hard coded perlin noise animation, before it was blank screen white/black without texture.
- Cannot enter email address to unlock private beta while sound is active (chars getting deleting while typing).
- Loses Focus rapidly on multi monitor setup, even when not touching the browser. It seems it's sensitive to focus/unfocus events, not sure what's the exact cause. PS: Regular full screen videos form for example youtube never lose fullscreen with my browser.
- Fullscreen does not full whole screen, there's black border left and right, it seems you're animating a square, not the full landscape rectangle.
- The jump from gain 1 to gain 2 is quite big, so i have to reduce the volume on the system sound, that's quiet annoying, since it's for all browser tabs then / even the whole system, depending on mixer settings.
And several more bugs, i do not remember them all.
One important question, that comes in mind all the time: Is this project vibe coded? Don't get me wrong, i also startet to begin vibe coding my projects, but it seems there's a little mess in the code (without looking into the obfuscated code).