← Composer Home

Soundscape Composer

Guida all'uso, filosofia, preparazione dei file, riferimento dei controlli.

Filosofia generale

Soundscape Composer ricostruisce un paesaggio sonoro in tempo reale muovendo un puntatore sulla mappa di un luogo reale. Ogni posizione attiva una combinazione diversa di suoni stratificati, pescati dalle clip caricate dall'utente e organizzati secondo le cinque categorie della teoria del soundscape di R. Murray Schafer.

Lo strumento non ricombina le clip in modo casuale: segue un modello ispirato a diverse tradizioni teoriche e compositive.

R. Murray Schafer, The Soundscape (1977)
Distinzione funzionale tra tonica (keynote), segnale (signal) e soundmark. Ogni paesaggio sonoro si articola su questi tre livelli di salienza percettiva.
Bernie Krause
Composizione triadica biofonia, antropofonia, geofonia. Le fonti sonore si bilanciano in modo ecologico.
Tradizione GRM (Parmegiani, Ferrari, Westerkamp)
Costruzione drammaturgica per stratificazione di livelli tonici continui e gesti in primo piano. Il tempo non si misura, si modella.

Il controllo è intenzionalmente semplice: un solo puntatore sulla mappa. Tutto il resto è continuo (toniche e pad in loop), ciclico (segnali ed eventi probabilistici) o reattivo (soundmark al passaggio). La mappa non è una divisione, è un campo di attrazione: ogni zona ha un peso che decade con la distanza dal suo centro, e le zone possono sovrapporsi.

Principi compositivi cui il sistema si attiene:

  1. Nessun sequencer, nessuna griglia temporale. Il tempo emerge dal gesto sulla mappa e dai generatori stocastici.
  2. Le categorie si stratificano, non si alternano. Una tonica può convivere con un pad, un soundmark e due segnali; ciò che cambia è la loro densità e intensità.
  3. La mappa come partitura. Le zone sono campi con pesi proporzionali alla distanza dal centro. Pointer al centro di una zona, gain pieno; tra due zone, entrambi i contributi normalizzati; fuori da tutte, il sistema aggancia comunque il contributo della zona più vicina.
  4. Nessuna sincronia forzata. Ogni sorgente ha il suo tempo: le toniche girano in loop, i segnali appaiono a intervalli random, i soundmark rispondono al movimento del puntatore.

Flusso di lavoro

  1. Preparare le clip secondo le indicazioni della sezione Preparazione dei file.
  2. Caricare ogni clip nella propria categoria tramite drag o selezione.
  3. Calibrare le zone con "Modifica zone": trascinare gli handle colorati sui punti reali del luogo, regolare raggi e nomi. Le posizioni si salvano automaticamente nel browser.
  4. Avviare la composizione con "Avvia composizione".
  5. Muovere il puntatore sulla mappa per modellare la stratificazione.
  6. Registrare il risultato con "Registra", fermare e scaricare il file.

Le cinque categorie

Toniche (keynotes)

Suono di fondo continuo che definisce l'identità acustica del luogo. È presente in modo persistente anche quando non vi si presta attenzione. In montagna: vento nelle conifere. In fabbrica: brusio dei macchinari. In un borgo agricolo: traffico lontano e insetti diffusi.

Comportamento nel Composer: sempre in loop, gain modulato dal peso della zona cui è assegnata. Una tonica per zona (round-robin sulle clip caricate).

Pad

Texture stratificata che colora l'ambiente senza definirne l'identità: meno saliente della tonica, utile per creare profondità e stratificazione armonica o timbrica. Esempi buoni: registrazioni di spazi vuoti, code di riverberi naturali, droni ambientali non intonati.

Comportamento: loop come le toniche, ma a volume leggermente inferiore (x0.7 rispetto alla tonica stessa zona).

Segnali

Suoni in primo piano che attirano l'attenzione: hanno inizio e fine chiaramente percettibili. Richiami vocali, campanacci, suoni meccanici brevi, clacson, rintocchi isolati.

Comportamento: triggerati in modo probabilistico a intervalli random, solo se il puntatore si trova dentro una zona. Pan automatico in base alla posizione della zona dominante.

Soundmark

Il suono identitario del luogo, quello che lo rende riconoscibile. In un monastero: la campana che scandisce le ore. A Villa Ficana: un elemento specifico del borgo (voce di guida, scricchiolio di una porta di terra cruda, campana locale).

Comportamento: triggerato una volta all'ingresso in una zona, con gain che segue la vicinanza del puntatore. Se esci dalla zona mentre è in corso, il volume cala fino al fade-out.

Eventi brevi

One-shot sporadici, ispirati all'arte acusmatica. Uno scricchiolio, uno scatto, un passo isolato, uno schiocco, il tintinnio di un oggetto. Sfalsano il continuum con un gesto puntuale.

Comportamento: come i segnali, trigger probabilistico con intervalli tipicamente più lunghi.

Preparazione dei file

Durate consigliate

CategoriaDurataLoopDinamica
Toniche30 s - 3 minSiCompressa (crest factor basso)
Pad30 s - 3 minSiCompressa, evolutiva lenta
Segnali2 - 15 s (singola emissione)NoAttacco riconoscibile
Soundmark10 - 40 sNoBen registrato, dinamica naturale
Eventi brevi1 - 10 sNoEnergia concentrata

File lunghi e segmentazione automatica

Se hai una registrazione lunga di 2 minuti con molti segnali diversi (una piazza in una mattinata di mercato, una foresta con richiami discontinui), puoi caricarla come singolo file e attivare "Estrai porzioni casuali dai file lunghi" nel pannello Trigger. Lo scheduler analizzerà il file, calcolerà l'RMS su finestre di 1 secondo, e ad ogni trigger pescherà una porzione random dal top 30% per energia, con una durata random tra min e max configurabili. Utile per segnali, soundmark ed eventi.

Livelli consigliati

Il Composer non normalizza le clip in ingresso: i livelli che carichi sono quelli che suoneranno. Suggerimenti su LUFS integrato (misurabile con Reaper, Audacity + plugin dpMeter, Youlean Loudness Meter, ffmpeg loudnorm).

CategoriaLUFS integratoTrue peak consigliato
Toniche, pad-23 a -18 LUFS-6 dBTP
Segnali, soundmark-18 a -14 LUFS-3 dBTP
Eventi brevi-16 a -12 LUFS-3 dBTP

Lasciare almeno 3 dB di headroom: gli FX per categoria aggiungono guadagno (riverbero, delay) e il limiter finale potrebbe distorcere se il totale supera i -1 dBFS.

Loop pulito per toniche e pad

Formati accettati

Il Composer accetta i formati gestiti nativamente da Web Audio API nel browser corrente:

Consiglio operativo. Per massima compatibilità cross-browser: WAV 48 kHz / 24 bit PCM fino a ~50 MB per file, oppure MP3 320 kbps CBR per file più grandi. Questi due formati funzionano sempre: Chrome, Safari desktop, Safari iOS, Firefox.

Da evitare se si punta a un workflow stabile:

Controlli libreria

Ogni pannello categoria (sulla sinistra) contiene la stessa struttura:

ControlloFunzione
Titolo + conteggioNome della categoria e numero di clip attualmente caricate.
Drop zoneTrascinare o cliccare per caricare uno o più file audio. Accetta drop multipli.
Lista clipOgni riga mostra nome, durata, slider volume clip, bottoni Play e Elimina.
Play / StopPreview manuale della clip. Stop chiude anche le istanze avviate dallo scheduler (soundmark, segnali, eventi) con fade breve.
Slider volume clipTrim per-clip, 0-120%. Si applica a un nodo di gain indipendente e viene salvato in IndexedDB (resta al reload).
EliminaRimuove la clip dalla libreria e dalla cache, liberando memoria.
Pannello EffettiRichiudibile. Contiene EQ 16 bande, compressore, delay, riverbero, limiter della categoria.
Pannello TriggerSolo per segnali, soundmark, eventi brevi. Controlli per intervalli, overlap, segmentazione RMS.

