You are on page 1of 8

19/7/2014 Loscillatore digitale

http://www.fisica.unina.it/mfa/acust/materiale%20sito/Sistemi%20di%20sintesi/oscillatore.htm 1/8
L'oscillatoredigitale

Introduzione

Uno degli aspetti ritenuti ancora'misteriosi' tra i non addetti della Computer Music ilsistema tramite il quale
un calcolatore in grado di generareun suono: in fondo, nella concezione comune, un elaboratoreelettronico
una 'crunching numbers machine'(1), e questa semplice attribuzione di 'banali' capacitnumeriche
sembrerebbe escluderlo dalla capacit di produrrequalcosa di cos affascinante come un suono.
In realt, a parte celeberrimeasserzioni (2), dovrebbe risultare evidente che qualsiasi strumento musicale una
macchina, progettata basandosi su precise regolematematiche derivate da problemi acustici analizzati e risolti:
equesta modalit operativa (che dovrebbe farci riflettere suquanto sia errato separare concettualmente arte e
scienza, in tutti iloro aspetti) a maggior ragione perfettamente applicabile adun computer, con in pi il
vantaggio che lo stesso, propriograzie alla sua programmabilit, in grado dicostruire virtualmente qualsiasi
tipo di 'strumento' si desideriottenere.
La duttilit dell' elaboratorecerto impone delle conoscenze di tipo tecnico-scientifico onde poterprogettare lo
'strumento' desiderato, ma ci non devespaventarci, bens solo stimolarci; e vorrei di nuovorammentare a tutti
la meravigliosa massima del sommo Johann SebastianBach: "Quaerendo invenietis", cio
"Cercandotroverete".
Abbiamo gi visto (nellasezione dedicata all'Acustica) che la condizione necessariaperch un corpo possa
produrre un suono che esso siaelastico, e che possa cio essere posto in vibrazione grazieall' oscillazione
delle molecole che lo compongono: il trasferimentodi energia al corpo stesso avviene negli strumenti
acusticiattraverso varie modalit di eccitazione (lo sfregare,pizzicare o percuotere di una corda, l'immissione
di aria che eccital'ancia di uno strumento a fiato o di una canna d'organo, ecos via):fisicamente parlando, tutte
queste sorgenti sonorevengono definite sistemi oscillanti.
Nell' ambito della MusicaElettronica, il modulo (reale o virtuale, analogico o digitale chesia) preposto alla
generazione di un segnale periodico dotato di unadeterminata frequenza viene definito, mutuandolo dal
concetto fisico,oscillatore, ed in questo capitolo ci occuperemo di definire leproblematiche inerenti la sua
progettazione e realizzazione mediantecomputer, facendo riferimento alla simbologia comunemente
eduniversalmente accettata riguardante i linguaggi di sintesi permacchine virtuali come Csound del MIT.

L' oscillatore

L' oscillatore il cuore diqualsiasi sistema musicale elettronico, sia esso analogico odigitale: costituisce l' unit
generatrice pereccellenza.
Lo scopo di un oscillatore quello di produrre una forma d'onda periodica. Gli ingressi dicontrollo dell'
oscillatore hanno lo scopo di determinare l'ampiezza, la frequenza, la fase ed il tipo di forma d'onda che
19/7/2014 Loscillatore digitale
http://www.fisica.unina.it/mfa/acust/materiale%20sito/Sistemi%20di%20sintesi/oscillatore.htm 2/8
essoproduce. Nella Fig.1, viene rappresentato il simbolo pi usatoper indicare un oscillatore: il nome della
funzione o lastilizzazione grafica di un periodo al suo interno definiscono iltipo di forma d'onda (e quindi il suo
contenuto spettrale,cio il timbro) che esso sar in grado di produrre.
Il valore numerico applicato all'ingresso di sinistra del modulo rappresenta l'ampiezza di picco delsegnale da
esso prodotto, e il valore numerico applicato al suoingresso destro rappresenta invece la frequenza alla quale
l'oscillatore ripeter la forma d'onda.


Fig.1

