Presentazione - Luca Andrea Ludovico

Lezione 23
Tecniche di sintesi avanzate
Programmazione timbrica - Prof. Luca A. Ludovico
Sommario della lezione
• Nella lezione odierna verranno analizzate principalmente
2 tecniche di sintesi:
1. Sintesi vettoriale
2. Sintesi granulare
• Si farà cenno a tecniche avanzate basate sull’uso di
specifici opcode, in particolare la sintesi granulare con
caricamento di suoni campionati e la sintesi per modelli
fisici.
Programmazione timbrica - Prof. Luca A. Ludovico
Tecniche di sintesi avanzate
Sintesi vettoriale
• Un metodo semplice per generare suoni a spettro variabile consiste
nell’utilizzare - anziché una singola tabella - una dissolvenza
incrociata tra tabelle, ciascuna contenente un diverso modello
timbrico. Può essere considerata una variante della sintesi additiva.
• Esempio semplice: dissolvenza lineare tra 2 timbri
Il passaggio tra l’una e l’altra sorgente è dato dal movimento su un
segmento di retta che ha per estremi il 100% di un timbro e il 100%
dell’altro.
→23_01_sintesi_vettoriale_lin.csd
• Esempio complesso: quando le sorgenti sono più di 2, il movimento
ha luogo su un piano o nello spazio. Nell’esempio si ha movimento
ciclico tra 4 sorgenti disposte ai punti cardinali di una circonferenza.
→23_02_sintesi_vettoriale_circ.csd
Programmazione timbrica - Prof. Luca A. Ludovico
Tecniche di sintesi avanzate
Sintesi granulare
• Il suono in generale è un fenomeno dinamico, in continua evoluzione.
L’approccio della sintesi granulare consiste nell’identificare brevi
lassi di tempo durante i quali i parametri del suono non variano, e
dunque la sensazione di movimento si ottiene attraverso il susseguirsi
di brevi momenti di staticità (analogia con i fotogrammi di una
pellicola).
• La sintesi granulare nasce dalla possibilità di generare un’alta densità
di piccoli eventi acustici, detti grani, la cui durata in genere varia da
10 a 100 ms.
• La caratteristica di un grano di suono è quella di avere un inviluppo
generalmente simmetrico
Programmazione timbrica - Prof. Luca A. Ludovico
Tecniche di sintesi avanzate
Caratteristiche del grano
• La caratteristica di un grano di suono è quella di avere un
inviluppo generalmente simmetrico (campana di tipo
gaussiano, attack-sustain-decay, attack-decay, ecc.).
• I grani possono essere:
– intervallati da pause, e in tal caso verranno percepiti come eventi
singoli;
– accostati, dando un senso di continuità, di flusso sonoro
ininterrotto al cui interno si percepisce comunque della
discontinuità;
– parzialmente sovrapposti tra loro, aumentando la sensazione di
rugosità del suono.
Programmazione timbrica - Prof. Luca A. Ludovico
Tecniche di sintesi avanzate
Realizzazione in Csound
• Un metodo piuttosto complesso per emulare la sintesi
granulare è utilizzare la reinizializzazione all’interno del
singolo evento sonoro.
Attraverso opportuni parametri è possibile impostare il
comportamento della sintesi granualare, in merito a:
–
–
–
–
Inviluppo del grano
Durata della fase di attacco e rilascio del grano
Ampiezza del grano
Frequenza base del grano e percentuale di scostamento
randomico dalla frequenza base
– Distanza temporale tra grani
• Esempio: →23_03_granulare_reinit.csd
Programmazione timbrica - Prof. Luca A. Ludovico
Tecniche di sintesi avanzate
Realizzazione in Csound: opcode grain
• Un metodo molto più compatto consiste nell’utilizzare l’opcode
grain, dotato di numerosi argomenti per fissarne il comportamento.
• Sintassi: ares grain xamp, xpitch, xdens, kampoff, kpitchoff, kgdur, \
igfn, iwfn, imgdur [, igrnd]
• Principali argomenti:
– xamp – ampiezza di ciascun grano;
– xpitch – altezza di ciascun grano. Per usare la frequenza di un
suono campionato in ingresso, utilizzare la seguente formula sndsr
/ ftlen(igfn) ove sndsr è la frequenza di campionamento originaria
del suono igfn;
– xdens – densità del grano misurata in grani al secondo (può essere
costante o variabile, come del resto iI precedenti argomenti);
Programmazione timbrica - Prof. Luca A. Ludovico
Tecniche di sintesi avanzate
Realizzazione in Csound: opcode grain
• Sintassi: ares grain xamp, xpitch, xdens, kampoff, kpitchoff, kgdur, \
igfn, iwfn, imgdur [, igrnd]
• Altri argomenti:
– kampoff – massima deviazione di ampiezza da xamp.
Quindi il valore massimo di ampiezza per un grano è xamp +
kampoff, mentre il minimo è xamp.
Se kampoff è posto a 0, non c’è componente randomica per
l’ampiezza dei grani;
– kpitchoff – massima deviazione da xpitch in Hz. Le considerazioni
sono simili a kampoff;
– kgdur – durata del grano in secondi. Il valore massimo dovrebbe
essere dichiarato in imgdur. Infatti se kgdur a un certo istante
diventa maggiore di imgdur, la durata viene troncata a imgdur.
Programmazione timbrica - Prof. Luca A. Ludovico
Tecniche di sintesi avanzate
Realizzazione in Csound: opcode grain
• Sintassi: ares grain xamp, xpitch, xdens, kampoff, kpitchoff, kgdur, \
igfn, iwfn, imgdur [, igrnd]
• Altri argomenti:
– igfn – l’identificativo della tabella funzione contenente la forma
d’onda del grano. Può essere una semplice sinusoide come pure
un suono campionato, caricato in tabella tramite GEN01 (ma
questo dà numerosi problemi > vedi opcode granule);
– iwfn - l’identificativo della tabella funzione contenente
l’inviluppo d’ampiezza del grano;
– imgdur – massima durata in secondi del grano, cioè il massimo
valore che è possibile assegnare a kgdur;
– igrnd (opzionale) – se diverso da zero, disattiva la
randomizzazione dell’offset nella lettura dalla tabella igfn, cioé
tutti i grani partono leggendo l’inizio della tabella igfn anziché
una posizione casuale.
Programmazione timbrica - Prof. Luca A. Ludovico
Tecniche di sintesi avanzate
Realizzazione in Csound: opcode granule
• Per un controllo ancora più raffinato, e soprattutto per
gestire meglio i suoni contenuti in un file audio, è
possibile utilizzare l’opcode granule, che rappresenta
un’implementazione più recente. Il numero di argomenti
associato è molto alto (più di 20).
• Esempio di uso di grain con forma d’onda sinusoidale per
il grano: →23_04_granulare_grain.csd
• Esempio di uso di granule con suono campionato:
→23_05_granulare_granule.csd
Programmazione timbrica - Prof. Luca A. Ludovico
Tecniche di sintesi avanzate
Sintesi per modelli fisici
• La sintesi per modelli fisici (physical modeling) permette
la produzione di suoni con alto grado di similitudine
rispetto ai suoni reali, o caratterizzati da elevato
realismo anche se non si tratta di imitazioni di timbriche
esistenti.
• Altre tecniche hanno come obiettivo riprodurre le
caratteristiche del suono, mentre la sintesi per modelli
fisici parte dalle caratteristiche fisiche dello strumento
generatore di suono e ne costruisce un modello
matematico.
Programmazione timbrica - Prof. Luca A. Ludovico
Tecniche di sintesi avanzate
Paradigma della massa e della molla
Paradigma della massa e della molla (Hiller e Ruiz, 1971)
• Si specificano le dimensioni fisiche e le caratteristiche degli oggetti
vibranti (lunghezza, larghezza, spessore, massa, elasticità, ecc.).
• Si specificano poi le condizioni al contorno, cioè in che modo tali
corpi sono vincolati tra loro e ai loro supporti (supposti fissi).
• Si specificano le condizioni iniziali, ad es. la posizione di partenza di
una corda.
• Si applica una eccitazione, descritta matematicamente, e si studia il
suo effetto sul sistema tramite equazioni differenziali, ottenendo
l’equazione d’onda che descrive il suono risultante.
Programmazione timbrica - Prof. Luca A. Ludovico
Tecniche di sintesi avanzate
Sintesi modale
Sintesi modale (Calvet, Laurens e Adrien, 1990)
• Premessa: un oggetto vibrante può essere rappresentato come un
insieme di sottostrutture semplici (il ponticello del violino,
l’archetto, ecc.).
• Con questo approccio, ciascuna sottostruttura è caratterizzata da un
insieme di dati detti modali, che consistono di due elementi:
–
–
frequenze proprie e coefficienti di smorzamento dei modi di risonanza della
struttura;
insieme di coordinate che rappresentano la forma dei modi di vibrazione della
sottostruttura.
• Vantaggio: approccio modulare, che permette ad esempio di
modellare una corda di violoncello percossa con mazza di tamburo.
Programmazione timbrica - Prof. Luca A. Ludovico
Tecniche di sintesi avanzate
Modello MSW
Modello di McIntyre, Schumacher e Woodhouse
(1983)
• Studia in dettaglio la nascita e l’evoluzione delle forme
d’onda e i meccanismi fisici che le governano.
• La sintesi che ne deriva presuppone:
– un’eccitazione non lineare (ad es. oscillatore + blocco
di distorsione per simulare ancia, che genera un
segnale e lo distorce);
– un risuonatore lineare (ad es. un filtro di complessità
arbitraria).
Programmazione timbrica - Prof. Luca A. Ludovico
Tecniche di sintesi avanzate
Modello a guida d’onda (waveguide)
Modello a guida d’onda (Smith, Cook et al., 1982-93)
• Ha applicazioni commerciali, essendo alla base dei
sintetizzatori Yamaha, Korg e Roland.
• E’ molto complesso da trattare, quindi verrà solo citato.
• Per approfondimenti:
https://en.wikipedia.org/wiki/Digital_waveguide_synthesis
Programmazione timbrica - Prof. Luca A. Ludovico
Tecniche di sintesi avanzate
Algoritmo di Karplus e Strong
• Si tratta di uno dei primi algoritmi di sintesi per modelli fisici, o
meglio di un precursore. Idea di base: partire da un rumore e operare
un filtraggio ricorsivo fino ad ottenere un suono a spettro molto più
semplice, al limite una sinusoide.
• Vincolo: scarsa potenza computazionale dei microcomputer di inizio
anni ‘80. Quindi implementazione semplice ed efficace:
–
–
–
–
tabella riempita inizialmente da generatore di rumore con valori casuali;
lettura circolare da tabella, mandando il valore in uscita;
il valore viene anche ritardato di un campione, invertito di segno e sommato al
campione successivo, il cui valore viene scritto in tabella;
nel tempo il segnale si attenua perdendo armoniche alte fino a scomparire.
• La frequenza del suono prodotto dipende dalla lunghezza della
tabella e dalla frequenza di campionamento.
Programmazione timbrica - Prof. Luca A. Ludovico
Tecniche di sintesi avanzate
Algoritmo di Karplus e Strong
Programmazione timbrica - Prof. Luca A. Ludovico
Tecniche di sintesi avanzate
Implementazione in Csound: opcode pluck
• Csound prevede l’opcode pluck che implementa l’algoritmo di
Karplus e Strong con alcuni perfezionamenti.
• Sintassi: ares pluck kamp, kcps, icps, ifn, imeth [, iparm1] [, iparm2]
–
–
–
–
–
kamp, kcps – ampiezza e frequenza del suono
icps – valore di pitch atteso in Hz, usato per impostare un buffer di 1 ciclo di
campioni audio che saranno smorzati nel tempo. Di solito è legato a kcps (ha
uguale valore), ma può essere volutamente alterato;
ifn – numero di funzione per inizializzare il buffer di decadimento ciclico. Se pari
a 0, si utilizza una sequenza random;
imeth – metodo di decadimento naturale. Ne esistono 6 predefiniti, numerati da 1
a 6: media semplice, media forzata, percussione, percussione forzata, media
pesata, filtro ricorsivo del primo ordine. Si veda l’esempio sotto. Alcuni metodi
sfruttano i valori espressi in parm1 e parm2 come argomenti.
iparm1, iparm2 (opzionali) – valori il cui significato cambia a seconda del metodo
di decadimento naturale prescelto.
• Esempio: →23_06_pluck.csd
Programmazione timbrica - Prof. Luca A. Ludovico
Tecniche di sintesi avanzate