Mauro Graziani
Tecniche di Sintesi

Additiva


L'idea alla base della sintesi additiva è di creare un suono complesso mediante somma di componenti semplici. Tali componenti possono essere semplici sinusoidi (additiva classica) o onde più complesse, ognuna delle quali contiene un certo numero di parziali correlate.
Si tratta, comunque, di una idea generale, che trova molteplici applicazioni anche in altre tecniche di sintesi (per es. non è raro sommare due o tre spettri in FM semplice per creare un suono complesso), tanto da essere largamente utilizzata anche in sintetizzatori commerciali e VST, spesso con i nomi più disparati.

Additiva Classica

Descrizione

La sintesi additiva classica consiste nel creare un suono complesso mediante la somma di suoni semplici, tipicamente sinusoidali.
Alla base di questo metodo c'è il teorema di Fourier che mostra che ogni forma d'onda complessa può essere scomposta in una serie di componenti sinusoidali, ciascuna caratterizzata da determinati valori di ampiezza, frequenza e fase. Da qui, è stata sviluppata una tecnica di analisi basata sulla trasformata di Fourier, che è in grado di ricavare questi valori a partire da una qualsiasi forma d'onda.

Analisi suono di
      trombaPer esempio, considerate questo suono di tromba. Nella figura a fianco potete vedere la forma d'onda (a sin.) e il risultato dell'analisi (a des.) cioè il cosiddetto spettro sonoro. Ogni spike rappresenta una componente. L'altezza rappresenta l'ampiezza (con il massimo normalizzato a 1) e la posizione in x rappresenta la frequenza. Le due colonne di numeri sono rispettivamente frequenza in Hz e ampiezza delle componenti più significative.

Sintetizzando e sommando le sinusoidi riportate a destra, assegnando a ciascuna la frequenza e l'ampiezza riportate in figura, si ottiene l'onda di partenza.
Ora ascoltiamo il risultato della sintesi. Noterete che sebbene si tratti della stessa nota, il suono è simile ma non uguale.

Quello che abbiamo sintetizzato, infatti, non è il suono di tromba nella sua interezza, ma solo il suono di tromba nel punto di analisi. Non si ottiene l'intero suono di tromba perché l'analisi è relativa solo a un frammento dell'onda (all'incirca quello riportato in figura), mentre il suono non è statico, ma cambia nel tempo, dall'inizio alla fine della nota e questi cambiamenti sono molto importanti per il nostro sistema percettivo.
Di conseguenza, una sola analisi non basta per definire un suono nella sua interezza, un po' come un singolo fotogramma di un uomo che corre ricorda genericamente una corsa, ma non è la corsa e soprattutto non è quella corsa con le sue particolarità. Così come per vedere l'intera corsa servono molti fotogrammi in sequenza (un film), per avere l'intero suono servono molte analisi in sequenza in modo da cogliere anche la sua evoluzione temporale.
Con appositi software è facile eseguire una serie di analisi in sequenza e collegare i risultati in modo da ottenere una rappresentazione dell'evoluzione temporale del suono.

Nella figura a fianco si vedono l'inviluppo globale del suono di tromba già visto sopra (sin.) e l'evoluzione temporale di tutti gli armonici.
Notate come l'attacco in sfz, tipico degli ottoni e ben visibile nell'inviluppo (il colpo di lingua) si rifletta nel sonogramma con componenti che all'inizio risultano più forti e meno precise (un po' più sporche).
Notate anche come esista un leggero glissato al momento dell'attacco, più visibile nelle frequenze alte. In realtà l'entità del glissato è uguale, in percentuale, su tutte le componenti, ma, essendo l'asse Y lineare e non logaritmica, si vede di più sugli alti (se è dell'1%, a 300 Hz è 3 e a 3000 Hz è 30).
Infine, il giallo diffuso, è il rumore del soffio.
tromba: inviluppo e sonogramma
Qui abbiamo gli stessi dati riportati in uno spettrogramma in 3 dimensioni.
Si vede bene l'inviluppo di ampiezza di ciascun armonico.
Si nota anche la diversa durata di ogni armonico (quelli più alti durano meno) e si vede come ogni inviluppo sia leggermente diverso dagli altri.
Ne consegue che ogni componente deve avere un proprio generatore di inviluppo pilotato da dati diversi da quello degli altri.
La stessa cosa si può dire della frequenza che subisce leggere variazioni nel corso della nota.
spettrogramma in 3D

Con questi dati possiamo risintetizzare il suono nella sua interezza. Ecco alcuni esempi di suoni sintetizzati in additiva (fra cui la tromba). Notate che tutte le componenti (che in questi casi sono armoniche) vengono sintetizzate bene, ma invece mancano parecchi rumori che sono parte integrante del suono.
Il problema è che, secondo la teoria classica, i rumori sono composti da un numero elevatissimo di parziali. Di conseguenza, per generare un suono come il rumore del soffio, servirebbero varie centinaia di oscillatori, il che è antieconomico. Al limite si può supplire con un noise generator pilotato in sottrattiva (ma qui si entra già nel campo delle sintesi ibride).

Originale
Simulazione
Commento
piano
piano Manca il rumore del martelletto.
cello
cello
Qui manca il rumore dell'arco sulle alte frequenze.
tromba
tromba Anche qui manca un po' di rumore sulle alte frequenze. Il suono risulta forse troppo pulito, ma è buono.
oboe
oboe
Nel complesso il migliore, perché in questo suono il rumore ha minore influenza.

Fin qui abbiamo visto solo suoni armonici, ma la sintesi additiva è efficace anche nel caso di suoni con componenti inarmoniche, come, per esempio, un gong che, dopo il colpo iniziale, ritorna con inviluppo invertito e poi viene trasposto all'ottava: ascolta gong.
Qualcuno potrà obiettare che una cosa del genere si fa anche con un editor e qualche montaggio. È vero, però questo significa fissarsi sul particolare perdendo di vista il generale, perché usare la sintesi permette di fare cose del genere con qualsiasi suono, anche con uno totalmente inventato. In realtà quello che ci interessa non è rifare pari pari un suono esistente (per questo si usa il campionamento), m costruire suoni che risultino non banali all'ascolto e siano anche suscettibili di modifiche.

Schema funzionale

Tutti gli esempi di cui sopra sono stati realizzati con un oscillatore sinusoidale con inviluppi su ampiezza e frequenza per ogni componente (solo il gong non ha l'inviluppo in frequenza).
Lo schema è il seguente:

schema

dove il numero delle parziali dipende dal suono da sintetizzare, ma è mediamente circa 20 (es. 4/5 sulle note molto alte; fino a 50 sui bassi).
In questo schema è evidente che l'additiva classica si implementa con un modulo (la singola parziale) ripetuto N volte.

Caratteristiche

Vantaggi

Facilità di comprensione

Spettro variabile nel tempo
Perché ogni componente ha il proprio inviluppo di ampiezza e frequenza.
Vaste possibilità timbriche
Suoni con componenti sia armoniche che inarmoniche. In teoria si può fare tutto esclusi i rumori.

Limiti

Grande quantità di dati
Questo è il problema maggiore. Considerando che un suono complesso ha mediamente 20/30 componenti, si devono gestire due inviluppi per ogni parziale (tot. 40/60). Se gli inviluppi di frequenza sono mediamente semplici, quelli di ampiezza hanno ben più dei classici 4 segmenti. Ecco, per es. il grafico degli inviluppi di ampiezza del suono di tromba di cui sopra.

In effetti, il problema della quantità di dati è la vera palla al piede della sintesi additiva classica, sia dal punto di vista operativo che da quello concettuale.
I sistemi di sintesi più completi lo risolvono fornendo appositi sottoprogrammi di analisi/risintesi che gestiscono questa massa di dati rendendola trasparente all'utente (per es. Csound ha hetro, con cui sono stati realizzati gli esempi di cui sopra e pvanalize; vedi qui), il che risolve parte dell'aspetto operativo, però, concettualmente, porta l'utente a basare la propria tavolozza timbrica sul concetto di preset rendendo difficile pensare a quelle mutazioni e trasformazioni che invece costituiscono una delle caratteristiche più interessanti dei sistemi digitali.
Non si possono generare rumori
Perché, secondo la teoria classica, i rumori sono composti da un numero elevatissimo di parziali. Di conseguenza, per generare un suono come il rumore del soffio, servirebbero varie centinaia di oscillatori, il che è antieconomico. Al limite si può supplire con un noise generator pilotato in sottrattiva (ma qui si entra già nel campo delle sintesi ibride).
Risorse elevate
Un oscillatore con due inviluppi per componente porta a una media di 20 oscillatori e 40 inviluppi per nota, semplicemente troppo per generare una polifonia accettabile con computer di media potenza.
Polifonia limitata
A causa delle risorse necessarie di cui sopra.

Additiva Classica semplificata

Visti i limiti di cui sopra, si è cercato di semplificare l'additiva classica in modo da renderla un po' più maneggevole. Ovviamente si perde in qualità, però si deve cercare di eliminare quello che percettivamente è meno importante o quello che può essere generato da un qualche sistema automatico.

Riduzione dei dati

In molti casi la variazione in frequenza delle parziali può essere
  1. così piccola da risultare ininfluente (es. gran parte dei suoni a evoluzione libera) oppure
  2. non controllata e simulabile mediante un sistema automatico (es. piccola variazione randomica) o ancora
  3. collegata ad una azione specifica dell'esecutore (es. vibrato).
In questi casi è possibile (a) eliminare l'inviluppo sulla frequenza o (b) sostituirlo con un random o (c) sostituirlo con un generatore. In tutti e tre i casi si ottiene una riduzione sensibile dei dati da maneggiare (nel caso (a) c'è anche una riduzione delle risorse).