La frequenza pu esserespecificata in due modi:
attraverso un valore espressoin Hz (o cps, cio cicli per secondo);
attraverso un samplingincrement (S.I.).
Un sampling increment (S.I.) un numero proporzionale alla frequenza: il suo significatosar spiegato fra
poco.
Vediamo ora il significato dell'ingresso FASE, posto sul lato destro dell' oscillatore: essodetermina a quale
punto l'oscillatore comincia a lavorare sulla formad'onda. L' ingresso FASE normalmente non specificato
inquanto il suo utilizzo richiesto solo per scopispecifici.
L'uscita dell' oscillatore una sequenza di campioni numerici che formano un segnalerappresentante la forma
d'onda.
Vediamo ora di definire come lavoraun oscillatore digitale, e quali sono le varie tecniche utilizzateper operare
con esso.
Uno dei sistemi di implementazionedell' algoritmo dell' oscillatore definisce la forma d'onda come unafunzione
matematica del tempo: quindi, allo scopo di generare un'onda sinusoidale con questa funzione, l' algoritmo
dovrebbe calcolareil valore della funzione matematica, ad es. il seno, per ognicampione. Questo metodo,
chiamato valutazione diretta, lentoin maniera inaccettabile per qualsivoglia tipo difunzione.
Per rendere efficiente la procedura,la maggior parte degli oscillatori digitali usa una forma d'ondamemorizzata
in una tabella, i cui valori sono calcolati prima dellagenerazione di qualsiasi suono.
Il computer calcola il valore dimoltissimi punti su di un ciclo di forma d'onda, e li memorizza inuna zona della
sua memoria come un blocco di dati, che viene chiamatotabella d'onda.
19/7/2014 Loscillatore digitale
http://www.fisica.unina.it/mfa/acust/materiale%20sito/Sistemi%20di%20sintesi/oscillatore.htm 3/8
Una tabella d'onda (o wavetable)consiste quindi in una lunga sequenza di numeri, ciascuno dei
qualicorrisponde all'ampiezza raggiunta all'i-esimo campione dal segnalememorizzato,ovvero al valore di
successivi punti sulla forma d'onda.
Una volta che la forma d'onda stata memorizzata, l'oscillatore pu generare ivalori dei campioni recuperando
(leggendo) i loro valori dallatabella d'onda, il che costituisce per il computer un' operazionemolto pi veloce
che non calcolare direttamente la formad'onda.
Facciamo un esempio, allo scopo direndere pi chiaro quanto finora esposto, considerando lawavetable di
fig.2:

Fig.2

