Week of June 1–7: Building Sanctuary, a Spatial Sound Bath for Vision Pro

From empty repo to TestFlight in days — building Sanctuary, a visionOS sound bath app, and learning that ambiance is engineering.

Some weeks you spread yourself thin across a dozen repos. This week I went the other direction and tunneled hard into a single idea: Sanctuary, a spatial sound bath app for Apple Vision Pro. It went from an empty repo to a TestFlight-ready v0.3.2 in a matter of days, and most of the interesting problems weren't audio at all — they were about making a 3D space feel like somewhere you'd actually want to sit and breathe.

The first real battle was the environment. I cycled through a lot of scenery before it clicked — a candlelit temple, then real Sponza architecture exported glTF→USDZ through Blender, IBL-lit with a warm HDRI, and finally a purpose-built zen_studio room baked down to a lean 22k triangles. Lighting in visionOS is unforgiving; image-based lighting with proper shadow receivers is the difference between "3D model floating in void" and "room you're sitting in." I spent an embarrassing number of commits just getting the viewer grounded — seated dead-center on a floor pillow, POV dropped about a foot, facing the table. Presence lives in those inches.

With the space settled, the experience layer came together fast. Sanctuary now ships with four guides, four session types, and five lengths, with per-session-type lighting that shifts the room's mood — bright and open for a Wake Up, dim and quiet for Sleep. The voiceover work was its own rabbit hole: a full Sarah VO track (19 clips), then a switch to AImee — a calm British "Tranquil ASMR" voice — plus box-breathing guidance pacing you through a clean 4-4-4-4. I added spatial crystal singing bowls positioned around the listener so the sound actually moves through the space instead of sitting flat in your ears.

The unglamorous-but-critical work was shipping infrastructure: a visionOS layered app icon, fastlane lanes wired up for TestFlight, the export-compliance flag set, and the build artifacts properly gitignored. That's the stuff nobody sees but everybody needs before a single tester can install. By v0.3.2 I was chasing the long tail of polish — fixing below-floor grounding glitches and a constant voiceover stutter that only shows up once everything else is working well enough for you to notice it.

The throughline this week: ambiance is engineering. A meditation app that feels calm is the product of a hundred deliberately un-calm technical decisions about geometry, lighting, audio spatialization, and where exactly to plant the user's point of view. Next up is broadening the soundscapes and getting it into more testers' headsets. If you've got a Vision Pro and want to try it, reach out.

Subscribe to Brandon Wilson

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe