NoxNoise: Procedural Sleep — Sconfiggere Il Consumo Di Batteria Con La Sintesi Audio Procedurale

Contents
NoxNoise: Procedural Sleep

Chiunque utilizzi app di rumore bianco o suoni ambientali per dormire, studiare o concentrarsi conosce bene il problema principale: la batteria. Lasciare in riproduzione file audio MP3 o FLAC in loop per tutta la notte consuma energia in modo spropositato, surriscalda il dispositivo e degrada la salute della batteria a lungo termine.

Da questo problema è nata l’idea di NoxNoise: Procedural Sleep, un’applicazione iOS totalmente gratuita che reinventa il modo in cui interagiamo con i suoni rilassanti. Invece di riprodurre pesanti file audio pre-registrati, NoxNoise sintetizza il suono in tempo reale direttamente sul dispositivo utilizzando pura matematica.

In questo post analizzeremo come è nata l’applicazione e l’architettura tecnica e di design dietro il suo motore audio procedurale a consumo zero.


Come è nata l’idea

L’ispirazione per NoxNoise è nata da una frustrazione comune: il surriscaldamento dell’iPhone sul comodino durante la notte. Le classiche app di rilassamento caricano in memoria lunghe registrazioni e le decodificano continuamente, tenendo attivi la CPU e i chip di rete o di storage.

L’idea alla base di NoxNoise è tanto semplice quanto potente: generare il rumore partendo da equazioni matematiche, eliminando la necessità di file fisici.

Invece di leggere gigabyte di dati audio dal disco o scaricarli in streaming, NoxNoise genera piccoli buffer audio (di appena 2.0 secondi) e lascia che sia il controller hardware ad eseguire il loop a consumo zero. Il risultato? Un’app incredibilmente leggera (solo 15 MB su App Store) che non richiede rete, protegge la privacy al 100% e preserva la durata della batteria.


Architettura e Design Tecnico

L’applicazione è interamente scritta in Swift e SwiftUI ed è strutturata attorno a tre pilastri fondamentali: il motore audio basato su AVAudioEngine, il sistema aptico di biofeedback e l’integrazione locale con l’Intelligenza Artificiale di Apple.

1. Il Motore Audio Procedurale

Il cuore di NoxNoise è la classe NoxEngine, che coordina un grafo audio complesso basato sul framework AVAudioEngine di Apple. La catena del segnale è così strutturata:

Diagram Code
graph LR
    SubPlayers[Player Nodes White/Brown/Rain...] --> EnvNode[AVAudioMixerNode]
    EnvNode --> EQNode[AVAudioUnitEQ Low-Pass]
    EQNode --> ReverbNode[AVAudioUnitReverb]
    ReverbNode --> PitchNode[AVAudioUnitVarispeed]
    PitchNode --> MainMixer[Main Mixer Node]
graph LR
    SubPlayers[Player Nodes White/Brown/Rain...] --> EnvNode[AVAudioMixerNode]
    EnvNode --> EQNode[AVAudioUnitEQ Low-Pass]
    EQNode --> ReverbNode[AVAudioUnitReverb]
    ReverbNode --> PitchNode[AVAudioUnitVarispeed]
    PitchNode --> MainMixer[Main Mixer Node]
graph LR
    SubPlayers[Player Nodes White/Brown/Rain...] --> EnvNode[AVAudioMixerNode]
    EnvNode --> EQNode[AVAudioUnitEQ Low-Pass]
    EQNode --> ReverbNode[AVAudioUnitReverb]
    ReverbNode --> PitchNode[AVAudioUnitVarispeed]
    PitchNode --> MainMixer[Main Mixer Node]
graph LR
    SubPlayers[Player Nodes White/Brown/Rain...] --> EnvNode[AVAudioMixerNode]
    EnvNode --> EQNode[AVAudioUnitEQ Low-Pass]
    EQNode --> ReverbNode[AVAudioUnitReverb]
    ReverbNode --> PitchNode[AVAudioUnitVarispeed]
    PitchNode --> MainMixer[Main Mixer Node]