essa contiene un ciclo di un' ondasinusoidale memorizzata in 512 locazioni di memoria.
Ciascuna locazione (o cella) contrassegnata da un indirizzo, indicato in questo caso dai numeriinteri che
vanno da 0 a 511. L' algoritmo dell' oscillatore produceun valore numerico, chiamato fase, che indica
l'indirizzo dellalocazione correntemente in uso. All' inizio dell' operazione, all'oscillatore fornito un valore
iniziale della fase che indicaquale sar la prima locazione di memoria nella tabella chedovr essere letta. Per
ogni campione, l'algoritmo dell'oscillatore ottiene il valore corrente della fase (rappresentato conla lettera
greca )e lo somma ad un valore che proporzionale alla frequenza dioscillazione desiderata. Il nuovo valore
della fase cosottenuto indirizza la locazione di memoria della tabella chesar usata per calcolare il prossimo
campione in uscita. L'ammontare del valore che viene sommato alla fase per ciascun campione chiamato
sampling increment (S.I.): esso corrisponde alladistanza nella tabella fra successive locazioni selezionate
dall'algoritmo dell'oscillatore.
Quando il valore della fase supera ilvalore che rappresenta l'indirizzo dell' ultima locazione dellatabella, esso
"rimandato indietro" all' inizio del puntoiniziale di lettura della tabella (che pu essere dato unqualsiasi valore di
19/7/2014 Loscillatore digitale
http://www.fisica.unina.it/mfa/acust/materiale%20sito/Sistemi%20di%20sintesi/oscillatore.htm 4/8
)sottraendo il numero totale delle locazioni di memoria della tabellada quella fase, cio la fase corrente. In
questo esempio, ilvalore dell' ultimo indirizzo della tabella 511. Se = 512 dopo aver addizionato il sampling
increment, allora l'algoritmo dell' oscillatore dovrebbe modificare la fase in modo taleche = - 512 = 0, di
fatto riportando la fase alla prima locazionedella tabella. Si potrebbe quindi dire che l' algoritrmo
dell'oscillatore scandaglia la tabella in circolo.
Riprendiamo il nostro esempio diFig.2, e supponiamo che la frequenza di campionamento sia di 40 kHz(cio
40000 Hz) e che l' oscillatore sia programmato perscandire la tabella con un sampling increment di uno,cio
unalocazione di memoria alla volta. Ci sono 512 locazioni nella tabellae la tabella stessa contiene un ciclo
d'onda: quindi, per produrre unciclo, l'oscillatore dovrebbe scandire 512 campioni.
Di conseguenza, la frequenza prodottadall' oscillatore dovrebbe essere 40000/512 = 78.13 Hz.
Se poi volessimo ottenere unafrequenza un' ottava pi alta, l' oscillatore dovrebbe essereprogrammato per
leggere un campione si ed uno no (S.I.=2).Poich l'oscillatore attraverser la tabella al doppiodella velocit, si
otterranno la met dei campioni perciclo (cio 256), e la frequenza prodotta quindi sardi 40000/256 =
156.25 Hz.
Data una data tabella con N locazionidi memoria, per ottenere una frequenza f
o
, il samplingincrement (S.I.)
desiderato si otterr mediante laformula:
S.I. = N(f
o
/f
s
)
Ad esempio, se N = 512, e lafrequenza di campionamento (f
s
) di 40 kHz, unsegnale con una frequenza f
o
di 2.5 kHz (2500 Hz)richieder un sampling increment (S.I.) di 32: vale a dire,l'oscillatore partir alla
locazione zero, e successivamenteverranno indirizzate le locazioni 32, 64, 128... dellatabella.
Naturalmente, tranne che per certefrequenze selezionate, il sampling increment (S.I.) non sarun intero esatto.
Facciamo un ulteriore esempio per meglio chiarirequesto importantissimo concetto:
se N = 512, e f
s
= 40 kHz,per produrre un suono della frequenza di 440 Hz (3)dovremo avere un sampling
increment (S.I.) di 5.632(4). Supponiamo che, in questo caso, l' oscillatore parta con fase = 0: alla lettura del
primo campione, esso ne ricuperer ilvalore da quella locazione (cio 0). Al campione successivo,la fase sar
0 + 5.632 = 5.632. Come far alloral'oscillatore ad adoperare una fase con una parte decimale, se
lelocazioni della tabella d'onda sono contrassegnate per mezzo dinumeri interi? Esistono tre tecniche di base
per risolvere questoproblema: il troncamento, l'arrotondamento e l'interpolazionelineare.
Vediamo cosa accade con la tecnicadel troncamento: la parte decimale della fase ignorata neldeterminare la
locazione della forma d'onda, cos in questocaso il valore preso dalla locazione 5: per calcolare lafase
successiva, tuttavia, l'oscillatore include nella sua sommaanche la parte frazionaria della fase corrente, vale a
dire che siavr 5.632+5.632 = 11.264, cosa che far si che ilvalore successivo venga prelevato dalla
locazione 11.
Quando viene usata la tecnica dell'arrotondamento, la locazione presa il valore della fasearrotondato all'
intero pi vicino, quindi, considerando ilnostro esempio, i primi tre valori della tabella d'onda vengono
presirispettivamente dalle locazioni 0, 6, ed 11.Con l' arrotondamento siottiene una forma d'onda solo
leggermente pi accuratarispetto al troncamento e comunque pi onerosa in termini dicosto computazionale.
Delle tre tecniche, l'interpolazionelineare d in assoluto la pi accurata approssimazionedella forma d'onda.
Quando una fase cade fra due valori interi, ilvalore della forma d'onda calcolato come una
19/7/2014 Loscillatore digitale
http://www.fisica.unina.it/mfa/acust/materiale%20sito/Sistemi%20di%20sintesi/oscillatore.htm 5/8
combinazionedelle due locazioni fra le quali cade la fase: se, come nel nostroesempio base, la fase 5.632, l'
algoritmo dell' oscillatoreinterpola il valore della forma d'onda come una media pesata dellelocazioni 5 e 6. In
questo caso, la fase il 63.2% delladistanza fra 5 e 6, e quindi la forma d'onda dovrebbe esserecalcolata
come la somma del 63.2% della locazione 6 ed il 36.8% dellalocazione 5. L'intero processo pu essere visto
come se siprendesse il valore della forma d'onda su di una linea retta checonnette i valori di locazioni di
memoria in successione.L'interpolazione lineare aggiunge un' ulteriore moltiplicazione all'algoritmo dell'
oscillatore e quindi incrementa l' ammontare deltempo di calcolo richiesto.
Proviamo a chiarire il metododell'interpolazione lineare utilizzando un approccio matematico: datidue
campioni successivi in tabella (il cui valore indice rispettivamente n e n + 1) ed i relativi valori di faseV(n) e
V(n+1), il nuovo valore di fase (ottenutointerpolando linearmente tra i due campioni) sar datoda:
considerando ,in quanto se , allora ,mentre se ,allora
,come illustrato dalla figura che segue (Fig.3).



