Inside the project
Prepared with the project’s development agent from source and retained evidence. This is a project-owner assessment, not an independent customer review. Dated checks were not rerun for this website.
NoiseColour is a coloured-noise and sound-environment app that tells you exactly what it plays. Its core engine shapes white, pink, brown and custom noise. Real binaural Spatial and Ambisonic modes place that noise around the listener, and their timing and level differences are checked by tests. These modes have shipped to private TestFlight testers. Two strands built in early October go further, but nobody has heard them running yet. One is 56 scenario presets, each fitted to a published measurement: an NRC office-masking spectrum, six wide-body aircraft cabins, rivers and seashores from a Heriot-Watt thesis, rain on roofs, and calibration pink noise. The other is a rebuilt Space reverb with a convolution room model. Beside the app sits NoiseColour Lab, a separate macOS research host where graph-based noise experiments are rendered from seeds, with full provenance. This is the project owner's review, not independent testing. The best way to describe the project is 'research-to-sound': every claim is tied to a source and a measurement, and the app deliberately makes no health claims.
What stands out
- Spectra are measured, not described: presets show their delivered slope, or how far they sit from their target
- Real binaural Spatial and Ambisonic engines with tested ITD, ILD and interaural correlation, at about 0.3% of real time
- 56 presets fitted by rendering the real engine to published data; all within ±1.5 dB per octave in offline measurement
- Listening regimes (Masking, Focus, Sleep) with evidence notes, session timers, fade-in and fade-out
- Reusable Swift DSP package architecture with a typed, replayable command spine
- NoiseColour Lab gives seeded, receipted research renders (62 operators, 16 tests passing)
Current limits
- No screenshots or app-audio captures exist yet
- Presets, the reverb rebuild, band edges and notches, and session fade-in are uncommitted and have never been heard or seen running
- Room following and room shaping have never been tested with a live microphone
- Absolute dB(A) guidance is advisory until the user calibrates; masking-level ceilings are stored but not enforced
- The DSP package repository has no commits (provenance risk)
- Distribution is private TestFlight only; no App Store listing is known
Features & evidence
Coloured-noise engine and colours
releasedChoose a colour or spectrum preset; continuous FFT-synthesised noise with tone shaping
Recorded evidence
TestFlight 1.0 builds 2026091701 and 2026092601
Spatial / Ambisonic field
releasedPlace noise around the head (point sources or an ambisonic field); one-tap 360° sweep and A/B listening tests
Recorded evidence
8 SpatialFieldTests green 2026-09-29; TestFlight 2026092901; Main commits 63cca775f and 4a4cad024 (listening tests not run by ear)
Adaptive room following
component-testedMicrophone follows the room's background level, excluding the noise's own contribution
Recorded evidence
8 closed-loop RoomAdaptationTests green 2026-09-29; in TestFlight 2026092901; no live-microphone test
Commercial presets (56, 8 folders)
component-testedPresets ▸ Commercial: workplace privacy, healthcare, hospitality, sleep, transport, water and weather, hearing and focus, test and calibration
Recorded evidence
Offline render harness 2026-10-05: 56/56 in tolerance; macOS AssistantApp and iOS NoiseColour builds green 2026-10-05; uncommitted
Space reverb rebuild + convolution
component-testedThree blendable engines, Auto Cut/Unmask EQ, Reverb Assistant, convolution with modelled rooms or imported IRs
Recorded evidence
16/16 offline tests 2026-10-05; builds green 2026-10-05; UI not seen running; uncommitted
Listening regimes and sessions
sourceMasking, Focus and Sleep with timers, fade-in and taper
Recorded evidence
Regime timing earlier; fade-in and taper overrides added 2026-10-05, build green, never run
NoiseColour Lab
installed-testedSeparate macOS research host: graph synthesis, analysis bench, physics, control models, receipts
Recorded evidence
Ledger 2026-10-05: release build, XCTest 16/0, 62/62 operator smoke run, live app opened and rendered pink (β≈1.0224)
DSP packages
component-testedNoiseColourDSP, AudioRuntime, AudioIO, Denoise, Analysis, Visuals, Filters and 8 more
Recorded evidence
Package suites green when run (Spatial, RoomAdaptation, RoomSpatialEstimate, SpectralBandShape); uncommitted package repo
Review updates & corrections
- No material code, release or media changes found since the 17 October biography (bounded check). Presets and reverb are still uncommitted, and there are still no captures.
- Correction: the biography named an older failing test 'VelocityFullChainModulationMatrixTests'; the correct name is VelvetFullChainModulationMatrixTests (pre-existing, known 2026-09-29).
- Correction: the biography referred to a non-existent '§2.7' for the Lab audio; the reference is the NoiseColour Lab Media section.
- Clarification: COMMERCIAL_PRESETS.md is fine as a private evidence report, but publish only short excerpts. It cites third-party papers, and its figures must not be reproduced.
Workflow walkthrough
A guide to the native workflow. These steps describe the app; only the recordings and images embedded on this page are available as website demonstrations.
- Open NoiseColour and press play; choose Pink from the Spectrum presets and note the delivered slope in its subtitle
- Open Presets ▸ Commercial ▸ Workplace ▸ Open-Plan Privacy · NRC Optimum (speaker playback, intended about 45 dB(A))
- Switch to Travel & Transport ▸ Long-Haul Cabin, then Water & Weather ▸ River Bank, and compare the environments
- Put on headphones, set Engine to Spatial, and run the 360° sweep listening test
- Choose the Sleep regime and watch the session timer, fade-in and planned fade-out
- STATUS: proposed native capture. Nothing exists yet, and steps 2, 3 and 5 need a build that includes the uncommitted work. Not interactive on the website.
Planned captures · not yet available
- Presets ▸ Commercial menu open on Workplace
- Three 10–15 s preset clips: NRC office masking, long-haul cabin, river bank
- Headphone screen recording of the Spatial 360° sweep
- Space reverb panel with blend pad, plus a dry/wet audio pair
Development biography · earlier archive
Development profile compiled from project source and retained records in October 2026. Dates and test results describe those records; they do not imply a new build, live acceptance test or public release.
NoiseColour (app)
Biography
The problem. Most "white noise" apps are a play button and a loop of recorded sound. They rarely say what spectrum they actually deliver, how loud it should be, or what the evidence for a use case is. NoiseColour started from the opposite end. It treats noise as a signal you can describe exactly, by its spectral slope, its stereo correlation and its level, and builds controls on top of that description.
Origin and motivation. The documented origin is a DSP project (the project archive) that was later split into reusable Swift packages and recomposed as the NoiseColour module inside AssistantApp . Two research passes then shaped the product:
- A 34-source review of the noise, attention and entrainment literature on 2026-09-20. It became a rule set: "listening regimes" (Masking, Focus, Sleep), each with an evidence note and the level the studies used.
- An October 2026 evidence pass. It produced 56 scenario presets fitted to published measurements (§4).
Audience.
- People who use background noise for privacy, focus or sleep and want to know what they're actually getting.
- Sound designers and audio-curious users who want a genuine noise synthesizer.
- Researchers who want stimuli whose spectrum is known.
The app makes no medical claims. Its sleep, tinnitus and focus material is deliberately framed by what the evidence does and doesn't support.
Distinctive ideas.
- Measured, not described. The Spectrum presets show their delivered slope and speech-band share. Commercial presets show how far they deviate from their target spectrum (§4).
- Regimes, not just volume. Masking, Focus and Sleep each come with timing:
- Focus prompts after 30 minutes, because the studies used minutes, not hours.
- Sleep fades out after about 45 minutes, because the published REM cost accumulates through the night.
- Sessions can fade in so the sound never starts as a step.
- Real space. In late September 2026 the Spatial and Ambisonic modes were rebuilt as real binaural-field engines. They design the interaural cross-spectrum per frequency bin (Brown–Duda head model, Cholesky-factored FIRs), and tests pin ITD, ILD and interaural correlation. An earlier audit had found the previous modes were largely cosmetic, and the project records that openly.
- Room following. "Adaptive" listens to the room through the microphone, removes the noise's own contribution, and follows the background level within limits.
- Typed command spine. Other modules (the HUD, the assistant, MCP tools, Rehab) control NoiseColour through typed, validated, replayable render commands, not by poking UI state.
What it does — a user journey.
- Open NoiseColour and press play. The default is a warm low-frequency bed.
- Choose a colour chip or a Spectrum preset; its subtitle states the delivered slope.
- Open Presets ▸ Commercial ▸ Travel & Transport ▸ Long-Haul Cabin. The cabin spectrum loads, digitised from six measured wide-body cruise recordings. The level comes in at or below your current volume (presets never raise it).
- Switch the engine mode to Spatial and drag the source spread: the sound moves around the head. The "listening test" buttons sweep it 360° or A/B it against Standard.
- Choose Sleep as the regime. A session timer starts, the sound fades in over 45 s, and it fades out after the session.
- Optionally turn on Space (reverb), pick Hall or Plate, and blend the engines, or switch to Convolution and choose a modelled room (§4).
Features a visitor could see or hear (once captured):
- colour chips and the spectrum display
- the tone/EQ panel
- the Body, Velvet and Air character stages
- the Spatial and Ambisonic panel and its listening tests
- room following
- the Space reverb panel
- the Presets menu with its eight Commercial folders
- the listening-regime and session controls
Authored work: the whole app layer and the NoiseColour packages. Dependencies: Apple frameworks (Accelerate, AVFoundation, SwiftUI) and swift-atomics. FIRFilters, Kalman and SpectralProcessor are the studio’s own packages outside this tree.
Maturity by feature (evidence-backed; "unknown" where not established)
| Feature | Tests | Built | Runtime-verified | Released |
|---|---|---|---|---|
| Core noise engine and colours | package tests exist (unknown pass state today) | yes | yes (app in use earlier) | TestFlight 1.0 (2026091701, 2026092601) |
| Spatial / Ambisonic field engines | 8 SpatialFieldTests green (2026-09-29) | yes | readouts checked in the app; never listened to by me | TestFlight 1.0 (2026092901); committed in Main 63cca775f (2026-10-04) |
| One-tap listening tests | — | yes | not run with ears | committed in Main 4a4cad024 |
| Room following (Adaptive) | 8 closed-loop tests green | yes | never tested with a live microphone | in the 09-29 TestFlight build |
| AudioIO session recovery (iOS) | — | yes | unknown on device | committed in Main 108dd619c |
| Commercial presets (§4) | 56/56 within tolerance in an offline render harness | macOS and iOS builds green (2026-10-05) | not seen or heard running | uncommitted |
| Space reverb rebuild (§4) | 16 offline tests green | macOS and iOS builds green (2026-10-05) | not seen or heard running | uncommitted |
| Band edges and notches, session fade-in | 3 band-shape tests green | yes | no | uncommitted |
Roadmap (aspiration, not shipped)
- Enforce absolute masking levels (45 dB(A) optimum, 48 maximum) instead of "room + 3 dB, up to 60".
- Default sleep to 30–35 dB(A).
- Live microphone acceptance of room following and room shaping.
- Commit and release the presets and reverb.
Known limits
- Absolute dB(A) levels are advisory until the user calibrates.
- No infant sleep mode (deliberate).
- The test signals' crest factor is about 14 dB, so they're good for level calibration but not for power-handling tests.
- Room following is untested with a real microphone.
FAQs
- Is it a medical device? No. Sleep, focus and tinnitus content cites the evidence and lists claims it won't make.
- Why does a preset sometimes play quieter? Presets never raise your volume, so switching never jumps up in level.
- Does it stream recordings? No. Everything is synthesized live; the "environments" are spectra fitted to measurements.
- Do I need headphones? For Spatial and Ambisonic, yes. Masking presets are meant for speakers.
- Mac? The iPad build runs on Apple-silicon Macs. The full AssistantApp includes it too.
NoiseColour Lab (experimental)
Biography
Problem and origin. The NoiseColour roadmap had grown into a broad research catalogue: stochastic processes, nonlinear shaping, granular corpora, auditory texture statistics, chaotic control signals, physical models, spatial scenes and semantic search. That couldn't be explored safely inside the shipping app. The Lab duplicates the NoiseColour source into its own package (Experimental/NoiseColourLab), keeps a verified preservation record of the originals, and gives the research a host of its own.
Audience. The developer and researchers first; sound designers second. It is not a consumer product.
Distinctive ideas.
- Receipts. Each render records its recipe, seed, SHA-256 hashes and the versioned equation records (M01–M16) it used, and exports to JSON or JSON-LD.
- Honesty ledger.
IMPLEMENTATION_STATUS.mdseparates "executable" from "adaptation", "surrogate" and "remaining work" for 14 work packages. - Graph synthesis with guard rails. Cycles, missing edges, invalid values and resource budgets are rejected at compile time; feedback exists only inside explicit delay/FDN nodes.
What a user can do :
- Play & shape: start continuous noise; dials set tone exponent, gain, width and reverb mix.
- Spectrum & processes: render Pink with a chosen exponent and seed, then audition it.
- Analysis bench: measure the render, freeze it as A, change the graph, render B and compare descriptors.
- Grains & corpus: import a file with a rights note and build grains and corpus navigation.
- Voice & Carrier: route the graph through a Monster Filter into a filterbank vocoder shaped by a recording.
- Physics & scene: modal, string and metamaterial models; render CSV event scenes.
- Control models: train small reservoir, SOM or bandit models to produce bounded control signals.
- Study & clocks: prepare stimulus batches and fit clock anchors. This is stimulus preparation, not participant testing.
Scale (from the ledger): 26 destinations (13 original NoiseColour panels, 11 research workspaces, Play & shape, Control studio), 62 operators, 24 source kinds, 9 excitation distributions, 63 parameters and 7 control-model prototypes. Since an update after the ledger, SemanticCompute batches 1–3 add 22 named CPU audio models (captured at 16600e9).
Maturity (from the ledger, 2026-10-05)
- Release Swift package build completed. XCTest: 16 tests, 0 failures.
- Default-parameter smoke run: 62/62 operators rendered finite, bounded stereo and replayed the same PCM digest. This is not exhaustive stability evidence.
- WAV export round-trip had zero error (96,000 frames, stereo, 48 kHz, float32).
- Live app: opened, rendered default pink (measured β ≈ 1.0224), and analysis, model, schedule and clock fit were exercised. Native file-picker automation stayed blocked; direct path import works.
- Not domain-validated. No clinical, acoustic-calibration or paper-reproduction validation. No public release.
Roadmap and limits
The Lab's own lists of remaining work per package include:
- multi-seed statistical evidence
- WDF and BLEP methods
- CataRT-style corpora
- JTFS (joint time-frequency scattering) parity
- VBAP/HRTF spatial
- trained generative models
Experimental operators restart every 1 s block in live mode; continuous long trajectories need offline rendering.
FAQs
- Is the Lab the app users get? No. It is an isolated research host.
- Can it measure loudness at my ear? No. Its levels are digital, not acoustic SPL.
- Are the physics models physically exact? Some are true physical models; others are labelled surrogates. The ledger says which.
NoiseColour DSP package tree (technical sub-profile)
Packages :
- NoiseColourDSP: the core render pipeline.
- FFT synthesis of coloured noise, spectral emphasis (tilt, bells, Butterworth band edges, flat-bottom notches added 2026-10-05)
- Body, Velvet and Air character stages
- Spatial and Ambisonic field design and render
- room-adaptation and room-shape estimators
- NoiseColourAudioRuntime: the app-facing audio host over AudioIO, with session recovery.
- AudioIO: the audio I/O layer (AVAudioEngine/CoreAudio).
- NoiseColourDenoise: spectral Kalman denoise for microphone learning.
- NoiseColourAnalysis: analysis and coordination.
- NoiseColourVisuals: visual-support models for the UI.
- NoiseColourFilters: filter families.
- Present, with roles are not established in this profile: NoiseColourPerception, NoiseColourStimPhysics, NoiseColourLoad, NoiseColourVocoder, NoiseColourVoicing, NoiseColourOscillators, NoiseColourRFBridge, NoiseColourGrains.
Maturity:
- The packages build inside the AssistantApp and NoiseColour targets (green on 2026-10-05).
- Known package test suites: SpatialFieldTests (8), RoomAdaptationTests (8), RoomSpatialEstimateTests and SpectralBandShapeTests (3), all green when run. One older
VelocityFullChainModulationMatrixTestsfailure was known on 2026-09-29. - The package repo has no commits; its files are uncommitted on disk. That is a provenance risk worth stating before naming it as a public library.
Scenario acoustics: Commercial presets and the Space reverb (feature profile inside NoiseColour)
Biography
Problem. "Office noise", "rain" or "sleep sound" presets are usually picked by ear. For speech privacy in particular the literature is specific: a spectrum about 4–7 dB per octave darker than pink, at an absolute level near 45 dB(A), never above 48, because people start raising their voices above about 43 dB(A).
How it was made (2026-10-05, at the studio’s request for "an extensive list… using all online research"):
- Six research dossiers (workplace masking, hospitality and healthcare, sleep, environments, test and calibration, hearing and focus) collected measured spectra and levels from sources that were actually opened. Abstract-only and secondary sources are labelled.
- Where papers gave only charts, curves were digitised and checked against the paper's own numbers:
- cabin A−C within 0.3–1.7 dB on six aircraft
- rain-on-roof L_IA within 0.5 dB
- water spectra lifted exactly from the thesis PDF's vector data
- An offline harness renders the real NoiseColour pipeline and reverb. A fitter solves the colour, tilt, bells and band edges, then re-measures. In the final 20 s re-measurement, all fitted presets were within ±1.5 dB per octave of their target (±3 dB at 63 Hz and 8 kHz). Calibration signals were within ±0.75 dB, with RMS within ±0.1–0.15 dB.
- Levels are loudness-matched: a preset never raises your current volume, and sleep presets start 10 dB lower.
Folders:
- Sleep & Rest (8): traffic, voices, snoring, shift work, ward under earplugs, 20-minute nap, hotel, wind-down. Each has session timing; earplugs are recommended as the first step.
- Workplace (7): open-plan NRC optimum, neutral −5 dB/oct, private office, call centre, confidential meeting-room corridor, library, PNC-35 ventilation.
- Healthcare (4) and Hospitality (7): clinic waiting, pharmacy queue, therapy door, dental drill cover (headphones), restaurant, café, spa, co-working, museum quiet room, reception, retail.
- Travel & Transport (3): long-haul cabin, metro carriage, car at 90 km/h.
- Water & Weather (10): river, brook, waterfall, weir, fountain, calm and stormy sea, rain on a metal roof, rain on a tiled roof, outdoor rain (labelled an approximation).
- Hearing & Focus (9): tinnitus enrichment, notched enrichment at 4/6/8 kHz (experimental; the evidence is for notched music), hyperacusis, misophonia, focus white/pink/brown.
- Test & Calibration (8): SMPTE ST 2095-1 pink at −18.5 dBFS, home-theatre pink at −20, 500 Hz–2 kHz speaker level, subwoofer, tweeter, mono polarity, white, LTASS speech-shaped noise.
Space reverb rebuild (same week; follows iZotope Neoverb's published architecture, with original DSP).
- Bug found and fixed. In the old reverb, raising Mix made the output quieter (−7.6 dB at 60%) while the reverb stayed nearly inaudible.
- New engine:
- three blendable engines: early reflections, a Room/Chamber/Plate tail and a Chamber/Hall tail
- Space macro; per-engine Advanced controls
- Pre EQ with Auto Cut; Reverb EQ with Unmask and a masking meter
- Smooth; RandomFat/Pitch modulation; a Reverb Assistant (Style, Size, Tone)
- wet level normalised to the current noise colour; equal-power Dry/Wet
- Convolution engine:
- FIRFilters' partitioned convolver, running on its own worker thread
- impulse responses from modelled rooms (image sources, Eyring decay, Lindau 2012 perceptual mixing time; materials from standard absorption tables), a capture of the algorithmic reverb, or an imported file
- Third-party note. "Neoverb" is iZotope's product. Describe this as "an architecture modelled on published descriptions of Neoverb", never as Neoverb itself or as affiliated.
Maturity
| Item | State |
|---|---|
| Presets | Implemented and measured offline (56/56 in tolerance); macOS and iOS builds green on 2026-10-05; never heard or seen running; uncommitted |
| Reverb | Implemented; 16/16 offline tests green (wet level within ±1.4 dB across 5 modes × 3 colours, decay within about 1–8%, convolution vs direct convolution error 7e-7, room model vs Eyring within 15%); builds green; UI never seen running; uncommitted |
| Gaps (owner's decision pending) | Masking-level enforcement and per-preset ceilings are stored but not enforced |
Website-safe claims (keep to these)
- "Fitted to published measurements; within ±1.5 dB per octave of its target in offline measurement."
- Avoid "improves sleep or focus", "treats tinnitus", "HIPAA compliant" or "makes conversations confidential". Every preset's own "claims to avoid" list is in COMMERCIAL_PRESETS.md.
FAQs
- Are these recordings? No. They are synthesized spectra fitted to measured ones; they reproduce the steady sound, not events like waves breaking.
- How loud for office masking? About 45 dB(A) at seated ear height, never above 48. The app can only report SPL after calibration.
- Can I use my own impulse response? Yes. Import a file in the Space panel's Convolution source.