Per ottenere prestazioni ottimali a consumo energetico ridotto, il motore adotta diverse strategie:

  • Allineamento dinamico alla Sample Rate hardware: Il motore intercetta la frequenza del dispositivo (ad esempio 48.000 Hz) per calcolare i buffer. Questo evita qualsiasi operazione di ricampionamento (resampling) da parte della CPU.
  • Sintesi Mono/Stereo selettiva: Suoni spaziali come la pioggia o il vento vengono generati in Stereo, mentre sorgenti localizzate come l’asciugacapelli (hairDryer), la cabina dell’aereo (airplanePlayer) e il battito d’ali (flutterPlayer) vengono sintetizzati in Mono per dimezzare le risorse di calcolo richieste.
  • Generatori Matematici Puri:
    • Il Rumore Bianco viene calcolato tramite un generatore casuale puro (Float.random(in: -1.0...1.0)).
    • Il Rumore Marrone (molto più caldo e profondo) viene sintetizzato applicando un filtro di integrazione custom:
      let out = (lastOut + Double(white) * 0.02) / 1.02
    • Suoni come la cabina dell’aereo o il vento utilizzano oscillatori a bassa frequenza (LFO a 0.05 Hz - 0.1 Hz) per modulare l’intensità e ricreare il tipico andamento dinamico delle correnti d’aria o del motore in volo.

2. Generatore Ibrido Stocastico (Organic Layers)

Per evitare la monotonia del rumore sintetico puro e renderlo accattivante, NoxNoise permette di sovrapporre dei Layer Organici (il fuoco che scoppietta, onde del mare, cicale, temporali).

Invece di riprodurli continuamente a consumo della CPU, il motore genera un buffer da 30 secondi in cui distribuisce i dettagli sonori in modo stocastico (casuale) su una griglia temporale jitterata. Il buffer viene “cotto” (baked) in memoria una sola volta all’attivazione e poi delegato interamente all’hardware. Questo approccio ibrido mantiene l’imprevedibilità della natura senza costare un singolo ciclo di CPU durante la riproduzione continua.

3. Sintonizzazione Mentale (Binaural Beats)

Il benessere cognitivo passa anche per l’entrainment delle onde cerebrali. NoxNoise sintetizza in tempo reale toni binaurali (onde Delta, Theta e Alpha) per facilitare il sonno o la concentrazione. Il principio fisico viene riprodotto matematicamente inviando due frequenze leggermente differenti ai due canali stereo (ad esempio 200 Hz sul canale sinistro e 204 Hz su quello destro per indurre uno stato Theta a 4 Hz).

4. Apple Intelligence Locale via FoundationModels

NoxNoise integra la potenza di Apple Intelligence sfruttando il framework FoundationModels (introdotto a partire da iOS 18.2+). Grazie alla classe AppleIntelligenceManager, l’utente può descrivere lo scenario sonoro desiderato a parole proprie (es. “Crea un suono di aereo ovattato con un po’ di pioggia”).

Il modello locale SystemLanguageModel interpreta la richiesta ed elabora una risposta in formato JSON contenente i parametri DSP esatti per sintonizzare i cursori del Noise Studio:

Tutto il processo avviene offline, sul chip Neural Engine del dispositivo, senza inviare dati all’esterno.

5. Interfaccia “Liquid Glass” e Biofeedback Somatico

Il design dell’app si basa sul concetto di Liquid Glass, uno stile neomorfico tridimensionale con cursori che simulano una capsula di vetro trasparente che si riempie di liquido al neon.

Ad arricchire l’esperienza sensoriale c’è il Biofeedback Tattile: accoppiando il motore aptico (CHHapticEngine) con la dinamica delle onde a bassa frequenza, NoxNoise invia all’iPhone o all’Apple Watch delle micro-pulsazioni ritmiche molto morbide a 60 BPM (un battito al secondo). Questo stimolo tattile costante induce un rilassamento somatico aiutando a regolarizzare e rallentare il battito cardiaco.


Condivisione e Sincronizzazione Leggera

Dato che i preset personalizzati dell’utente non contengono veri file audio ma solo parametri matematici, la loro dimensione è inferiore a 1 KB. Questo permette:

  1. Sync iCloud istantaneo tramite CloudKit e KVS tra iPhone, Mac ed Apple Watch.
  2. Spatial Share URLs: L’app comprime le variabili audio in un link leggero. Quando un amico clicca sul link, il suo dispositivo ricrea matematicamente la stessa identica traccia in tempo reale.

Scarica NoxNoise: Procedural Sleep

L’applicazione è completamente gratuita, priva di pubblicità e non effettua alcun tracciamento dei dati utente. È disponibile per iPhone, iPad, Apple Watch e Apple Vision Pro.

Se siete sviluppatori iOS, appassionati di DSP o semplicemente curiosi di sperimentare un modo ecologico e innovativo per riposare, NoxNoise offre una prospettiva affascinante di come la programmazione e la matematica possano migliorare le nostre routine quotidiane.

Contents