Fig.3

L'inaccuratezza introdotta nellaforma d'onda da una qualsiasi delle tre tecniche discusseprecedentemente
mette in evidenza il fatto che esse introducono unacerta forma di rumore o altro segnale indesiderato nel
suonoprodotto. L' ammontare e la qualit del rumore generatodipende dalla forma d'onda, dalla dimensione
della tabella, dalvalore del sampling increment (S.I.) e dalla tecnica usata. Ingenerale, pi grande la
dimensione della tabella,tanto migliore il rapporto segnale/rumore (signal-to noiseratio, o S/N). Esistono
modelli matematici ben noti per descriverequesto rapporto e la sua stretta correlazione con gli aspetti
oradescritti, ma una loro dimostrazione e spiegazione andrebbe al dil delle finalit del presente scritto: ci
sembra quipi importante, invece, passare a considere le problematicheinerenti la definizione di forma d'onda.

19/7/2014 Loscillatore digitale
http://www.fisica.unina.it/mfa/acust/materiale%20sito/Sistemi%20di%20sintesi/oscillatore.htm 6/8
Definizione della formad'onda

Un musicista che si trovi ad operarecon sistemi computerizzati per la generazione del suono non habisogno,
normalmente, di specificare direttamente un valore numericoper ciascuna locazione della tabella d'onda,
poich,ordinariamente, i linguaggi per la Computer Music consentono difornire questi dati in maniera molto
pi comoda ed efficiente,vale a dire:
o fornendo la rappresentazionedella funzione d'onda nel dominio del tempo;
o specificando quali e quantecomponenti frequenziali (le parziali) essa contiene, ed allora larappresentazione
del nostro segnale nel dominio dellafrequenza (e quindi se ne 'visualizza' lo spettro).
Nella rappresentazione nel dominiodel tempo, la definizione della forma d'onda pu essere fattaspecificando l'
equazione matematica che correla l'ampiezza dellaforma d'onda desiderata alla sua fase.
Un' altra possibilit offerta per mezzo della definizione a tratti d'onda lineari: qui, laforma d'onda viene
definita specificando un numero di puntirappresentativi della stessa; questi punti, chiamati breakpoints,sono i
punti dove la forma d'onda cambia pendenza. Quando il softwaredi controllo riempie la tabella d'onda, esso
connette i breakpointscon segmenti di retta. Nella maggior parte dei linguaggi, Csoundcompreso, i
breakpoints sono specificati attraverso una coppia dinumeri: la fase ed il valore d'ampiezza a quella fase.
La specificazione di forme d'onda intermini di dominio del tempo pu comunque portare ad ottenerequalche
volta dei risultati inaspettati (ed indesiderati).Infatti, sealla frequenza alla quale si ripete, la forma d'onda
possiede qualchearmonica sopra la frequenza di Nyquist(cio > fs/2), essesi 'ripiegheranno sopra',
producendo quindi nel suono delle frequenzeinaspettate.
Facciamo un esempio: supponiamo che,in un sistema con una frequenza di campionamento di 20000 Hz
(20kHz), si progetti uno strumento la cui funzione d'onda in tabella un' onda a dente di sega (Fig.4) che sia
usata per unoscillatore programmato per produrre una nota alla frequenza di 1760Hz.