Gain, Solo, Mute per categoria

Nella testata di ogni categoria, accanto al contatore:

Slider volume categoria (0-120%)
Gain applicato all'output della FX chain della categoria, prima del master. Curva lineare.
S (Solo)
Quando attivo (giallo), silenzia tutte le altre categorie che non sono a loro volta in solo. Si possono mettere più categorie in solo contemporaneamente: suonano tutte quelle con S attivo.
M (Mute)
Quando attivo (rosso), silenzia la categoria indipendentemente da qualsiasi altra cosa. Se una categoria è sia in solo che in mute, prevale il mute.

Tutte le transizioni solo/mute hanno un ramp di 120 ms via setTargetAtTime, nessun click.

Catena effetti per categoria

Ogni categoria ha la sua catena indipendente. Routing:

sorgente → EQ 16 bande → Compressore → (dry + Delay + Riverbero paralleli) → Limiter → gain categoria → master

EQ 16 bande parametrico

Filtri peaking in serie, Q fisso 1.4, range ±12 dB. Frequenze centro:

32, 64, 125, 200, 315, 500, 800, 1250, 2000, 3150, 5000, 6300, 8000, 10000, 14000, 18000 Hz.

Reset: azzera tutte le bande.

Compressore

ParametroRangeDefault
Threshold-60 dB a 0 dB-18 dB
Ratio1:1 a 20:13:1
Attack1 - 200 ms8 ms
Release10 - 1000 ms150 ms

Il compressore è basato su DynamicsCompressorNode, con knee fisso a 6 dB.

Delay

ParametroRangeDefault
Send0 - 10 (off)
Tempo20 ms - 2.5 s350 ms
Feedback0 - 0.950.35

Il feedback è limitato a 0.95 per evitare auto-oscillazione incontrollata. Il delay è parallelo (send/wet).

Riverbero

ParametroRangeDefault
Send0 - 10 (off)
Dimensione (decay)0.3 - 6 s2.5 s

Basato su ConvolverNode con IR sintetica (rumore bianco con inviluppo esponenziale). Cambiando Dimensione, l'IR viene rigenerata.

Limiter

Threshold configurabile (default -1 dB), ratio fisso 20:1, attack 1 ms, release 50 ms, knee 0. Protegge l'output della categoria da clipping dopo gli FX.

Mappa e zone

La mappa usa Leaflet con tile satellitari Esri World Imagery. Il luogo di default è Villa Ficana, Macerata (43.29883 N, 13.43201 E, zoom 19), che è anche la demo. Con il bottone Cambia luogo nell'intestazione della mappa si passa a un altro posto, la propria posizione GPS, un luogo cercato per nome (ricerca a cura di OpenStreetMap, Nominatim) o coordinate scritte a mano. Le quattro zone circolari si dispongono attorno al centro del luogo scelto con nomi generici (Ingresso, Centro, Margine, Verde) e si salvano per luogo nel browser; a Villa Ficana restano i nomi del borgo.

Puntatore

