Tune to your room, walked through
NoiseMoon has a feature called Tune to your room (it used to be called calibrate). Tap it, and the moon listens through your microphone for ten seconds, then shapes the noise around the steady sounds in your room, like a fan or a fridge. Here’s exactly what happens, why it works, and why nothing leaves your device.
What you do
- Open NoiseMoon. Find Tune to room in the tools.
- Tap it, then tap Start listening. Your browser asks permission to access the microphone.
- Stay quiet. Don’t make any new noise: tuning listens for what’s already there.
- A ring counts down the ten seconds.
- Ten seconds later, NoiseMoon switches to a new sound, Room tuned, shaped to your room.
That’s the whole user interaction. Afterward, a short note tells you what it found: something like Shaped around 120 Hz and its harmonics. You can switch to any other sound, tune again if your environment changes, or remove the room tuning.
What’s happening inside
Tune to your room does three things: capture audio, analyse spectral content, shape the noise around what it found.
1. Capture
The browser opens an audio context using the standard Web Audio API and a MediaStreamSource tied to your microphone. The mic’s signal is fed into an analyser node. No file is created. No upload is made. The audio is consumed in real time and never written to disk.
The mic capture lasts ten seconds. After ten seconds, the audio context is closed and the stream is released. The audio doesn’t persist past that moment; only the result of the analysis does.
2. Analyse
While capture is happening, NoiseMoon takes the latest slice of audio from the analyser node every 100 ms and computes its Fast Fourier Transform. The FFT splits the signal into thousands of narrow frequency bins, covering the spectrum’s main regions:
- Sub-bass (20-60 Hz): very low rumble
- Bass (60-250 Hz): HVAC, traffic, refrigerators
- Low-mid (250 Hz-1 kHz): voices, household sounds
- Mid (1-4 kHz): speech intelligibility band
- High-mid (4-12 kHz): clicks, sibilance
- Air (12-20 kHz): squeaks, electronic interference
After ten seconds, NoiseMoon takes the median of each bin across all the slices, so a cough or a closing door barely counts. Then it looks for peaks: narrow frequencies that stand at least 6 dB above their surroundings. Those peaks are your room’s steady sounds. If they form a series (a base frequency and its multiples, the way many mains-powered machines sound), NoiseMoon keeps the series, up to five peaks. Otherwise it keeps the single most prominent peak. If there are no peaks at all, your room has no steady tone to aim at.
3. Shape
NoiseMoon then builds a new sound, Room tuned, from pink noise. At each peak it kept, it adds a boost (a peaking filter) about as wide as the ear’s critical band at that frequency, and as tall as the peak stood above its surroundings, up to 12 dB. The noise gains energy where your room’s steady sound sits and stays plain pink everywhere else.
If your room’s steady sound is a fridge’s drone at 120 Hz, Room tuned gets a lift at 120 Hz, and at 240 and 360 Hz if the drone has harmonics. Changing sounds, like the voices in a noisy office, don’t leave steady peaks, so they barely shape the result. If your room has no steady tone at all, you get plain pink noise, and NoiseMoon says so: No steady tone found, so plain pink noise.
What never leaves your device
The audio captured while tuning never leaves your device. There is no upload. There is no server. There is no third-party processing service. The Web Audio API runs entirely in your browser, the FFT is computed locally, the peak search is local, and the filter design is local. The result (just a handful of frequencies and boosts, like “120 Hz, 8 dB”) is kept on your device too, so Room tuned is still there next time.
The microphone audio exists for ten seconds in your browser’s audio buffer. Then it’s gone.
You can verify this yourself. Open your browser’s developer tools, switch to the Network tab, and tune to your room. The most you’ll see is NoiseMoon loading its own sound engine; no request carries audio, because tuning is a self-contained client-side computation.
Why this is structurally different from what other apps do
Most apps that involve a microphone send the audio somewhere: for transcription, for AI processing, for analytics, or for “improving the model.” Even if they don’t store the audio, they typically transmit it for processing. NoiseMoon’s room tuning doesn’t transmit anything because the analysis is simple enough to run on a phone in real time. A hundred FFTs, a median, and a peak search add up to an embarrassingly small computation by modern standards. It doesn’t need a server.
This isn’t a privacy feature we added on top of a server-based design; it’s the consequence of using on-device DSP in the first place. The privacy story falls out of the architecture rather than being an opt-in setting.
Why it works as well as it does
Acoustic masking efficacy isn’t about volume; it’s about spectral overlap. To mask a sound, you need noise that has energy in the same frequency band. White noise masks everything because it has energy everywhere. Brown noise masks low rumble well but does poorly against speech because brown has very little energy in the speech band.
Tune to your room uses your room’s spectrum to put extra energy where its steady sounds are. If a fan drones at 120 Hz, the noise gets more energy right around 120 Hz. The aim is more efficient masking at lower volumes: you don’t have to crank the noise to drown out the room, because the extra energy sits where the room’s sound is.
When to tune to your room
- When you switch environments (home to office, plane to hotel, etc.). Your noise profile is different, and the right tuning may be different too.
- When a steady sound in the room, like a fan, a fridge, or an air conditioner, keeps poking through the noise.
- When you want a small, low-stakes thing to try with a sleep or focus app you’ve been using for a while.
You don’t need to tune to your room. The sounds work well for most rooms most of the time. Room tuning is the optimisation pass for when “good” isn’t quite enough.
Try it
Open NoiseMoon, tap Tune to room in the tools, then Start listening. Stay quiet for ten seconds. See what the moon hears.