Fig.4

La sesta armonica (6 ) di 1760Hz dovrebbe essere (1760 * 6) = 10560 Hz, che pialta della frequenza di
Nyquist in questo caso, ovvero 10000 Hz.Quindi, la sesta armonica dovrebbe 'ripiegarsi' su 20000 - 10560
=9440 Hz. Allo stesso modo, la settima armonica, ovvero 12320 Hz,dovrebbe prodursi alla frequenza di
7680 Hz (perch 20000 -12320 = 7680), e cos via per tutte le altre armonichesuperiori alla frequenza di
Nyquist corrente (10000 Hz). La Fig.5illustra lo spettro teoricamente atteso senza considerarel'aliasing:
19/7/2014 Loscillatore digitale
http://www.fisica.unina.it/mfa/acust/materiale%20sito/Sistemi%20di%20sintesi/oscillatore.htm 7/8
Fig.5
e la Fig.6 mostra come appaiano lecomponenti inaspettate all' uscita dei convertitori D/A.
Fig.6

Un' onda a dente di sega possiede unasignificativa quantit di energia nelle sue armonichepi alte, e quindi il
suo spettro dovrebbe suonare in modo noncompletamente armonico. Quindi, per evitare il foldover (o
aliasing)quando si specifica una forma d'onda nel dominio del tempo, unodovrebbe definire una forma d'onda
con poca energia significativanelle armoniche pi alte.
Un sistema pi sicuro perspecificare una funzione d'onda nel dominio della frequenza,definendo quindi il suo
spettro. In questo caso, in fase di progettosi specifica il numero d'ordine della parziale, la sua ampiezza
edeventualmente la sua fase. Il linguaggio quindi calcola edimmagazzina un singolo ciclo della forma d'onda
corrispondente.Spesso, le ampiezze delle armoniche sono definite in relazione all'ampiezza della
fondamentale. Ad esempio, si potrebbe definire unafondamentale con un certo valore d'ampiezza in cui la
terza armonicaabbia un' ampiezza di 10 dB sotto la fondamentale ed una settimaarmonica che abbia un'
ampiezza di 22 dB sotto la fondamentale.Quindi, quando la forma d'onda viene definita in termini di
contenutospettrale, chi progetta lo strumento facilmente e pienamenteconsapevole degli esatti valori attribuiti
alle pi altearmoniche contenute nello spettro.
Il fenomeno dell' aliasing in certetipologie di forme d'onda pu quindi essere facilmente evitatolimitando la
massima frequenza fondamentale prodotta dall'oscillatore. Ad esempio, in un sistema che abbia una frequenza
dicampionamento (sampling rate) di 40 kHz (40000 Hz), la frequenzafondamentale di un oscillatore in grado
di produrre 10 armoniche(parziali) nel suo spettro non dovrebbe superare i 2000 Hz(5)(2 kHz).
Si noti inoltre che un' oscillatore afrequenza fissa campiona la forma d'onda immagazzinata con unsampling
increment (S.I.) costante, il che significa che vienegenerata una forma d'onda periodica, e cos lo spettro
19/7/2014 Loscillatore digitale
http://www.fisica.unina.it/mfa/acust/materiale%20sito/Sistemi%20di%20sintesi/oscillatore.htm 8/8
delsegnale non contiene nient' altro che le armoniche dellafondamentale.
Ci porta alla conclusione chese noi descriviamo una forma d'onda in termini di contenutospettrale, l' usare
numeri non interi per le parziali NONporter ad avere un segnale con uno spettroinarmonico.
Immaginiamo che, nella speranza diottenere uno spettro inarmonico, si specifichi uno spettro compostodalla
fondamentale e da una parziale ad una frequenza 2.2.Quando la tabella d'onda viene campionata dall'
oscillatore, ilsegnale risultante dovrebbe essere periodico, per quanto espostoprima, ed avere quindi uno
spettro armonico. Infatti, invece digenerare una componente parziale con una frequenza di 2.2 volte
lafondamentale, l' energia attesa a quella frequenza sidistribuir attraverso lo spettro come armoniche
dellafondamentale. Normalmente ci porta ad uno spettro che non pi a banda limitata, creando il potenziale
per unasituazione di aliasing (o foldover).