Icona microfono 3D trascinabile. Si sposta con drag del marker, click su un punto della mappa, o bottone "Centra" (lo riporta al centroide delle zone). Il punto di riferimento per il calcolo dei pesi di zona è la base del microfono (dove appoggia l'ombra).

Editing delle zone

Bottone "Modifica zone" nell'header della mappa:

Motore spaziale

Il peso di ogni zona rispetto alla posizione del puntatore si calcola come:

peso_grezzo = max(0, 1 - distanza / raggio) ^ 1.6

I pesi vengono poi normalizzati (somma = 1) quando il totale grezzo supera 0.05. Se il puntatore è fuori da tutte le zone, la zona più vicina riceve comunque un peso di fallback di 0.35 per evitare silenzio totale.

La curva ^1.6 rende la transizione più morbida ai bordi (contributi piccoli restano presenti anche ai margini della zona) mentre il centro resta ben definito.

Illuminazione visiva

Quando il puntatore si trova in una zona di sovrapposizione tra più cerchi, tutte le zone coinvolte si illuminano proporzionalmente al loro peso (curva ^0.7 per dare visibilità anche ai contributi piccoli). Questo rispecchia esattamente il comportamento audio: ogni zona contribuisce in proporzione, non solo la dominante.

Modulazione audio delle toniche e dei pad

All'avvio composizione, una clip per categoria ambient (tonica, pad) viene assegnata a ogni zona in round-robin sulle clip caricate. Parte in loop a gain 0, e il suo gain viene poi aggiornato di continuo dal motore spaziale in base al peso della zona, con glide esponenziale (setTargetAtTime, time constant 0.2 s, ~95% in 0.6 s).

Questo garantisce crossfade continui senza scatti, anche quando il puntatore si muove rapidamente.

Scheduler e trigger

I pannelli Trigger appaiono solo per segnali, soundmark, eventi brevi (toniche e pad non hanno trigger: girano sempre in loop).

Parametri scheduler (segnali, eventi brevi)

Attivo durante la composizione
Toggle principale. Se off, quella categoria non viene mai triggerata automaticamente.
Intervallo min / max
Tempo di attesa tra un trigger e il successivo. Lo scheduler estrae un valore random dall'intervallo ad ogni tick.
Overlap max
Numero massimo di istanze della categoria che possono suonare sovrapposte. Se già N istanze sono attive, il nuovo trigger viene scartato (non in coda) finché una non termina.
Estrai porzioni casuali dai file lunghi (RMS)
Checkbox per abilitare la segmentazione. Se attivo e il file caricato è più lungo di "Durata estratto min", lo scheduler sceglie una porzione random dal top 30% per RMS e la suona per una durata random tra min e max.
Durata estratto min / max
Intervallo di durata della porzione estratta.

Condizioni perché un trigger scatti

  1. Composizione avviata.
  2. Trigger della categoria attivo.
  3. Almeno una clip caricata nella categoria.
  4. Puntatore dentro una zona (peso dominante > 0.15).
  5. Overlap sotto il limite.

Pan automatico

Il pan stereo di ogni trigger è calcolato in base alla longitudine della zona dominante rispetto al centroide delle zone, con una piccola variazione random per evitare ripetitività. Zone a est: pan a destra. Zone a ovest: pan a sinistra.

Soundmark

Il soundmark ha un comportamento particolare, distinto da segnali ed eventi.

  1. Ad ogni zona viene assegnato automaticamente un soundmark (round-robin sulle clip caricate).
  2. Il soundmark parte all'ingresso del puntatore nella zona, con fade-in di 0.5 s e gain iniziale proporzionale al peso della zona (minimo 15% per restare udibile).
  3. Mentre il puntatore è nella zona, il gain del soundmark segue il peso (glide 0.5 s).
  4. Se il puntatore esce (peso < 0.08), il soundmark fa fade-out di 1 s e si chiude, lasciando la zona pronta per un nuovo ingresso.
  5. Finché il soundmark di una zona è in vita, un nuovo ingresso nella stessa zona non lo ri-triggera.
  6. Se hai attivato la segmentazione per soundmark, vale la stessa logica RMS dei segnali: porzione random dal top 30%, durata configurabile.

Registrazione

Bottone "Registra" nell'header (si sblocca dopo aver premuto "Avvia" per l'AudioContext). Cattura il bus master, ovvero tutto il mix dopo le FX chain di categoria e il master gain.

Formato:

Bitrate 256 kbps stereo. Il file si scarica automaticamente alla pressione di "Ferma registrazione" con nome soundscape-YYYYMMDD-HHmmss.<ext>.