Per l'inviluppo di ampiezza, la cosa è più complessa, tuttavia anche qui molte variazioni sono piccole e casuali, dovute al fatto che l'esecutore non è una macchina e non fornisce sempre la stessa quantità di energia. Si tratta quindi di valutare quali variazioni possano essere sostituite da un random o totalmente eliminate procedendo a una interpolazione dei valori degli inviluppi.

Accorpamento di armoniche

Se nel corso dell'analisi si nota che alcune armoniche mostrano un inviluppo di forma pressoché identica, sia pure con ampiezza di picco diversa, è possibile memorizzare un'onda che contiene solo quegli armonici con ampiezze relative adeguate. In tal modo varie armoniche vengono sintetizzate con un solo oscillatore e due inviluppi.
Il prezzo è una minore mobilità del suono e il fatto che questa tecnica può essere utilizzata solo se le componenti da accorpare sono strettamente armoniche; qualsiasi deviazione dalla serie armonica viene annullata.

Interpolazione fra forme d'onda

Questo sistema consiste nel prendere vari piccoli campioni di forma d'onda dal suono da riprodurre, a vari instanti della sua evoluzione temporale, per poi interpolare trasformando gradualmente una forma d'onda nella successiva. In questo modo si genera un suono in evoluzione anche continua con pochissime risorse di calcolo, ma maggiori risorse di memoria.
Se poi il suono ha uno stato di tenuta (sustain), come nei suoni che dipendono dall'energia continuamente fornita dall'esecutore (strumenti a fiato, archi, organo), l'intera fase di sustain può essere simulata ciclando un frammento di suono anche molto breve.

Inserimento di campionamenti

Per migliorare la qualità della simulazione, disponendo di una certa quantità di memoria, si possono affiancare alla tecnica precedente dei campionamenti delle fasi più critiche del suono, per es. l'attacco. Esempi di questo sistema si possono ascoltare su vari sintetizzatori commerciali.
Ecco un esempio di pianoforte, vibrafono e marimba in cui la prima parte del suono è campionata mentre la seconda è creata con accorpamenti e interpolazioni. La qualità non è alta ma nemmeno orrenda.

Implementazione

In Max/MSP

Patch: additiva_base.maxpat
Questa patch è additiva senza inviluppi, molto simile a quella con cui si crea l'onda sonora nel look-up table oscillator, con la differenza fondamentale che qui si possono specificare i rapporti di frequenza delle componenti e quindi si possono creare anche componenti non armoniche. Non solo. Si possono anche ottenere componenti quasi armoniche cioè con una piccolissima deviazione rispetto all'armonica (es. 2.004 o 1.998), come accada spesso nella realtà.
Inoltre, l'input delle ampiezze è sia in forma grafica che numerica, consentendo anche di introdurre dati ottenuti, per es. dall'analisi.
Lo studente dovrebbe soffermarsi su questa patch creando varie combinazioni di ampiezze e frequenze per verificarne l'effetto sonoro.
additiva base
Patch: additiva_adsr
In questa patch ogni componente ha il proprio inviluppo di ampiezza. Rispetto all'additiva classica, qui si procede a una massiccia riduzione dei dati come segue:
additiva_adsr