Quick answer
What changed in the Tihna 1.3.0 audio engine?
Version 1.3.0 closed two open audio questions and shipped Morning Energy as a fourth program alongside Sleep, Calm and Focus. The sub-octave drone was proven not to leak into the spatial-motion path, with a measured left/right difference of about −278 dB — numerical zero. A real per-program critical-band notch now runs on the ambient bed only, one ERB wide: 15.2 dB at 494 Hz for Focus, with 0.27 dB spill an octave away.
Key Takeaways
- Version 1.3.0 closed two open audio questions and shipped Morning Energy as a fourth program alongside Sleep, Calm and Focus.
- The sub-octave drone was proven not to leak into the spatial-motion path — measured left/right difference is ≈ −278 dB (numerical zero).
- A real per-program critical-band notch now runs on the ambient bed only, one ERB wide, centred on the running carrier — measured 15.2 dB dip at 494 Hz for Focus with 0.27 dB spill an octave away.
- Morning uses 18 Hz beta in Weeks 1–2 and 21 Hz beta in Weeks 3–4 with a 392 Hz carrier — 15 minutes, headphones on.
- No audio files were added, removed or altered in this release. Every change is Swift.
Version 1.3.0 (build 39) is the release where the audio engine stops needing footnotes. Two questions had been open since the last audit — one about a sub-octave drone that might have been leaking into the spatial-motion path, and one about a promised critical-band notch that had been described but never proven in code. Both are now closed with measurements, not adjectives. This post explains what that means, in plain English, and what changed at the same time.
What actually shipped
Every session in Tihna is more than a pair of tones. Underneath the binaural carrier pair are three quiet supporting signals — a sub-octave drone at half the carrier frequency, a slow ± 0.4 dB drift that keeps the beat feeling alive rather than mechanical, and an optional ambient bed (rain, ocean, birds) with spatial motion so the room breathes around your ears. That’s five signals sharing your headphones. The job of a good audio engine is to make sure they support each other and never fight each other.
The 1.3.0 release focuses on that last part: proving nothing accidentally fights the beat.
Blocker 1: proving the drone can’t leak into the spatial-motion path
The Sleep program uses a 294 Hz carrier and a sub-octave drone at 147 Hz. The ambient bed uses a low-frequency band split with a corner at 160 Hz for its spatial motion — meaning anything below 160 Hz that passes through the ambient bus gets subtly panned left and right to create the sense of space. 147 Hz sits below 160 Hz. So the question was: if the drone ever passed through the ambient bus, it would get panned, its left channel would no longer match its right channel, and it would become an unintended second binaural beat fighting the intended 6 Hz theta. Subtle. Hard to hear directly. But measurable.
The answer, once traced through the code, is that the drone doesn’t pass through the ambient bus at all. It’s a term inside the tone render loop, added as the same scalar to both the left and right channels, and the tone node wires straight to the main mixer. It never touches the ambient bed. The measured left-minus-right difference on the drone signal is approximately −278 dB. That’s numerical zero: the two channels are bit-identical.
What this means for you: the theta beat you hear during Sleep is doing exactly one thing, at exactly the rate on the label, with no shadow beat underneath it.
Blocker 2: a real critical-band notch, measured
The second open question was about the ambient bed. When rain, a brook or bird recordings play alongside a session, the bed can happen to carry a lot of energy right at the carrier frequency — for Focus that’s 494 Hz, for Calm 350 Hz, for Sleep 294 Hz, for Morning 392 Hz. Even at Tihna’s researched ambient ceiling of 29.85% loudness, energy at the carrier frequency can mask the beat perception because your ear resolves nearby sounds inside the same critical band.
The fix in 1.3.0 is a parametric equaliser band placed on the ambient bus only — never on the tone bus — centred on whichever program is running, exactly one ERB wide (one “equivalent rectangular bandwidth” — the ear’s natural frequency resolution at that pitch), with the notch depth solved per bed-and-program combination rather than a flat number. Some beds already have a natural dip at the carrier and need very little notch. Others need more. The engine now measures each and applies exactly what’s needed so all 44 combinations of bed and program hit the same beat clearance.
The measurement for Light Rain under Focus: a 15.2 dB dip at 494 Hz with only 0.27 dB spill an octave away. Beds with no energy at the carrier pass through bit-identical — no unnecessary processing.
Every session slot, verified end to end
The full verification pass across all eight session slots reports carriers within ±0.000 Hz of target, beats exactly at the intended rate, drones at −14.00 dB identical in both ears, and no monaural amplitude modulation above −178 dB. There is also now a hidden diagnostics screen — tap the version row in Settings five times — that shows live bus values, runs an automated ear-isolation test, and can export a 10-second WAV of the exact tone your session is producing right now. That’s there so nobody has to trust marketing copy: you can see the numbers on your own device.
A small quality-of-life addition: setAmbientVolume now clamps and logs out-of-range requests, and a one-time banner warns when the audio route is Bluetooth — because most Bluetooth audio codecs collapse stereo to mono at low bitrates, and binaural beats need real stereo separation to work.
Morning Energy: the fourth pillar
The 18 Hz and 21 Hz beta tones for Morning were engineered months ago but hidden — a fourth pillar that no competitor covers well was sitting on the bench. In 1.3.0 it ships everywhere: the carousel, programs shelf, reminders, onboarding goals, and the science library. The gating is the same as Calm and Focus — the first three sessions are always free, with founder pricing beyond that. Nothing was removed from the free tier to make room for it.
The protocol: 18 Hz beta in Weeks 1–2 to lift you into the alert range, then 21 Hz beta in Weeks 3–4 for a sustained morning drive. 15 minutes per session, headphones on. Beta-range programs are the strongest evidence base for cortical arousal without stimulants. It is deliberately not designed to replace your first cup of coffee — the goal is the flat, foggy hour after that first cup, when caffeine is still working but you’re not quite on yet.
The glass redesign, honestly
1.3.0 is also the release where the app got a real design system. A new Theme/Glass.swift file replaced the functional-but-flat previous UI with frosted cards, hairline borders, top-edge highlights, per-program accent colours (Sleep teal, Calm ice blue, Focus soft purple, Morning warm amber), and progress rings that breathe at the session’s target rate. The 6 Hz breathing for Sleep is fully visible; the 40 Hz for Focus is a faint shimmer keyed to a slower calm pace so it doesn’t flicker against 60 Hz displays. Reduce Motion is honoured everywhere.
The session player got a real overhaul too — the live oscillator pair now sits as full-bleed background art with a 68pt monospaced countdown, an ambient glass slider, and a long-press “Start with silence” option on the program detail button.
The finger-feel pass
Several changes came out of the first founder-review pass and are worth naming:
- The programs shelf now reads as the arc of a day — Morning, Focus, Calm, Sleep. Not sorted by time of day, which read as random.
- Swipes settle on the adjacent card instead of coasting past, with a soft haptic tick as each lands.
- The background-sound slider now tells the truth. It used to display its own position (100%), which looked like the ambient bed was drowning the tone. It now shows the bed’s actual share of the tone’s loudness — capped at the researched 30% ceiling — with a caption explaining what that number is. The audio never changed; the number was the problem.
- Every soundscape now starts as fast as Morning Bird Songs — ten of eleven beds used to arrive several seconds late. The hand-rolled Swift filter loop that runs spatial motion was replaced with Apple’s vector library (Accelerate
vDSP_biquadD), which is the same math but running on the CPU’s vector units. - Peak memory during bed preparation dropped from ~270 MB to ~95 MB — motion filters now run in bounded chunks with state carried across them, and one whole bed-sized allocation was removed from every load by doing the loop trim in place. Audibly sample-identical to before, but with a much smaller footprint.
The ear test you can do at home
This is the acceptance test we use for every session, and you can do it yourself:
- Put on wired stereo headphones (not Bluetooth — see the earlier warning).
- Start a session with both cups on your ears. You should feel a subtle wobble — that’s the beat.
- Lift one cup off your ear. The wobble should disappear, leaving only two plain tones and the ambient bed.
If the wobble doesn’t disappear, the beat is being generated somewhere it shouldn’t be — either by a broken stereo mix or by a device that’s summing to mono. Every Tihna session passes this test on wired stereo output.
What’s next
The next release focuses on the same disciplined trajectory: no marketing claims that aren’t backed by measurements, no features that quietly cost audio quality, and a growing library of program-week variants that follow the same evidence tier as the current four pillars. If you have wired stereo headphones and 15–25 minutes, Tihna is ready.
Try any program free. Sleep Sessions 1–3, Quick Calm, and the free tasters for Calm, Focus and Morning are always free — no account required, no card. Download Tihna on the App Store →