Attenzione. "Ferma registrazione" chiude solo il file, non interrompe il playback. Per interrompere anche la composizione, usa "Ferma composizione" (nel gruppo accanto ad Avvia).

Consigli pratici di composizione

Pre-bilanciare le clip prima del caricamento

Il Composer non normalizza. Una tonica a -10 LUFS e un'altra a -22 LUFS produrranno squilibri marcati. Spendere 15 minuti con un loudness meter prima del caricamento risolve la maggior parte dei problemi di mix.

File mono per segnali puntuali

I trigger di segnali ed eventi applicano un pan automatico: se il file di partenza è stereo con un'immagine già definita, il pan aggiunto può suonare strano (doppio pan). Per segnali vocali, percussivi o puntuali, preferire file mono.

Toniche loopabili

La tonica è la struttura portante. Spendere tempo su un buon loop di 1-2 minuti che non "respiri" in modo prevedibile vale più di dieci toniche non loopabili. Se il file ha un respiro naturale (crescendo/decrescendo), cercare il punto di loop nel punto di "riposo" dell'onda.

Soundmark identitari

Resistere alla tentazione di usare campane qualsiasi o suoni generici. Il soundmark è quello che rende riconoscibile il luogo: registrare sul posto, anche con un microfono modesto, rende di più di una libreria di sample generici.

Gestire la densità con Overlap

Overlap 1 per segnali e eventi genera una tessitura "rarefatta" con eventi ben distinti. Overlap 3 genera un ambiente affollato (piazza animata, foresta densa). Dipende dal paesaggio che vuoi rappresentare.

Usare gli FX in modo minimale

Il riverbero lungo a 3 s su tutte le categorie contemporaneamente satura il mix. Meglio: riverbero medio solo sui segnali, niente riverbero sulle toniche (che spesso lo hanno già registrato). Delay: solo su eventi singolari, mai su continui.

Risoluzione problemi

"Impossibile avviare la composizione: The I/O read operation failed"
Safari non è riuscito a decodificare uno specifico file. La composizione parte comunque saltando il file problematico e logga il nome in console. Riconvertire il file in WAV o MP3 CBR risolve.
Non sento nulla dopo "Avvia composizione"
Verificare: è stata caricata almeno una tonica? Il puntatore è dentro una zona? Le zone sono effettivamente sul luogo giusto (ricalibrabili con "Modifica zone")? Il master gain è sopra 0? La categoria non è in mute o esclusa da un solo altrove attivo?
Il puntatore non è visibile
Cliccare "Centra" per riportarlo al centroide delle zone. Fare hard reload (Cmd+Shift+R) se il service worker ha una versione cachata.
Le modifiche non hanno effetto dopo il reload
Il service worker potrebbe aver cachato una versione vecchia. Hard reload risolve. In casi estremi: DevTools → Application → Service Workers → Unregister.
iOS non produce audio al primo tap
iOS richiede una gesture esplicita per sbloccare l'AudioContext. Il bottone "Avvia" serve esattamente a questo. Se non parte: toccare qualunque elemento della pagina, poi riprovare.
Scheduler attivato ma i trigger non scattano
Controllare: il puntatore è dentro una zona? Almeno una clip è caricata? L'intervallo min/max non è troppo lungo? L'overlap è sotto il limite?

Tool correlati

soundscape-audio-analysis

Pipeline Python per l'analisi delle clip prima del caricamento nel Composer. Progetto di ricerca personale, distribuito come skill di Claude Code. Consigliata per bilanciare e verificare i file destinati alle cinque categorie.

Calcola:

Workflow consigliato: analizzare le clip con soundscape-audio-analysis, verificare i livelli LUFS rispetto ai target di questa guida (sezione Preparazione dei file), correggere i livelli in DAW, poi caricare nel Composer.

Repository pubblico: github.com/francmo/soundscape-audio-analysis. Licenza: codice Apache 2.0, dati/documenti CC BY 4.0.