Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Miller Puckette
Prefazione ix
Introduzione xi
2 Wavetables e campionatori 25
2.1 L’oscillatore wavetable . . . . . . . . . . . . . . . . . . . . . . . . 28
2.2 Campionamento . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.3 Enveloping samplers . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.4 Stretching del timbro . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.5 Interpolazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.6 Esempi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Oscillatore wavetable . . . . . . . . . . . . . . . . . . . . . . . . . 44
Ricerca su wavetable in generale . . . . . . . . . . . . . . . . . . 45
Utilizzo di una wavetable come campionatore . . . . . . . . . . . 47
Campionatori a loop . . . . . . . . . . . . . . . . . . . . . . . . . 49
i
ii Indice
5 Modulazione 113
5.1 Tassonomia degli spettri . . . . . . . . . . . . . . . . . . . . . . . 113
5.2 Moltiplicazione di segnali audio . . . . . . . . . . . . . . . . . . . 116
5.3 Waveshaping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
5.4 Modulazione di frequenza e di fase . . . . . . . . . . . . . . . . . 126
5.5 Esempi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Modulazione ad anello e spettri . . . . . . . . . . . . . . . . . . . 129
Octave divider e formant adder . . . . . . . . . . . . . . . . . . . 129
Waveshaping e differenza di toni . . . . . . . . . . . . . . . . . . 131
ii
Indice iii
iii
iv Indice
8 Filtri 209
8.1 Tassonomia dei filtri . . . . . . . . . . . . . . . . . . . . . . . . . 210
8.1.1 Filtri passa-basso e passa-alto . . . . . . . . . . . . . . . . 210
8.1.2 Filtri passa-banda ed elimina-banda . . . . . . . . . . . . 211
8.1.3 Filtri di equalizzazione . . . . . . . . . . . . . . . . . . . . 213
8.2 Filtri elementari . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
8.2.1 Filtro elementare non-ricircolante . . . . . . . . . . . . . . 214
8.2.2 Filtro non-ricircolante, seconda forma . . . . . . . . . . . 216
8.2.3 Filtro elementare ricircolante . . . . . . . . . . . . . . . . 217
8.2.4 Filtri composti . . . . . . . . . . . . . . . . . . . . . . . . 217
8.2.5 Outputs reali da filtri complessi . . . . . . . . . . . . . . . 218
8.2.6 Due filtri ricircolanti al prezzo di uno . . . . . . . . . . . 219
8.3 Progettazione dei filtri . . . . . . . . . . . . . . . . . . . . . . . . 220
8.3.1 Filtro passa-basso ad un polo . . . . . . . . . . . . . . . . 220
8.3.2 Filtro passa-alto ad un polo ed uno zero . . . . . . . . . . 221
8.3.3 Filtro shelving . . . . . . . . . . . . . . . . . . . . . . . . 222
8.3.4 Filtro passa-banda . . . . . . . . . . . . . . . . . . . . . . 223
8.3.5 Filtri peaking ed elimina-banda . . . . . . . . . . . . . . . 224
8.3.6 Filtri di Butterworth . . . . . . . . . . . . . . . . . . . . . 225
8.3.7 Ridimensionando il cerchio unitario con funzioni razionali 226
8.3.8 Filtro passa-banda di Butterworth . . . . . . . . . . . . . 229
8.3.9 Coefficienti temporalmente variabili . . . . . . . . . . . . 230
8.3.10 Risposte agli impulsi dei filtri ricircolanti . . . . . . . . . 231
8.3.11 Filtri all-pass . . . . . . . . . . . . . . . . . . . . . . . . . 233
8.4 Applicazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
8.4.1 Sintesi sottrattiva . . . . . . . . . . . . . . . . . . . . . . 234
8.4.2 Envelope following . . . . . . . . . . . . . . . . . . . . . . 235
8.4.3 Modulazione a banda laterale singola . . . . . . . . . . . . 238
8.5 Esempi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
Filtri prefabbricati passa-basso, -alto, -banda . . . . . . . . . . . 240
Filtro prefabbricato passa-banda variabile nel tempo . . . . . . . 241
Envelope followers . . . . . . . . . . . . . . . . . . . . . . . . . . 242
Modulazione a banda laterale singola . . . . . . . . . . . . . . . . 243
Utilizzare filtri elementari direttamente: shelving e peaking . . . 243
Realizzazione e utilizzo di filtri all-pass . . . . . . . . . . . . . . . 246
Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
iv
Indice v
Bibliografia 301
v
vi Indice
vi
Prefazione alla traduzione
Nel 2006 mi trovavo a Minneapolis per un semestre all’IMA (Institute for Mathe-
matics and its Applications). Dividevo l’alloggio con altri matematici ed alcuni
musicisti (uno splendido connubio) e questi ultimi mi introdussero al mondo
di Pure Data, consigliandomi, tra l’altro, il libro The Theory and Technique of
Electronic Music di Miller Puckette.
Questo libro è stato il mio primo serio passo nel mondo della computer music,
a cui sono poi seguiti libri di altri autori come Road, Kreidler, Bianchi, Cipriani
e Giri; tutti libri fondamentali da cui ho appreso concetti, tecniche e algoritmi.
Tuttavia, secondo me, il libro di Puckette resta IL libro (come dice Max Mathews
nella sua prefazione), quello non può mancare nella libreria di ogni musicista
elettronico (e superato, forse, solo dai libri di Bianchi-Cipriani-Giri).
E sono convinto che non ci sia cosa migliore che studiarne la versione originale
in modo, soprattutto, da fare propri tutti quei termini inglesi che poi si ritrovano
frequentemente (per non dire sempre) nei vari softwares, nei vari plugins AU e
VST o ancora nella letteratura, sia scritta che online. Tuttavia, confrontandomi
spesso sia con studenti dei corsi di musica elettronica al conservatorio sia con
musicisti, che si avvicinavano alla computer music, appariva chiaro come il libro
di Puckette potesse risultare ostico, non tanto a chi non fosse di madrelingua
inglese, ma soprattutto a chi non avesse, comunque, un’adeguata conoscenza
dell’inglese scritto (anche se di certo potrebbe rappresentare una motivazione in
più per migliorarla). The Theory and Technique of Electronic Music è un libro
denso di informazioni e, ovviamente, la non perfetta conoscenza dell’inglese ne
rende la comprensione ancora più difficile.
Questo è il motivo principale per cui ho voluto fare questa traduzione: un
aiuto extra per i musicisti italiani, studenti e non, che si avvicinano alla musica
elettronica. Convinto però dell’importanza della conoscenza dei termini tecnici
in inglese ho deciso o di lasciare la nomenclatura inglese accanto a quella italiana
oppure di preferire quella inglese relegando quella italiana tra parentesi.
Il mio consiglio spassionato resta quello di studiare la versione originale del
libro di Puckette e usare questa traduzione come una scialuppa di salvatag-
gio, quando la comprensione del testo scritto, in inglese, metta a rischio la
comprensione della teoria o della tecnica della musica elettronica.
Desidero ringraziare Giorgio Sancristoforo e Dario Ferrante per alcuni pre-
ziosi consigli durante la stesura di questa traduzione.
Per segnalare errori o imprecisioni, cosı̀ come per inviarmi commenti e os-
servazioni potete scrivermi a info@cristianobocci.com
vii
viii Prefazione alla traduzione
viii
Prefazione
ix
x Prefazione
eccellente.
Credo che il libro di Puckette diventerà IL libro essenziale nella biblioteca
di qualsiasi musicista elettronico.
Max Mathews
x
Introduzione
xi
xii Introduzione
xii
Capitolo 1
Sinusoidi, ampiezza e
frequenza
1
2 Capitolo 1. Sinusoidi, ampiezza e frequenza
x[n]
(a)
1
49 n
-1 0
x(n)
(b)
1
50
-1
Figure 1.1:
Figura 1.1: Un A digital
segnaleaudio
audiosignal, showing
digitale, its discrete-time
che mostra la sua naturanature (parttem-
discreta a),
and idealized as a continuous function (part b). This signal is a
porale (parte a), e idealizzato come una funzione continua (parte b). Questo (real-valued)
sinusoid,è fifty
segnale una points long,
sinusoide (a with
valoriamplitude 1, angular
reali), lungo frequency
cinquanta 0.24,ampiezza
punti, con and initial
1,
phase zero.
frequenza angolare 0.24 e fase iniziale pari a zero.
(a)
peak
RMS
(b) peak
RMS
Figure
Figura 1.2:
1.2: Root mean RMS
Ampiezza squaree (RMS)
di piccoand peak amplitudes
di segnali of signals
a confronto. Per unacompared.
sinusoide
√
For
(parte a), l’ampiezza di picco è maggiore della RMS di un fattore parifactor
√ a sinusoid (part a), the peak amplitude is higher than RMS by a a 2.of
2.
ampli-
tude
0.1
0
-20 -10 0
decibels
Figure 1.3: The relationship between decibel and linear scales of amplitude.
Figura
The 1.3:amplitude
linear La relazione tra decibel
1 is assigned to 0e dB.
scala di ampiezza lineare. Il valore di
ampiezza lineare pari a 1 è assegnato al valore di 0 dB.
−20 dB, a0 /100 dà −40 e cosı̀ via. Un’ampiezza lineare pari a zero è minore di
quella di qualsiasi valore in dB, per cui vi si associa un livello in dB pari a −∞.
Nell’ambito dell’audio digitale, una scelta conveniente di riferimento, suppo-
nendo che l’hardware abbia un’ampiezza massima di uno, è
a0 = 10−5 = 0.00001
in modo che l’ampiezza massima possibile sia di 100 dB e che 0 dB sia un’am-
piezza probabilmente silenziosa a qualsiasi livello di ascolto ragionevole. Ab-
bastanza convenientemente, la gamma dinamica dell’udito umano – il rapporto
tra un suono dannoso e un rumore inaudibilmente silenzioso – è di circa 100 dB.
L’ampiezza è legata in modo inesatto alla percezione della rumorosità di
un suono. In generale, due segnali con la stessa ampiezza di picco o RMS non
hanno necessariamente la stessa intensità. Ma amplificando un segnale, diciamo
di 3 dB, sarà ragionevolmente affidabile farlo suonare ad uno “step” più forte.
Molto è stato fatto sulla presunta natura logaritmica dell’udito umano (e di altri
sensi) che può spiegare in parte il motivo per cui i decibels sono una scala utile
di ampiezza [RMW02, p. 99].
L’ampiezza è anche correlata, in modo inesatto, alla dinamica musicale. La
dinamica è meglio pensata come una misura di sforzo che di forza o potenza. Il
suo range si estende su nove valori: riposo, ppp, pp, p, mp, mf, f, ff, fff. Questi
sono correlati in modo meno appropriato con l’ampiezza di un segnale rispetto
a come lo è l’intensità [RMW02, p. 110-111].
1.4 Frequenza
Le frequenze, come le ampiezze, sono spesso misurate su una scala logaritmica,
per sottolineare le proporzioni tra di loro, che di solito forniscono una migliore
66 CapitoloAMPLITUDE
CHAPTER 1. SINUSOIDS, 1. Sinusoidi, ampiezza e frequenza
AND FREQUENCY
440
330
220
110
0
45 57 69
frequency pitch
Figure 1.4:
Figura 1.4: The relationship
La relazione between
tra nota MIDI“MIDI” pitch in
e frequenza and frequency
cicli in cycles
per secondo per
(Hertz).
second
Il range(Hertz). TheMIDI
di 24 valori span nell’asse
of 24 MIDI values on
orizzontale the horizontal
rappresenta axis represents
due ottave, rispetto
two quali
alle octaves, over whichaumenta
la frequenza the frequency increases
di un fattore by a factor pari
moltiplicativo of four.
a 4.
reliably make
descrizione it sound
delle about
relazioni onefrequenze
tra le “step” louder.
rispettoMuch has been
a quanto made
fornito dalleof loro
the
supposedlyIllogarithmic
differenze. rapporto dellenature of human
frequenze hearing
tra due toni (and other
musicali senses), which
determina may
l’intervallo
partially explain
musicale why decibels are such a useful scale of amplitude [RMW02, p.
tra di essi.
99].La scala musicale occidentale suddivide l’ottava (l’intervallo musicale as-
Amplitude
sociato ad un is also related
rapporto in an
di 2:1) ininexact
dodici way to musical
intervalli dynamic.
uguali, ciascunoDynamic
dei quali is
better thought of as a measure
corrisponde quindi ad un rapporto di 2 of effort than
1/12 of loudness or power. It ranges over
. Per ragioni storiche questo sotto-
nine values:
intervallo rest, ppp,semitono.
è chiamato pp, p, mp,Una mf, f, ff, fff.
scala These correlate
logaritmica in an even
conveniente per illooser
tono
(pitch) consiste semplicemente nel contare il numero semitoni da una110-111].
way with the amplitude of a signal than does loudness [RMW02, pp. nota di
riferimento – utilizzando le frazioni possiamo specificare note che non appaiono
nella scala occidentale. La scala logaritmica di tono più comunemente utiliz-
1.3 è laControlling
zata “MIDI” pitch, in cui Amplitude
il tono 69 viene assegnato ad una frequenza di
440 cicli al secondo – il La sopra il Do centrale. Per convertire una nota MIDI
Perhaps the most frequently used operation on electronic sounds is to change
in una frequenza in cicli al secondo f , applichiamo la formula di conversione
their amplitudes. For example, a simple strategy for synthesizing sounds is by
nota/frequenza:
combining sinusoids, which can be generated by evaluating the formula on Page
1, sample by sample. But the m =sinusoid · loga2 constant
69 + 12has (f /440), nominal amplitude a, and
we would like to be able to vary that in time.
In general, to multiply the f =amplitude of a signal
440 · 2(m−69)/12 . x[n] by a factor y ≥ 0,
you can just multiply each sample by y, giving a new signal y · x[n]. Any
Il Do centrale,ofcorrispondente
measurement the RMS or peak alla nota MIDI m
amplitude of =x[n]
60, will
è pari
beagreater
f = 261.626
or lesscicli
by
al
thesecondo.
factor y. More generally, you can change the amplitude by an amount y[n]
Il MIDI
which variesstesso è unby
sample vecchio protocollo
sample. If y[n] hardware che, purtroppo,
is nonnegative and if it si è insinuato
varies slowly
in una grande
enough, quantitàofdithe
the amplitude software.
productNell’hardware,
y[n] · x[n] (in ail fixed
MIDIwindow
consentefromsoloMtoni
to
interi
M + Ncompresi
− 1) willtrabe 0that
e 127. Tuttavia,
of x[n], la scala
multiplied soggiacente
by the è ben
value of y[n] in definita
the window per
qualsiasi numero “MIDI”, anche negativo; ad esempio una “nota MIDI” di −4 è
una frequenza decente di vibrato. La scala del tono non può tuttavia descrivere
frequenze inferiori o uguali a zero cicli al secondo (per una chiara descrizione
del MIDI, delle sue capacità e delle sue limitazioni, vedere [Bal03, ch.6-8]).
81.5. Sintetizzare una sinusoide
CHAPTER 7
1. SINUSOIDS, AMPLITUDE AND FREQUENCY
FREQUENCY FREQUENCY
OUT y[n]
OUT
(a) (b)
1.5Un semitono
Synthesizing a sinusoid
può essere espresso con un rapporto di circa 1.059 a 1, o circa un
aumento del 6% della frequenza. I semitono sono ulteriormente divisi in cents,
In most
ogni widely
cent è unused audio synthesis
centesimo and processing
di un semitono. Come packages (Csound,potrebbero
regola generale, Max/MSP,
and Pd, for instance), the audio operations are specified
essere necessari circa tre cents per fare un cambiamento rilevabile nel tono as networks of unit
di
generators[Mat69] which pass audio signals among themselves.
una nota musicale. Sul Do centrale si tratta di una differenza di circa 1/2 ciclo The user of the
al
software
secondo. package
Un grafico specifies the network,
della frequenza sometimes
in funzione called pitch,
del MIDI a patch, which
su un essen-
intervallo
tially
di duecorresponds to the synthesis
ottave, è mostrato in Figuraalgorithm
1.4. to be used, and then worries about
how to control the various unit generators in time. In this section, we’ll use ab-
stract block diagrams to describe patches, but in the “examples” section (Page
1.5we’llSintetizzare
17), una sinusoide
choose a specific implementation environment and show some of the
software-dependent details.
NeiTo show how
software più to produceper
utilizzati a sinusoid with
la sintesi time-varying amplitude
e l’elaborazione audio (perwe’ll need
esempio
to introduce two unit generators. First we need a pure
Csound, Max/MSP e Pd), le operazioni audio sono specificate come reti di sinusoid which is made
with an oscillator.
generatori Figureche
unitari [Mat69] 1.5passano
(part a)i segnali
shows aaudiopictorial
tra direpresentation
loro. L’utenteofdela
sinusoidal
pacchetto software specifica la rete, talvolta chiamata patch, che per
oscillator as an icon. The input is a frequency (in cycles second),
corrisponde
and the output is a sinusoid of peak amplitude one.
sostanzialmente all’algoritmo di sintesi da utilizzare, e quindi si preoccupa di
comeFigure 1.5 (parttemporalmente,
controllare, b) shows how toi varimultiply the output
generatori. of a sinusoidal
In questo paragrafo oscillator
usiamo
by an appropriate
diagrammi a blocchi scale factorper
astratti y[n] to controlleits
descrivere amplitude.
patches, ma nellaSince the oscillator’s
sezione “esempi”
peak
(paginaamplitude is 1, the un
16), sceglieremo peak amplitude
ambiente of the product isspecifico
di implementazione about y[n], assuming
e mostreremo
alcuni
y[n] dei dettagli
changes slowlydipendenti
enough and daldoesn’t
software.become negative in value.
Figure 1.6 shows
Per mostrare comehow the sinusoid
produrre of Figure
una sinusoide 1.1 is affected
con ampiezza by nel
variabile amplitude
tempo,
change
dovremobyintrodurre
two different due controlling
generatori signals
unitari.y[n]. The controlling
Innanzitutto abbiamo signal shown
bisogno di
unapart
in sinusoide
(a) haspura che viene ottenuta
a discontinuity, tramite un
and so therefore doesoscillatore.
the resulting La amplitude-
Figura 1.5
(parte a) mostra
controlled sinusoid una rappresentazione
shown in (b). Partsgrafica
(c) anddi(d)un show
oscillatore
a more sinusoidale come
gently-varying
icona. L’input
possibility è una
for y[n] andfrequenza
the result.(inIntuition
cicli al secondo),
suggests thate l’output è una
the result sinusoide
shown in (b)
di ampiezza di picco pari a 1.
La Figura 1.5 (parte b) mostra come moltiplicare l’uscita di un oscillato-
re sinusoidale, mediante un appropriato fattore di scala y[n], per controllarne
l’ampiezza. Poiché l’ampiezza di picco dell’oscillatore è 1, l’ampiezza di picco
1.5. SYNTHESIZING A SINUSOID 9
1 y[n]
(a)
n
0 50
-1
1 x[n]y[n]
(b)
-1
1
y[n]
(c)
-1
1
x[n]y[n]
(d)
-1
Figura 1.6:
Figure 1.6: Two
Dueamplitude
funzioni difunctions
ampiezza(parts
(partia, a,c) e il (parts
c), and risultato di moltiplicarle
b, d), the result of
per la sinusoide
multiplying thempura di Figura
by the 1.1 (parti
pure sinusoid b,d). 1.1.
of Figure
del prodotto è di circa y[n], assumendo che y[n] cambi lentamente e non diventi
negativo in valore.
La Figura 1.6 mostra come la sinusoide di Figura 1.1 è influenzata dalla
variazione di ampiezza da due diversi segnali di controllo y[n]. Il segnale di
controllo mostrato nella parte (a) presenta una discontinuità, che si ripresenta,
pertanto, nella sinusoide risultante, illustrata in (b). Le parti (c) e (d) mostrano
una possibilità di variazione, senza discontinuità, per y[n] ed il relativo risultato.
L’intuizione suggerisce che il risultato riportato in (b) non suona come una
sinusoide variabile in ampiezza, ma come, invece, una sinusoide interrotta da
un “pop” udibile, dopo di che continua a volume inferiore. In generale, per
motivi che non possono essere spiegati in questo capitolo, i segnali di controllo
di ampiezza y[n] che si muovono in maniera continua da un valore all’altro sono
meno soggetti a dare origine a risultati parassitari (come ad esempio il “pop”)
rispetto a quelli che cambiano bruscamente.
1.6. SUPERPOSING SIGNALS 11
1.5. Sintetizzare una sinusoide 9
FREQUENCY
OUT
Figure
Figura 1.8:
1.8: AUna
Fourier
serie series, showing
di Fourier che three
mostra sinusoids and their
tre sinusoidi e la sum. The three
loro somma. Le
component sinusoids
tre componenti have frequencies
sinusoidali in the in
hanno frequenze ratio 1:2:3. 1:2:3.
rapporto
1.8. Informazioni sugli esempi software 13
FREQUENCY
(more)
3
2
OUT
Figure
Figura 1.9:
1.9: Using many
Possiamo oscillators
usare to synthesize
molti oscillatori a waveformuna
per sintetizzare withforma
desired har-
d’onda
monic amplitudes.
con ampiezze desiderate per gli armonici.
14 Capitolo 1. Sinusoidi, ampiezza e frequenza
Introduzione rapida a Pd
I documenti in Pd sono chiamati patches. Essi corrispondono approssimati-
vamente alle caselle negli schemi a blocchi astratti mostrati in precedenza in
questo capitolo, ma in dettaglio sono piuttosto diversi, perché Pd è un ambiente
di implementazione, non un linguaggio di specificazione.
Una patch in Pd, come quella mostrata in Figura 1.10, è costituita da un
insieme di caselle (boxes) collegate in una rete. Il bordo di una casella indica il
modo in cui viene interpretato il testo e come funziona la casella. Nella parte
(a) della figura vediamo tre tipi di caselle. Dall’alto verso il basso sono:
• una message box (casella di messaggio). Le message boxes, con un bordo
a forma di bandiera, interpretano il testo come un messaggio da inviare
ogni volta che la casella è attivata (da un messaggio in ingresso o con
un dispositivo di puntamento). Il messaggio in questo caso è costituito
semplicemente dal numero “21”.
• una object box (casella di oggetto). Le object boxes hanno un bordo rettan-
golare; interpretano il testo per creare oggetti quando si carica una patch.
Le object boxes possono contenere centinaia di classi diverse di oggetti –
compresi oscillatori, generatori di inviluppo e altri moduli di elaborazione
del segnale che introdurremo in seguito – a seconda del testo contenuto al
loro interno. In questo esempio, la casella contiene un sommatore. Nella
1.8. Informazioni
16 sugli esempi
CHAPTER software
1. SINUSOIDS, 15
AMPLITUDE AND FREQUENCY
440 frequency
21 message box
osc~ sinusoidal oscillator
+ 13 object box
amplitude
0.1 0 (on/off)
34 number
(GUI) box *~ multiplier
dac~ output
(a) (b)
Figure 1.10: (a) three types of boxes in Pd (message, object, and GUI); (b) a
Figurapatch
simple 1.10: to
(a)output
tre tipi di caselle in Pd (messaggio, oggetto e GUI); (b) una
a sinusoid.
semplice patch che produce una sinusoide.
vertirli in segnali). Per convenzione, object boxes con segnale in input o output
contengono nel nome una tilde (“∼”) come in “∗ ∼” e “osc∼”.
1.9 Esempi
Riscalatore costante di ampiezza
L’esempio A01.sinewave.pd, mostrato in Figura 1.11, contiene essenzialmente la
patch più semplice possibile per produrre un suono, con solo tre caselle di oggetti
(ci sono anche commenti e due caselle di messaggio per accendere e spegnere il
motore “DSP” (audio) di Pd). I tre oggetti sono:
osc∼ : oscillatore sinusoidale. L’ingresso sul lato sinistro e l’uscita sono segnali
audio digitali. L’input è una frequenza (eventualmente variabile nel tempo) in
Hertz. L’output è la sinusoide alla frequenza specificata. Se nulla è collegato
all’ingresso della frequenza, il creation argument (440 in questo esempio) viene
utilizzato come frequenza. L’output ha ampiezza di picco pari a 1. È possibile
impostare una fase iniziale inviando messaggi (non segnali audio) all’ingresso
destro. All’ingresso sinistro (frequenza) possono anche essere inviati messaggi
per impostare la frequenza, poiché qualsiasi ingresso che riceve un segnale audio
può ricevere anche messaggi che vengono automaticamente convertiti nel segnale
audio desiderato.
1.9. Esempi 17
1.9. EXAMPLES 19
; ;
pd dsp 1 pd dsp 0 <-- click these
ON OFF
Figura1.11:
Figure 1.11:The
Il contenuto delthe
contents of primo esempio
first Pd di patch
example patch:inA01.sinewave.pd.
Pd: A01.sinewave.pd.
18 Capitolo 1. Sinusoidi, ampiezza e frequenza
Figure 1.12: The active ingredients to three patches: (a) A02.amplitude.pd; (b)
Figura 1.12: (c)
A03.line.pd; GliA05.output.subpatch.pd.
ingredienti attivi di tre patches: (a) A02.amplitude.pd; (b)
A03.line.pd; (c) A05.output.subpatch.pd.
Triade maggiore
L’esempio A05.output.subpatch.pd, i cui ingredienti attivi sono mostrati in Fi-
gura 1.12 (parte c), presenta tre sinusoidi con frequenze nel rapporto 4:5:6, in
modo che le prime due siano separate da una terza maggiore, le ultime due da
una terza minore, e la prima e la terza da una quinta. La frequenza più bassa è
440, pari al La sopra al Do centrale, o MIDI 69. Gli altri sono rispettivamente
pari a circa quattro e sette semitoni più alti. Le tre sinusoidi hanno ampiezze
uguali.
Il controllo di ampiezza, in questo esempio, viene curato da un nuovo oggetto
chiamato output∼. Questo non è un oggetto incorporato di Pd, ma è una patch
di Pd contenuta nel file, “output.pd” (è possibile vedere l’interno di output∼
aprendo il menu delle proprietà della casella e selezionando “open”). Ci sono
due controlli, uno per l’ampiezza in dB (100 equivale al “guadagno unitario”)
e un pulsante “mute”. Il motore audio di Pd viene attivato automaticamente
quando si imposta il livello di output – questo potrebbe non essere il compor-
tamento migliore in generale, ma è appropriato per queste patches di esempio.
1.9. EXAMPLES
1.9. Esempi 23 21
r frequency r pitch
set $1 set $1
0 <−− set frequency 0 <−− set MIDI pitch
s frequency s pitch
ftom <−− convert frequency mtof <−− convert "MIDI" pitch
to "MIDI" pitch to frequency
s pitch s frequency
* 2 * 3 * 4 frequencies of harmonics
+~
(OUT)
entrata). Ciò è stato fatto perché altrimenti avremmo avuto un ciclo infinito:
laThe second,cambierebbe
frequenza third, and lafourth
nota oscillator are turned
che cambierebbe on and off
la frequenza using
e cosı̀ via aper
toggle
switch.
sempre,This is a graphical
o almeno control,
fino a quando like the
qualcosa number
non andassebox introduced earlier. The
in crash.
toggle switch puts out 1 and 0 alternately when clicked on with the mouse.
This value is multiplied by the sum of the second, third, and fourth oscillators,
Ancoraturning
effectively sulla sintesi
them on additiva
and off.
Even when all four oscillators are combined (with the toggle switch in the “1”
La triade maggiore (esempio A06.frequency.pd, pagina 20) mostra un modo per
position),
combinare the resultpiù
insieme fuses into atramite
sinusoidi single la tone,
loro heard
somma.atCi the pitch
sono moltiof altri
the modi
leftmost
oscillator.
possibili per organizzare insiemi di sinusoidi, di cui ne mostreremo due. L’esem- a
In effect this patch sums a four-term Fourier series to generate
complex, periodic waveform.
pio A07.fusion.pd (Figura 1.14) mostra quattro oscillatori, le cui frequenze sono
Examplenel
impostate A08.beating.pd
rapporto 1:2:3:4, (Figure 1.15) ampiezze
con relative shows another
1, 0.1, possibility,
0.2 e 0.5. Leinam- which
sixpiezze
oscillators are tuned moltiplicando
sono impostate into three pairs of neighbors,
le uscite for instance
degli oscillatori 330 and
(gli oggetti ∗∼ 330.2
Hertz.
sotto gliThese pairs slip into and out of phase with each other, so that the
oscillatori).
amplitude of the
Il secondo, sum
terzo changes
e quarto over time.
oscillatore Callede spenti
sono accesi beating, this phenomenon
utilizzando un inter- is
ruttore a pulsante (toggle).
frequently used for musical effects. Questo è un controller grafico, come le number boxes
introdotte in precedenza. Il toogle fornisce 1 e 0 alternativamente
Oscillators may be combined in other ways besides simply summing quando si fatheir
clic con il mouse. Questo valore viene moltiplicato per la somma
output, and a wide range of resulting sounds is available. Example A09.frequency.mod.pd del secondo,
terzo
(not e quarto
shown here) oscillatore, quindi frequency
demonstrates effettivamente accendendoli
modulation e spegnendoli.
synthesis, in which one
Anche quando tutti e quattro gli oscillatori vengono
oscillator controls another’s frequency. This will be more fully described combinati (con il toggle in
in posizione “1”), il risultato si fonde in un singolo tono, alla frequenza dell’o-
Chapter 5.
scillatore sinistro. In effetti questa patch somma una serie Fourier a quattro
termini per generare una forma d’onda complessa e periodica.
L’esempio A08.beating.pd (Figura 1.15) mostra un’altra possibilità, in cui
Exercises
sei oscillatori sono sintonizzati in tre coppie di frequenze vicine, ad esempio
330 e 330.2 Hertz. Queste coppie vanno alternativamente in fase e fuori fase, in
1. A sinusoid (Page 1) has initial phase φ = 0 and angular frequency ω =
modo che l’ampiezza della somma cambi nel tempo. Questo fenomeno, chiamato
π/10. What is its period in samples? What is the phase at sample number
battimento (beating) è spesso utilizzato per effetti musicali.
1.9.
1.9. Esempi
EXAMPLES 23
25
+~ +~ +~
+~
+~
(OUT)
Figure 1.15:
Figura 1.15: Additive synthesis:
Sintesi additiva: seisix oscillators
oscillatori arrangeda into
impostati three
coppie perbeating pairs.
produrre tre
battimenti.
n = 10?
Gli oscillatori possono essere combinati in altri modi oltre a sommare sem-
2. Two sinusoids have periods of 20 and 30 samples, respectively. What is
plicemente i loro outputs e una vasta gamma di suoni risultanti è possibile.
the period of the sum of the two?
L’esempio A09.frequency.mod.pd (non presentato qui) mostra la sintesi di mo-
dulazione
3. If 0 di
dBfrequenza,
correspondsin cui
to anunamplitude
oscillatoreofcontrolla la frequenza
1, how many di un altro.
dB corresponds to
Questoamplitudes
sarà approfondito
of 1.5, 2,nel Capitolo
3, and 5? 5.
5. Una
1. How sinusoide
many uncorrelated
(pagina 1)signals,
ha fasealliniziale
of equal
φ=amplitude, wouldangolare
0 e frequenza you haveω to
=
add to Qual
π/10. get a signal
è il suothat is 9 dBingreater
periodo in amplitude?
campioni? Qual è la fase al campione
n = 10?
6. What is the angular frequency of middle C at 44100 samples per second?
2. Due sinusoidi hanno periodi di 20 e 30 campioni, rispettivamente. Quale
7. èTwo sinusoids
il periodo play
della at middle
somma C (MIDI 60) and the neighboring C sharp
dei due?
(MIDI 61). What is the difference, in Hertz, between their frequencies?
3. Se 0 dB corrispondono ad un’ampiezza di 1, quanti dB corrispondono alle
8. ampiezze
How manydicents 1.5, 2,is 3the interval between the seventh and the eighth har-
e 5?
monic of a periodic signal?
4. Due segnali non-correlati di ampiezza RMS 3 e 4 vengono sommati; qual
9. èIf l’ampiezza
an audio signal
RMS x[n], = 0, ..., N − 1 has peak amplitude 1, what is the
dellansomma?
minimum possible RMS amplitude? What is the maximum possible?
5. Quanti segnali non-correlati, tutti di uguale ampiezza, bisogna aggiungere
per ottenere un segnale che è 9 dB maggiore in ampiezza?
6. Qual è la frequenza angolare del Do centrale alla frequenza di campiona-
mento di 44100 campioni al secondo?
7. Due sinusoidi producono un Do centrale (MIDI 60) ed il suo vicino Do
Diesis (MIDI 61). Qual è la differenza, in Hertz, tra le loro frequenze?
8. Quanto misura, in cents, l’intervallo tra il settimo e l’ottavo armonico di
un segnale periodico?
9. Se un segnale audio x[n], n = 0, . . . , N − 1 ha ampiezza di picco 1, qual è
l’ampiezza RMS minima possibile? Qual è la massima possibile?
24 Capitolo 1. Sinusoidi, ampiezza e frequenza
Capitolo 2
Wavetables e campionatori
25
28
26 CHAPTER 2. WAVETABLES
Capitolo ANDe SAMPLERS
2. Wavetables campionatori
IN
OUT
Figure
Figura 2.1:
2.1: Diagram
Diagrammafor per
wavetable lookup.lookup.
la wavetable The input is inè samples,
L’input ranging
in campioni, che
approximately from 0 to the wavetable’s
vanno approssimativamente size N , depending
da 0 alla lunghezza on the interpolation
N della wavetable, a seconda
scheme.
dello schema di interpolazione.
are
Quialways clipped;
adotteremo when we need
la convenzione chewraparound, we’ll introduce
i campioni fuori campo sono another
sempre signal
rita-
processing operation to do it for us.
gliati; quando avremo bisogno di riavvolgere, introdurremo un’altra operazione
The second complication
di elaborazione del segnale che is lo
that the
farà perinput
noi. values need not be integers; in
other words they might fall between the points of the wavetable. In general,
La seconda complicazione è che i valori di ingresso, y[n], potrebbero non es-
this is addressed by choosing some scheme for interpolating between the points
sere interi; in altre parole potrebbero stare tra i punti n della wavetable x[n]. In
of the wavetable. For the moment, though, we’ll just round down to the nearest
generale, questo viene affrontato scegliendo un certo schema di interpolazione tra
integer below the input. This is called non-interpolating wavetable lookup, and
i punti della wavetable. Per il momento, però, arrotondiamo al più grande intero
its full definition is:
inferiore al valore di ingresso. Si parlerà quindi di wavetable non-interpolante e
⎧
la sua definizione completa ⎨ è:
x[⌊y[n]⌋] if 0 ≤ y[n] < N − 1
z[n] = x[0] if y[n] < 0
⎩x[by[n]c] se 0 ≤ y[n] < N + 1
x[N − 1] if y[n] ≥ N − 1
z[n] = x[0] se y[n] < 0
(where ⌊y[n]⌋ means, “the greatest integer
x[N − 1] se y[n] not exceeding
≥ N + 1 y[n]”).
Pictorally, we use y[0] (a number) as a location on the horizontal axis of the
wavetable shown in Figure 2.1, and the output, z[0], is whatever we get on the
(dove by[n]c significa “l’intero più grande non superiore a y[n]”).
vertical axis; and the same for y[1] and z[1] and so on. The “natural” range
Graficamente parlando, usiamo y[0] (un numero) come posizione sull’asse
for the input y[n] is 0 ≤ y[n] < N . This is different from the usual range of an
orizzontale della wavetable mostrata in Figura 2.1 e l’output, z[0], è ciò che
audio signal suitable for output from the computer, which ranges from -1 to 1
otteniamo sull’asse verticale; e lo stesso per y[1] e z[1] e cosı̀ via. Il range
in our units. We’ll see later that the usable range of input values, from 0 to N
“naturale” per l’input y[n] è 0 ≤ y[n] < N . Questo range è diverso dall’intervallo
for non-interpolating lookup, shrinks slightly if interpolating lookup is used.
abituale di un segnale audio adatto per l’uscita dal computer, che varia, nella
Figure 2.2 (part a) shows a wavetable and the result of using two different
nostre unità di misura, da −1 a 1. Vedremo più tardi che il range utilizzabile
input signals as lookup indices into it. The wavetable contains 40 points, which
dei valori di input, da 0 a N per la ricerca non-interpolata, si riduce leggermente
are numbered from 0 to 39. In part (b), a sawtooth wave is used as the input
se si utilizza la ricerca interpolata.
signal y[n]. A sawtooth wave is nothing but a ramp function repeated end to
end.LaInFigura 2.2 (parte
this example thea)sawtooth’s
mostra unarange wavetable
is frome il0risultato di utilizzare
to 40 (this is shown due in
diversi segnali di input come indici di ricerca in essa.
the vertical axis). The sawtooth wave thus scans the wavetable from La wavetable contiene
left to40
punti, che sono numerati da 0 a 39. In (b), viene utilizzata
right—from the beginning point 0 to the endpoint 39—and does so every time un’onda a dente
direpeats.
it sega come Oversegnale di points
the fifty input y[n].
shownUn’onda
in Figurea2.2 dente
(partdib)sega
the non è altro
sawtooth che
wave
una funzione a rampa ripetuta dall’inizio alla fine. In questo esempio il range
dell’onda a dente di sega è da 0 a 40 (che è mostrato nell’asse verticale). L’onda
a dente di sega esegue quindi la scansione della wavetable da sinistra a destra
– dal punto iniziale 0 al punto finale 39 – e lo fa ogni volta che si ripete. Sui
cinquanta punti mostrati nella Figura 2.2 (parte b) l’onda a dente di sega fa
27
1 x[n]
(a)
0 40 n
−1
40 y[n]
0 (b)
50
1 z[n]
(c)
−1
40 y2[n]
0 (d)
1 z2[n]
(e)
−1
Figura 2.2: Wavetable lookup: (a) una wavetable; (b) e (d) segnali di input per
la ricerca; (c) ed (e) i corrispondenti outputs.
Figure 2.2: Wavetable lookup: (a) a wavetable; (b) and (d) signal inputs for
lookup; (c) and (e) the corresponding outputs.
28 Capitolo 2. Wavetables e campionatori
2.1. THE WAVETABLE OSCILLATOR 31
frequency
frequency
N
N
0
1
1
-1
-1
OUT
OUT
(a)
(b)
Figure
Figura2.3:
2.3: Block diagrams:
Diagrammi (a) for a(a)
a blocchi: wavetable
per un lookup oscillator;
oscillatore (b) with
di ricerca wavetable;
amplitude control by an envelope generator.
(b) con controllo di ampiezza tramite un generatore di inviluppo.
frequency
-1
OUT
(1 − x[n])y[n] + x[n]z[n]
30 Capitolo 2. Wavetables e campionatori
2.2 Campionamento
Il “Campionamento” (o sampling) altro non è che la registrazione di un segnale
dal vivo in una wavetable e poi riprodurlo di nuovo (nei campionatori commer-
ciali l’intera wavetable è solitamente chiamata “campione”, anziché sample, ma
per evitare confusione qui usiamo la parola campione solo per significare un
singolo numero in un segnale audio).
In termini spiccioli, un campionatore è semplicemente un oscillatore waveta-
ble, come è stato mostrato in Figura 2.3. Tuttavia, nella discussione precedente
abbiamo immaginato che l’oscillatore avesse una frequenza abbastanza alta, al-
meno 30 Hertz, per essere percepito come un tono. Nel caso del campionamento,
la frequenza è di solito inferiore a 30 Hertz, quindi il periodo, almeno 1/30 di se-
condo e forse molto di più, è abbastanza lungo da poterci fare ascoltare i singoli
cicli come eventi separati.
Tornando alla Figura 2.2, supponiamo che invece di 40 punti la wavetable
x[n] sia una registrazione di un secondo, ad una frequenza di campionamento
originale di 44100, in modo da avere 44100 punti; e supponiamo che y[n], nella
parte (b) della figura, abbia un periodo di 22050 campioni. Questo corrispon-
de ad una frequenza di 2 Hertz. Ma quello che sentiamo non è un suono, con
intonazione fissata, a 2 cicli al secondo (che è troppo lento per percepirlo co-
me un tono) ma piuttosto sentiamo la registrazione originale x[n] riprodotta
ripetutamente a velocità doppia. Abbiamo appena reinventato il campionatore.
In generale, se si assume che la frequenza di campionamento R della registra-
zione sia uguale alla velocità di campionamento di uscita, se la wavetable ha N
campioni e se la indicizziamo tramite un’onda a dente di sega di periodo M cam-
pioni, il sample viene accelerato o rallentato da un fattore pari a N/M , uguale
a N f /R se f è la frequenza in Hertz dell’onda a dente di sega. Se indichiamo
con t il fattore di trasposizione (in modo che, per esempio, t = 3/2 significa
trasporre di una quinta perfetta ascendente) e se si indica con h la trasposizione
in semitoni, otteniamo le formule di trasposizione (per looping wavetables):
t = N/M = N f /R,
2.2. Campionamento 31
N Nf
H = 12 log2 = 12 log2 .
M R
Di solito la trasposizione desiderata in semitoni (h) è nota e la formula deve
essere risolta per f o N :
2h/12 R
f= ,
N
2h/12 R
N= .
f
Finora abbiamo utilizzato un’onda a dente di sega come onda di input y[n],
ma, come suggerito nelle parti (d) e (e) della Figura 2.2, potremmo utilizzare,
come segnale di input, qualsiasi cosa ci piaccia. In generale, la trasposizione può
essere dipendente dal tempo e viene controllata dalla velocità di cambiamento
del segnale di input.
Il fattore di trasposizione t e la trasposizione in semitoni h sono quindi
determinati dalle formule di trasposizione momentanea (per le wavetables):
2.2. SAMPLING 35
frequency
0
optional - for
1/2
centered segments
segment size
segment location
-1
OUT
Figure
Figura 2.5:
2.5: AUnsimple looping
semplice sampler, asciclico,
campionatore yet with no amplitude
senza controllo dicontrol. There
ampiezza. Ci
are
sono ingressi per controllare la frequenza, la lunghezza e la posizione delThe
inputs to control the frequency and the segment size and location. seg-
“-” operation
mento. is included
L’operazione “−”ifèwe wish se
inclusa thesisegment
desideralocation to be specified
che la posizione as the
del segmento
segment’s midpoint; otherwise we specify the location of the left end
sia specificata tramite il suo punto medio; altrimenti è sufficiente definire of thela
segment.
posizione dell’estremità sinistra del segmento.
34 Capitolo 2. Wavetables e campionatori
(a)
new periods
(b)
Figure
Figura 2.6:
2.6: Differing
Differentienvelope
requisitirequirements
di inviluppofor
peroscillators
oscillatoriand samplers: (a) in
e campionatori: (a)
an oscillator,
in un the envelope
oscillatore, l’inviluppo canpuò
be essere
chosenscelto
to conform to any desired
per conformarsi timescale;
a qualsiasi scala
(b) when the
temporale wavetable(b)
desiderata; is aquando
recorded sound, it’sèup
la wavetable untosuono
you to get the envelope
registrato, sta a noi
to
farzero before
si che you hitsia
l’inviluppo thezero
endprima
of thedi
wavetable for the
raggiungere firstdella
la fine time.wavetable per la
prima volta.
wavetable sampler at the same frequency and at a specified phase relationship.
This maylabeprima.
fase con done soSe that when any
vogliamo particular
un’onda a denteone di
is at theche
sega endè,ofad
itsesempio,
segment, a
one or more others is in the middle of the same segment, so that
cicli davanti alla prima, aggiungiamo semplicemente il parametro a e prendiamo the aggregate
is continuously making sound. To accomplish this, we need a way to generate
quindi la parte frazionaria, che è la nuova onda a dente di sega desiderata, come
two or more sawtooth waves at the desired phase relationship that we can use
mostrato in Figura 2.8.
in place of the oscillator at the top of Figure 2.7. We can start with a single
sawtooth wave and then produce others at fixed phase relationships with the
first one. If we wish a sawtooth which is, say, a cycles ahead of the first one,
2.4simplyStretching
we add the parameter dela andtimbro
then take the fractional part, which is the
desired new sawtooth wave, as shown in Figure 2.8.
L’oscillatore wavetable del paragrafo 2.1, che abbiamo esteso nel paragrafo 2.2
per includere le forme d’onda da wavetables arbitrarie come i suoni registrati,
2.4 Timbre
può essere ulteriormentestretching
esteso in un modo complementare, a cui ci riferiremo
come timbre stretching per le ragioni che andremo a spiegare in questo paragrafo.
The wavetable
Ci sono oscillator
anche molti altriofmodi
Section 2.1, which
possibili we extended
per estendere in Section
la sintesi 2.2 tousan-
wavetable, en-
compass grabbinglawaveforms
do, ad esempio, modulazione fromdiarbitrary
frequenzawavetables such as recorded
e il waveshaping, sounds,
ma ne parleremo
may additionally
nei capitoli be extended in a complementary way, that we’ll refer to as
successivi.
timbre
L’idea centralefordel
stretching, reasons
timbrewe’ll develop èinquella
stretching this section. There are l’idea
di riconsiderare also many
di un
other
oscillatore wavetable con un meccanismo per la riproduzione di unafrequency
possible ways to extend wavetable synthesis, using for instance wavetable
modulation
memorizzatoand waveshaping,
(o una sua parte)but we’ll leave
dall’inizio alla them to later
fine. Non chapters.
c’è motivo per cui la fine
The central idea of timbre stretching is to reconsider the
di un ciclo debba coincidere con l’inizio di un altro. Invece, potremmo idea of the wavetable
richiedere
che le copie della forma d’onda vengano distanziate da segmenti di silenzio; o,
andando nella direzione opposta, le copie della forma d’onda potrebbero essere
distanziate più strettamente in modo che si sovrappongano. L’unico parametro
disponibile nel paragrafo 2.1 – la frequenza – è stato usato finora per controllare
due aspetti distinti dell’output: il periodo in cui iniziano le nuove copie della
36 Capitolo 2. Wavetables e campionatori
frequency
size
N
location
1 1
-1
0 N
OUT
Figure 2.7: A sampler as in Figure 2.5, but with an additional wavetable lookup
Figura 2.7: Un campionatore come in Figura 2.5, ma con l’aggiunta di una
for enveloping.
wavetable per l’inviluppo.
2.4. TIMBRE STRETCHING 39
frequency
1
1
1.3
a
0.3
WRAP
OUT
1
0.3
Figure 2.8: A technique for generating two or more sawtooth waves with fixed
phase relationships
Figura between per
2.8: Una tecnica them.la The relative phase
generazione is controlled
di due by the
o più onde pa-
a dente di sega
rameter a (which takes the value 0.3 in the graphed signals). The “wrap”
con relazioni fisse tra le loro fasi. La fase relativa è controllata dal parametro
operation computes the fractional part of its input.
a (che assume il valore 0.3 nei segnali rappresentati nei grafici). L’operazione
“wrap” calcola la parte frazionaria del suo input.
40 CHAPTER 2. WAVETABLES AND SAMPLERS
(a)
20 40 50
10 30
(b)
15 25
(c)
20 40 60
oscillator as a mechanism for playing a stored wavetable (or part of one) end to
end. There is no reason the end of one cycle has to coincide with the beginning
of another. Instead, we could ask for copies of the waveform to be spaced with
alternating segments of silence; or, going in the opposite direction, the waveform
copies could be spaced more closely together so that they overlap. The single
parameter available in Section 2.1—the frequency—has been heretofore used to
control two separate aspects of the output: the period at which we start new
copies of the waveform, and also the length of each individual copy. The idea
of timbre stretching is to control the two independently.
Figure 2.9 shows the result of playing a wavetable in three ways. In each
case the output waveform has period 20; in other words, the output frequency
is R/20 if R is the output sample rate. In part (a) of the figure, each copy of the
38 Capitolo 2. Wavetables e campionatori
forma d’onda e anche la durata di ogni singola copia. L’idea del timbre stretching
è quella di controllare i due in modo indipendente.
La Figura 2.9 mostra il risultato della riproduzione di un wavetable in tre
modi. In ogni caso la forma d’onda di uscita ha un periodo pari a 20; in altre
parole, la frequenza di uscita è R/20 se R è la frequenza di campionamento
in uscita. Nella parte (a) della figura, ogni copia della forma d’onda viene
riprodotta su 20 campioni, in modo che la forma d’onda si inserisca esattamente
nel ciclo, senza spazi e senza sovrapposizioni. Nella parte (b), anche se il periodo
è ancora di 20, la forma d’onda è compressa in metà, centrata, del periodo (10
campioni); o in altre parole, il duty cycle – la quantità relativa di tempo in cui
la forma d’onda riempie il ciclo – equivale al 50 per cento. Per il restante 50 per
cento del tempo, l’output è zero.
Nella parte (c), la forma d’onda viene allungata a 40 campioni e, dal mo-
mento che viene ripetuta ogni 20 campioni, le forme d’onda si sovrappongono.
Il duty cycle è quindi del 200 per cento.
Supponiamo ora che la forma d’onda, con duty cycle del 100% abbia serie
di Fourier (paragrafo 1.7) pari a
a0 + a1 cos(2ωn + φ1 ) + a2 cos(4ωn + φ2 ) + · · ·
= b0 + b1 cos(ωn + θ1 ) + b2 cos(2ωn + θ2 ) + · · ·
e quindi
a0 = 2b0 , a1 = 2b2 , a2 = 2b4
e cosı̀ via: le parziali pari di x50 , in conclusione, vengono ottenute raddoppiando
le parziali di x100 (ancora non sappiamo niente al riguardo delle parziali dispari
42
2.4. Stretching del timbro CHAPTER 2. WAVETABLES AND SAMPLERS
39
200%
ampli-
tude 100%
50%
1 2 3 4 5
partial number
Figura 2.10:
Figure 2.10: The
I coefficienti delle serie
Fourier series Fourier per
magnitudes le forme
for the d’ondashown
waveforms illustrate in Fi-
in Figure
guraThe
2.9. 2.9.horizontal
Nell’asse orizzontale sono presenti
axis is the harmonic i numeri
number. armonici.
We only “hear”“sentiamo” solo
the coefficients
i coefficienti
for per numeri
integer harmonic armonici
numbers; the interi; le curve
continuous continue
curves sono
are the “interpolazioni
“ideal” contours.
ideali.
We see that squeezing the waveform by a factor of 2 has the effect of stretch-
di x50 e queste potrebbero essere in linea con quelle pari oppure no, a seconda di
ing the Fourier series out by two, and on the other hand stretching the waveform
fattori che non possiamo ancora controllare. È sufficiente dire, per il momento,
by a factor of two squeezes the Fourier series by two. By the same sort of ar-
che se la forma d’onda si collega con continuità con l’asse orizzontale a entrambe
gument, in general it turns out that stretching the waveform by a factor of
le estremità, le parziali dispari agiscono globalmente come quelle pari. Per ren-
any positive number f squeezes the overtones, in frequency, by the reciprocal
dere questo fatto più rigoroso abbiamo bisogno dell’analisi Fourier, sviluppata
1/f —at least approximately, and the approximation is at least fairly good if
nel Capitolo 9).
the waveform “behaves well” at its ends. (As we’ll see later, the waveform can
Analogamente, x100 e x200 sono legati nello stesso modo:
always be forced to behave at least reasonably well by enveloping it as in Figure
2.7.) π
x200 [2n] = x100 [n] + x100 [n + ]
Figure 2.10 shows the spectra of the three waveforms—or ω in other words the
one waveform at three duty cycles—of Figure 2.9.
in modo che, se le ampiezze della serie di Fourier di x200 sono The figure emphasizes the
indicate con
relationship between
c0 , c1 , . . . , si ha: the three spectra by drawing curves through each, which,
on inspection, turn out toc0be=the 2a0same
, c1 =curve,
2a2 , c2only
= 2a stretched
4 differently; as the
duty cycle goes up, the curve is both compressed to the left (the frequencies all
in modo che le parziali di x200 siano quelle pari di x100 .
drop) and amplified (stretched upward).
Vediamo che restringere la forma d’onda di un fattore di due ha l’effetto di
The continuous curves have a very simple interpretation. Imagine squeezing
allungare la serie di Fourier per due, mentre estendere la forma d’onda per un
the waveform into some tiny duty cycle, say 1 percent. The contour will be
fattore di due restringe la serie di Fourier di due. Con lo stesso principio, in ge-
stretched by a factor of 100. Working backward, this would allow us to inter-
nerale si scopre che l’allungamento della forma d’onda per un qualsiasi numero
polate between each pair of consecutive points of the 100 percent duty cycle
positivo f diminuisce gli ipertoni, in frequenza, del reciproco 1/f – almeno ap-
contour (the original one) with 99 new ones. Already in the figure the 50 per-
prossimativamente, e l’approssimazione è abbastanza buona se la forma d’onda
cent duty cycle trace defines the curve with twice the resolution of the original
“si comporta bene” alle sue estremità (come vedremo più avanti, la forma d’onda
può sempre essere impostata in modo da comportarsi almeno ragionevolmente
bene utilizzando un inviluppo come in Figura 2.7).
La Figura 2.10 mostra lo spettro delle tre forme d’onda di Figura 2.9 – o
in altre parole una forma d’onda a tre diversi duty cycle. Tracciando curve
40 Capitolo 2. Wavetables e campionatori
2.5 Interpolazione
Come detto in precedenza, i metodi di interpolazione vengono spesso utilizzati
per aumentare la precisione della ricerca sulle tabelle. Qui forniremo un calcolo
piuttosto semplificato degli effetti delle dimensioni della tabella e dei metodi di
interpolazione sul risultato della ricerca tabella.
Per parlare di errori nella ricerca su wavetable, dobbiamo vedere la wavetable
come una versione campionata di una funzione sottostante. Quando cerchiamo
un valore della funzione sottostante che si trova tra due punti della wavetable,
l’errore è la differenza tra il risultato della ricerca sulla wavetable e il valore
“ideale” della funzione in quel punto. Lo studio più importante dell’errore di
ricerca su wavetable suppone che la funzione sottostante sia sinusoidale (pagina
1). Successivamente possiamo quindi capire cosa succede ad altre wavetables
considerandole come somme di sinusoidi.
La precisione di ricerca su una wavetable contenente una sinusoide dipende
da due fattori: la qualità dello schema di interpolazione e il periodo della sinu-
soide. In generale, più lungo è il periodo della sinusoide, più il risultato sarà
accurato.
Nel caso di una wavetable sintetica, possiamo conoscere i suoi componenti
sinusoidali dal fatto di averli specificati – nel qual caso la questione diventa
2.5. Interpolazione 41
yINT (x) = a0 + a1 (x − x0 ) + a2 (x − x0 )2 + · · · + an (x − x0 )n .
Di solito si sceglie il polinomio che passa attraverso gli n + 1 punti più vicini
della wavetable. Per l’interpolazione ad un punto (un polinomio di grado zero)
vuol dire prendere a0 uguale al più vicino della wavetable. Per l’interpolazione
lineare (a due punti), tracciamo un segmento di retta tra i due punti della
wavetable che si trovano ai lati del punto desiderato x. Possiamo lasciare che
x0 sia l’intero più vicino a sinistra di x (che scriviamo come bxc) e quindi la
formula per l’interpolazione lineare è:
a0 = y[x0 ],
a1 = y[x0 + 1] − y[x0].
error
Figure 2.11: Linear interpolation of a sinusoid: (upper graph) the original sinu-
Figura 2.11: Interpolazione lineare di una sinusoide: (grafico superiore) la sinu-
soid, the interpolated sinusoid, and the best sinusoidal fit back to the interpo-
soide originale, la sinusoide interpolata e la sinusoide che meglio combacia con
lated version; (lower graph) the error, rescaled vertically.
la versione interpolata; (grafico inferiore) l’errore, riscalato verticalmente.
Table 2.1: RMS error for table lookup using 1, 2, and 4 point interpolation at
Tabella 2.1: Errore RMS per la ricerca di tabelle utilizzando interpolazioni a 1,
various table sizes.
2 e 4 punti a varie dimensioni della tabella.
Four-point
raddoppiando (cubic)diinterpolation
il numero punti sulla tabellaworks similarly.
si tende The interpolation
a migliorare l’errore RMS formula
is:
di 24 dB. La Tabella 2.1 mostra l’errore RMS calcolato per sinusoidi con vari
periodi e per interpolazione a 1, 2 e 4 punti yINT(una
(x) quantità
= leggermente diversa è
misurata in [Moo90, p. 164], dove vengono aggiunti anche gli errori di ampiezza
−f (f − 1)(f − 2)/6 · y[x − 1] + (f + 1)(f − 1)(f − 2)/2 · y[x ]
e fase, fornendo risultati leggermente 0più pessimisti (si veda anche [Har87]). 0
Il dominio−(fin+input
1)f (f − 2)/2 per
consentito · y[xla0 ricerca
+ 1] +su(ftabelle (f − 1)/6
+ 1)fdipende dal·numero
y[x0 + di 2]
punti di interpolazione. In generale, quando si utilizza l’interpolazione a k punti
inwhere f = xcon
una tabella −N x0 punti,
is thel’input
fractional part of
può variare theintervallo
su un index. di ForN tables
+ 1 − kwith 4 or
more points, doubling the number of points on the
punti. Se k = 1 (cioè non c’è alcuna interpolazione), il dominio è compreso table tends to improve the
RMS error by 24 dB. Table 2.1 shows the calculated
tra 0 e N (compreso l’estremo a 0 ma escludendo quello a N ) assumendo che RMS error for sinusoids at
i various
valori diperiods for 1,
input siano 2, and(come
troncati 4 pointvieneinterpolation.
effettuato in Pd (A per
slightly different
la ricerca non- quantity
interpolata).
is measuredIlin dominio
[Moo90, −1/2 a There,
è dap.164]. N − 1/2the se, invece,
errors arrotondiamo
in amplitudel’inputand phase are
alalso
numero
added intero più vicinoslightly
in, yielding anziché more
interpolare. In entrambi
pessimistic i casi
results. See il dominio si
also [Har87].)
estende su una lunghezza di N punti.
The allowable input domain for table lookup depends on the number of
Per l’interpolazione a due punti, l’input deve trovarsi tra il primo e l’ultimo
points of interpolation. In general, when using k-point interpolation into a
punto, ovvero tra 0 e N − 1. Quindi N punti sono sufficienti a definire la
table with
funzione su unNdominio
points,dithe input may
lunghezza N − range over an interval
1. Per interpolazione of N +
a quattro 1 − k points.
punti,
If k = 1 (i.e., no interpolation at all), the domain is
non possiamo ottenere valori per gli inputs tra 0 e 1 (non avendo i due punti from 0 to N (including the
endpoint at 0 but excluding the one at N ) assuming input
richiesti a sinistra di tali inputs) e nemmeno possiamo per lo spazio tra gli ultimi values are truncated
(as punti
due is done
(N − for2 enon-interpolated
N − 1). Quindi intable questolookup in Pd). varia
caso il dominio The da domain
1aN− is2from -1/2
etohaN la −
lunghezza
1/2 if, N − 3.
instead, we round the input to the nearest integer instead of
Le forme d’onda
interpolating. periodiche
In either case, memorizzate
the domain nelle wavetables
stretches over a richiedono
length of un N points.
trattamento speciale alle estremità della tabella. Ad esempio,
For two-point interpolation, the input must lie between the first and last supponiamo
che vogliamo memorizzare una sinusoide pura di lunghezza N . Per la ricerca
points, that is, between 0 and N − 1. So the N points suffice to define the
non-interpolata, basta impostare, ad esempio,
function over a domain of length N − 1. For four-point interpolation, we cannot
get values for inputsx[n]between 0 and
= cos(2πn/N ), 1n (not
= 0, .having
. . , N − the
1. required two points to the
left of the input) and neither can we for the space between the last two points
Per l’interpolazione a due punti, abbiamo bisogno di N + 1 punti:
(N − 2 and N − 1). So in this case the domain reaches from 1 to N − 2 and has
length N − 3. x[n] = cos(2πn/N ), n = 0, . . . , N.
Periodic waveforms stored in wavetables require special treatment at the
In altreofparole,
ends dobbiamo
the table. Forripetere
example,il primo puntowe
suppose (n = 0) alla
wish to fine della
store tabella,
a pure sinusoid of
in modo che l’ultimo segmento da N − 1 a N ritorni al valore iniziale.
length N . For non-interpolating table lookup, it suffices to set, for example,
x[n] = cos(2πn/N ), n = 0, . . . , N − 1
44 EXAMPLES
2.6. Capitolo 2. Wavetables e campionatori
47
table10
0
mtof
tabosc4~ table10
|
(OUT)
Figura2.12:
Figure 2.12:AUn oscillatore
wavetable wavetable:
oscillator: B01.wavetables.pd.
B01.wavetables.pd.
oscillatori wavetable in serie. L’output del primo viene utilizzato come ingresso
del secondo, e controlla quindi la sua frequenza che cambia periodicamente nel
tempo.
2.6. EXAMPLES 49
frequency squeeze
162 206
phase
generation --> phasor~ pack 0 50
range
adjustment --> *~ line~
+~ 1 +~ 128
tabread4~ waveform12
<--click to graph
tabwrite~ wave-out12
waveform12
wave-out12
Figure
Figura 2.13:
2.13: A
Unwavetable
oscillatoreoscillator
wavetablewith
con variable duty
duty cycle cycle: B03.tabread4.pd.
variabile: B03.tabread4.pd.
2.6. Esempi 47
pack 0 100
line~
tabread4~ sample-table
sample-table
Figure
Figura 2.14:Un
2.14: A sampler with mouse-controlled
campionatore index:
con controllo degli B04.sampler.pd.
indici tramite mouse:
B04.sampler.pd.
2.6. Esempi 49
Campionatori a loop
Nella maggior parte delle situazioni, si ha necessità di un modo più automatiz-
zato di spostare il mouse per specificare le posizioni di lettura della wavetable;
per esempio, vorreste voler riuscire a suonare un sample con una trasposizione
stabile; potreste avere più samples in esecuzione contemporaneamente (o altre
cose che richiedono attenzione), oppure potreste voler passare rapidamente tra
i samples o andare in posizioni prestabilite. Nei prossimi esempi, sviluppere-
mo un lettore automatico di samples, che, anche se solo uno dei molti possibili
approcci, è un potente lettore che viene spesso utilizzato.
Le patches B05.sampler.loop.pd e B06.sampler.loop.smooth.pd mostrano co-
me fare ciò: la prima nel modo più semplice possibile ed la seconda (rappre-
sentata in Figura 2.15, parte a) che incorpora una seconda curva per creare un
inviluppo sul suono, descritto nel paragrafo 2.3. Introduciamo una nuova classe
di oggetti:
cos∼ : calcola il coseno di 2π volte il segnale in ingresso (in modo che da 0
a 1 fa un ciclo completo). A differenza degli oggetti di lettura delle tabelle in
Pd, cos∼ lavora in modo periodico, in modo che non vi sia alcuna limitazione
di intervallo sul suo input.
In Figura 2.15 (parte a), un oggetto phasor∼ fornisce gli indici sia alla
wavetable (a destra) che alle fasi tramite una funzione con forma a metà coseno
(a sinistra). Questi due vengono moltiplicati e il prodotto è filtrato da un passa-
alto prima di uscire in output. La lettura della wavetable è semplice; il phasor
viene moltiplicato per un parametro “chunk size”, quindi sommato ad 1 e infine
usato come indice per tabread4∼. Il parametro per la chunk size è moltiplicato
per 441 per convertirlo da centesimi di secondo a campioni. Questo corrisponde
esattamente al diagramma a blocchi mostrato in Figura 2.5, con un segmento
di posizione pari a 1 (che non può essere 0 poiché 1 è l’indice minimo per cui
tabread4∼ funziona).
Il percorso del segnale a sinistra, nell’esempio, corrisponde alla tecnica di
inviluppo per wavetable lookup mostrata in Figura 2.7. Qui l’onda a dente
di sega è impostata sull’intervallo (−1/4, 1/4) (sottraendo e moltiplicando per
0.5), quindi inviato a cos∼. Questo legge la funzione coseno nell’intervallo
(−π/2, π/2), fornendo cosı̀ solo la metà positiva della forma d’onda.
La parte (b) della Figura 2.15 introduce un terzo parametro, “read point”,
che specifica dove, nel sample, il loop deve essere avviato (nella parte (a) siamo
sempre partiti dall’inizio). La modifica necessaria è abbastanza semplice: ag-
giungiamo il valore del “punto di lettura”, in campioni, all’indice della wavetable
e procediamo come prima. Per evitare le discontinuità nell’indice, “ammorbi-
diamo” il valore del punto di lettura usando gli oggetti pack e line∼, come
abbiamo fatto nel primo esempio di campionatore (Figura 2.14). Ciò solleva un
problema importante, anche se sottile. La formula di trasposizione momentanea
(pagina 33) prevede che, fintanto che la chunk size e il punto di lettura non va-
riano nel tempo, la trasposizione è pari alla frequenza moltiplicata per la chunck
size (come sempre, utilizzando appropriate unità di misura, Hertz per secondi,
per esempio, in modo che il prodotto sia adimensionale). Tuttavia, variare,
nel tempo, chunk size e punto di lettura influenzerà la trasposizione momenta-
nea, spesso in modi chiaramente percepibili, come si può ascoltare nell’esempio
B07.sampler.scratch.pd. L’esempio B08.sampler.nodoppler.pd (quello mostrato
50 Capitolo 2. Wavetables e campionatori
2.6. EXAMPLES 53
*~ 0.5 +~ 1 samphold~
*~ read point
cos~ tabread4~ table18 0
+~ 1
*~ * 441
hip~ 5
pack 0 100
|
(OUT) line~
samphold~
+~
(a)
tabread4~ table20
*~
hip~ 5
|
(OUT)
(b)
2.6. EXAMPLES 55
t b f +~ 0.5
phasor~ wrap~
/
s~ phase s~ phase2
phasor~
Figura2.16:
Figure 2.16: (a) overlapped
(a) two due looping samplers
looping sovrapposti
samplers (B10.sampler.overlap.pd);
(B10.sampler.overlap.pd); (b)
the
(b)same, but with
lo stesso, maa phasor-controlled
con il punto diread point controllato
lettura (B11.sampler.rockafella.pd).
da un phasor (esempio
B11.sampler.rockafella.pd).
2.6. Esempi 53
t = p + cf
e risolvendo per f si ha
t−p 2h/12 − p
f= =
c c
dove h è la trasposizione desiderata in semitoni. Questa è la formula usata
nell’oggetto expr.
Esercizi
1. Se un wavetable con 1000 campioni viene riprodotto alla trasposizione uni-
taria, ad una frequenza di campionamento di 44100 Hertz, quanto tempo
dura il suono risultante?
Potremmo allora immaginare che f (t) = 1 anche per t reale. Ma forse f potrebbe
essere 1 sugli interi e 0 ovunque altrove – questa sarebbe comunque una funzione
perfettamente accettabile, e la conoscenza del valore della funzione sugli interi
non la distingue dalla funzione costante f (t) = 1. Ma l’intuizione ci dice che la
funzione costante è quella buona nell’ambito dei segnali audio digitali, mentre
quella che nasconde un “segreto” tra i campioni non lo è. Una funzione che è
“possibile campionare” dovrebbe essere quella per cui possiamo usare un certo
schema di interpolazione ragionevole per dedurre i propri valori sui valori non
interi a partire dai valori sugli interi.
È consuetudine, a questo punto, in qualsiasi discussione di computer music,
introdurre il famoso Teorema di Nyquist. Ciò afferma (detto in maniera infor-
male) che se una funzione è una combinazione finita o addirittura infinita di
sinusoidi, nessuna delle cui frequenze angolari supera π, allora, almeno teorica-
mente, può essere completamente determinata dai valori che la funzione assume
sugli interi. Un possibile modo di ricostruire la funzione sarebbe come il limite
di interpolazioni polinomiali di ordini superiori.
La frequenza angolare π, chiamata frequenza di Nyquist, corrisponde a R/2
cicli al secondo se R è la frequenza di campionamento. Il periodo corrispondente
è due campioni. La frequenza di Nyquist è la migliore che possiamo ottenere
nel senso che qualsiasi sinusoide reale di frequenza superiore è uguale, sugli
interi, a una la cui frequenza è inferiore a quella di Nyquist, ed è proprio questa
seconda frequenza quella che otterremo tramite il processo di interpolazione
sopra proposto. Ad esempio, una sinusoide con frequenza angolare tra π e 2π,
55
56
60 CHAPTER 3. AUDIOCapitolo 3. Calcoli COMPUTATIONS
AND CONTROL audio e di controllo
7
0
Figure 3.1: Two real sinusoids, with angular frequencies π/2 and 3π/2, showing
Figura
that 3.1:
they Due sinusoidi
coincide reali,Acon
at integers. frequenze
digital audioangolari π/2 edistinguish
signal can’t 3π/2, che mostrano
between
che coincidono
the two. sui numeri interi. Un segnale audio digitale non può distinguere
tra le due.
3.2 Controllo
Finora abbiamo affrontato segnali audio, che sono solo sequenze x[n] definite per
n che assume valori interi, che corrispondono a punti regolarmente distanziati
nel tempo. Questo è spesso un contesto adeguato per descrivere le tecniche di
sintesi, ma le applicazioni reali di musica elettronica comportano solitamente
anche altri calcoli che devono essere effettuati a punti irregolari nel tempo. In
questa sezione svilupperemo una struttura per descrivere ciò che chiameremo
calcoli di controllo. Richiederemo sempre che ogni calcolo corrisponda a un
tempo logico specifico. Il tempo logico controlla quale campione di un output
audio sarà il primo a riflettere il risultato del calcolo.
In un sistema non in tempo reale (come Csound nella sua forma classica),
ciò significa che il tempo logico procede da zero fino alla lunghezza del file audio
di output. Ogni “scheda di partitura” ha un tempo logico associato (il tempo
nella partitura) e agisce una volta che il calcolo audio ha raggiunto quel tempo.
Cosı̀ i calcoli audio e di controllo (elaborazione dei campioni e gestione delle
schede di partitura) vengono gestiti a turno, tutti in ordine crescente di tempo
logico.
In un sistema in tempo reale, il tempo logico, che corrisponde ancora al tem-
po del successivo campione in output (audio) interessato, è sempre leggermente
in anticipo rispetto al tempo reale, misurato dal campione che sta effettivamente
uscendo dal computer. I calcoli di controllo e audio sono ancora effettuati in
alternanza, ordinati per tempo logico.
Il motivo per cui nei calcoli in computer music si utilizza il tempo logico
e non il tempo reale è quello di mantenere i calcoli indipendenti dal tempo
effettivo di esecuzione del computer, che può variare per una serie di ragioni,
anche per due calcoli apparentemente identici. Quando calcoliamo un nuovo
valore di un segnale audio o elaboriamo qualche controllo in input, il tempo
reale può scorrere, ma noi richiediamo che il tempo logico rimanga lo stesso
per tutto il calcolo, come se tale avvenga istantaneamente. Di conseguenza, i
calcoli in musica elettronica, se eseguiti correttamente, sono deterministici: due
58
62 CHAPTER 3. AUDIOCapitolo 3. Calcoli COMPUTATIONS
AND CONTROL audio e di controllo
audio output
(a) 0 1 2
. . . control
0 1 1 2 2 3 audio
logical time
(b) 0 1 2 3 4 5 6 7
. . .
0 4 4 8 8
Figure 3.2: Timeline for digital audio and control computation: (a) with a block
Figura
size 3.2:sample;
of one Timeline(b) per
withilacalcolo audio
block size digitale
of four e di controllo: (a) con un
samples.
blocco di lunghezza pari un campione; (b) con un blocco di lunghezza pari a
quattro campioni.
or processing some control input, real time may pass but we require that the
logical time stay the same through the whole calculation, as if it took place
esecuzioni dello stesso
instantaneously. calcoloofaudio
As a result this, in tempo reale
electronic musico meno, ognuna con
computations, gli stessi
if done cor-
inputs, dovrebbero avere risultati identici.
rectly, are deterministic: two runs of the same real-time or non-real-time audio
La Figura each
computation, 3.2 (parte
havinga)themostra schematicamente
same inputs, should havecome il tempo
identical logico e i
results.
calcoli sui campioni siano allineati. I campioni audio vengono calcolati a in-
Figure 3.2 (part a) shows schematically how logical time and sample com-
tervalli regolari (contrassegnati come linee ondulate), ma prima del calcolo di
putation are lined up. Audio samples are computed at regular periods (marked
ciascun campione facciamo tutti i calcoli di controllo che potrebbero influenzarlo
as wavy lines), but before the calculation of each sample we do all the control
(contrassegnati come segmenti di linea retta). In primo luogo facciamo i calco-
calculations that might affect it (marked as straight line segments). First we do
li di controllo associati a tempi logici a partire da zero, senza includere quelli
the control computations associated with logical times starting at zero, up to
associati al tempo logico 1; quindi calcoleremo il primo campione audio (con
but not including one; then we compute the first audio sample (of index zero),
indice zero), al tempo logico 1. Facciamo quindi tutti i calcoli di controllo fino
at logical time one. We then do all control calculations up to but not including
a non includere quelli associati al tempo logico 2, quindi il campione dell’indice
logical time 2, then the sample of index one, and so on. (Here we are adopt-
uno certain
ing e cosı̀ via (qui si stanno
conventions about adottando alcune
labeling that couldconvenzioni
be chosen sull’etichettatura
differently. For
che potrebbero essere scelte in modo diverso. Ad esempio,
instance, there is no fundamental reason control should be pictured non c’è una ragione
as coming
fondamentale per cui i calcoli di controllo devono essere
“before” audio computation but it is easier to think that way.) rappresentati come se
arrivassero “prima” dei calcoli audio, ma è tuttavia più facile pensare in questo
Part (b) of the figure shows the situation if we wish to compute the audio
modo).
output in blocks of more than one sample at a time. Using the variable B to
La parte (b) della figura mostra la situazione quando si desidera calcolare
denote the number of elements in a block (so B = 4 in the figure), the first audio
l’output audio in blocchi di più di un campione alla volta. Utilizzando la varia-
computation will output samples 0, 1, ...B − 1 all at once in a block computed
bile B per indicare il numero di elementi in un blocco (quindi B = 4 in figura), il
at logical time B. We have to do the relevant control computations for all B
primo calcolo audio emette i campioni 0, 1, ...B −1 tutti contemporaneamente in
periods of time in advance. There is a delay of B samples between logical time
un blocco calcolato al tempo logico B. Dobbiamo eseguire in anticipo i relativi
and the appearance of audio output.
calcoli di controllo per tutti i periodi di tempo B. C’è un ritardo di B campioni
Most computer music software computes audio in blocks. This is done to
tra il tempo logico e la comparsa dell’output audio.
increase the efficiency of individual audio operations (such as Csound’s unit
La maggior parte dei softwares per la computer music calcola l’audio in
blocchi. Ciò è fatto per aumentare l’efficienza delle singole operazioni audio
(ad esempio i generatori unitari di Csound e gli oggetti con ∼ in Max/MSP e
Pd). Ogni generatore unitario o oggetto con ∼ incorre in un costo di calcolo
(overhead) ogni volta che viene richiamato, uguale a forse venti volte il costo
3.3. CONTROL
3.3. Flussi STREAMS
di controllo 63
59
time
generators and Max/MSP and Pd’s tilde objects). Each unit generator or tilde
di calcolo
object medio
incurs di uneach
overhead campione.
time it isSecalled,
la dimensione del blocco
equal to perhaps è uno,
twenty questo
times the
significa
cost un overhead
of computing one del
sample2,000%; se è di Ifsessantaquattro
on average. (come
the block size is in Pd,
one, this per
means
default),
an overheadl’overhead è solo
of 2,000%; if itdiiscirca il 30%.(as in Pd by default), the overhead is
sixty-four
only some 30%.
······ ≤
≤ t[0] ≤ t[1]
t[0] ≤ ≤ t[2]
t[1] ≤ ≤ ·. ·. ·.
t[2] ≤
Ciascun
Each itemelemento della sequenza
in the sequence prende
is called il nome di evento.
an event.
Control streams may be shown graphically asgraficamente
I flussi di controllo possono essere visualizzati come
in Figure 3.3. nella Figura
A number line
3.3. Una retta numerata mostra sia il tempo che una sequenza di frecce nei
shows time and a sequence of arrows points to the times associated with each
tempi associati a ciascun evento. Il flusso di controllo visualizzato non ha dati
event. The control stream shown has no data (it is a time sequence). If we want
(è una sequenza temporale). Se vogliamo mostrare i dati nel flusso di controllo,
to show data in the control stream we will write it at the base of each arrow.
li scriveremo alla base di ciascuna freccia.
Un flusso numerico di controllo è quello che contiene un numero per punto
temporale, in modo da apparire come una sequenza di coppie ordinate:
dove gli t[n] sono i punti temporali e gli x[n] sono i valori del segnale in quei
tempi.
Un flusso numerico di controllo è approssimativamente analogo a un “con-
troller MIDI”, i cui valori cambiano irregolarmente, ad esempio quando un con-
troller fisico viene spostato da un esecutore. Altre sorgenti di flusso di controllo
possono avere maggiori velocità di cambiamento e/o più precisione. D’altra par-
te, una sequenza temporale potrebbe essere una sequenza di colpi di pedale, che
(nonostante l’implementazione MIDI) non dovrebbero essere considerati come
avere valori, ma solo tempi.
I flussi numerici di controllo sono come i segnali audio in quanto entrambi
sono solo valori numerici che cambiano nel tempo. Ma mentre il segnale audio
avviene ad un tasso costante (e quindi i valori temporali non devono essere spe-
cificati per ogni campione), il flusso di controllo avviene in modo imprevedibile
– forse uniforme, forse irregolare, forse mai.
Vediamo ora cosa succede quando cerchiamo di convertire un flusso numerico
di controllo in un segnale audio. Come prima, scegliamo una dimensione del
blocco pari a B = 4. Consideriamo un’onda quadra con periodo 5.5 come un
flusso di controllo:
(2, 1), (4.75, 0), (7.5, 1), (10.25, 0), (13, 1), . . .
e mostriamo tre modi per poterla convertire in un segnale audio. La Figura 3.4
(parte a) mostra la conversione più semplice e veloce possibile. Ogni campione
audio di uscita rispecchia semplicemente il valore più recente del segnale di
controllo. Quindi i campioni da 0 a 3 (calcolati al tempo logico di 4 a causa
della dimensione del blocco) sono di valore 1 a causa del punto (2, 1). I quattro
campioni successivi valgono ancora 1, perché dei due punti (4.75, 0) e (7.5, 1),
il più recente ha ancora valore 1.
La conversione più veloce possibile è più appropriata per i flussi di controllo
che non cambiano frequentemente rispetto alla dimensione del blocco. I suoi
vantaggi principali sono la semplicità di calcolo e la risposta più veloce possibile
ai cambiamenti. Come mostra la figura, quando gli aggiornamenti del flusso di
controllo sono troppo veloci (nell’ordine della dimensione del blocco), il segnale
audio potrebbe non essere una buona rappresentazione di quello sporadico (se,
come in questo caso, il flusso di controllo avviene ad intervalli regolari, possiamo
usare il teorema di campionamento per analizzare il risultato. Qui la frequenza
di Nyquist associata alla frequenza del blocco R/B è inferiore alla frequenza
dell’onda quadra in input, quindi l’output subisce un aliasing ad una nuova
frequenza inferiore alla frequenza di Nyquist).
La parte (b) mostra il risultato della conversione al campione più vicino.
Ogni nuovo valore del flusso di controllo al tempo t influenza i campioni di uscita
partendo dall’indice btc (il più grande intero che non supera t). Ciò equivale
ad utilizzare la conversione più veloce possibile con una dimensione di blocco
pari a 1; in altre parole, la conversione al campione più vicino nasconde l’effetto
della maggiore dimensione del blocco. Ciò è migliore rispetto alla conversione
più veloce possibile nei casi in cui il flusso di controllo cambi rapidamente.
La parte (c) mostra un tipo di conversione sporadic-to-audio, simile a quella
al campione più vicino, ma ora utilizzando anche l’interpolazione a due punti per
aumentare ulteriormente l’accuratezza del tempo. Concettualmente possiamo
descriverla come segue. Supponiamo che l’ultimo valore del flusso di controllo
3.3. Flussi di controllo 61
a
0 1 2 3 4 8 12 16
. . .
0 4 8 12 16
b
0 1 2 3 4 8 12 16
. . .
0 4 8 12 16
c
0 1 2 3 4 8 12 16
. . .
0 4 8 12 16
Figure 3.4: Three ways to change a control stream into an audio signal: (a) as
Figura
fast 3.4: Tre(b)
as possible; modi per to
delayed convertire un sample;
the nearest flusso di(c)controllo in un segnale
with two-point interpo- audio:
lation
(a) il for
piùhigher delay accuracy.
velocemente possibile; (b) ritardato al campione più vicino; (c) con
interpolazione a due punti per una maggiore precisione di ritardo.
62 Capitolo 3. Calcoli audio e di controllo
sia stato uguale a x e che il punto successivo sia (n + f, y), dove n è un intero
e f è la parte frazionaria del valore temporale (quindi 0 ≤ f < 1). Il primo
punto interessato, all’output audio, sarà il campione all’indice n. Ma invece di
impostare l’output su y come prima, lo impostiamo a
f x + (1 − f )y,
cioè ad una media ponderata tra il precedente ed il nuovo valore, i cui pesi
favoriscono maggiormente il nuovo valore se il tempo del valore sporadico è
precedentemente più vicino a n. Nell’esempio mostrato, la transizione da 0 a 1
al tempo 2 dà
0 · x + 1 · y = 1,
Questa tecnica fornisce una rappresentazione ancora più vicina del segnale di
controllo (almeno la parte di esso che si trova al di sotto della frequenza di
Nyquist) a scapito di più calcolo e un ritardo leggermente maggiore.
I flussi numerici di controllo possono anche essere convertiti in segnali au-
dio utilizzando funzioni di rampa per smussarne le discontinuità. Questo vie-
ne spesso applicato quando un flusso di controllo è utilizzato per controllare
un’ampiezza, come descritto nel paragrafo 1.5. In generale abbiamo bisogno di
specificare tre valori per impostare una funzione di rampa in movimento: un
tempo di inizio, un valore di destinazione (specificato dal flusso di controllo) e
un tempo di destinazione spesso espresso come ritardo successivo al tempo di
inizio.
In tali situazioni è quasi sempre abbastanza preciso regolare il tempo di
inizio e di fine per abbinare il primo campione audio calcolato ad un tempo
logico successivo, una scelta che corrisponde allo scenario descritto sopra, al
riguardo della conversione più veloce possibile. La Figura 3.5 (parte a) mostra
l’effetto della rampa da 0 al tempo 3, ad un valore di 1 al tempo 9, tornando
immediatamente indietro verso 0 al tempo 15, con dimensione del blocco B = 4.
I tempi 3, 9, e 15 sono troncati rispettivamente a 0, 8 e 12.
In molte situazioni reali la dimensione del blocco potrebbe essere dell’ordi-
ne di un millisecondo e la regolazione degli estremi della rampa agli estremi
del blocco funziona bene per controllare le ampiezze; raggiungere un obiettivo
una frazione di millisecondo in anticipo o in ritardo raramente produce una
differenza sonora. Tuttavia, altri usi delle rampe risentono maggiormente della
quantizzazione del tempo agli estremi. Ad esempio, se vogliamo fare qualcosa ri-
petutamente ogni pochi millisecondi, la variazione delle lunghezze del segmento
provocherà una aperiodicità udibile.
Per situazioni come queste, possiamo migliorare l’algoritmo di generazio-
ne di rampa per avviarsi e arrestarsi a campioni arbitrari, come illustrato, ad
esempio, nella Figura 3.5 (parte b). Qui gli estremi dei segmenti si allineano
esattamente con i campioni richiesti 3, 9 e 15. Possiamo andare ulteriormente
avanti e ottenere una regolazione per i campioni frazionati, facendo in modo che
i segmenti tocchino i valori 0 e 1 a punti esattamente specificabili sulla retta
numerata.
3.4. Conversione da segnali audio a flussi numerici di controllo 63
3.4. CONVERTING FROM AUDIO SIGNALS TO NUMERIC CONTROL STREAMS67
a
0 4 8 12
b
3 9 15
. . .
3 9 15
Figure
Figura 3.5:
3.5: Line segmentdel
Smussatura smoothing
flussi di ofcontrollo
numericnumerico
control streams:
tramite (a) aligned (a)
segmenti: to
block boundaries; (b) aligned to nearest sample.
allineato agli estremi del blocco; (b) allineato al campione più vicino.
For
Ad example, suppose we want
esempio, supponiamo to repeat aripetere
che vogliamo recordedunsound
suonoout of a wavetable
registrato su una
100 times per second, every 441 samples at the usual sample rate.
wavetable 100 volte al secondo, ogni 441 campioni alla frequenza di campiona- Rounding
errors
mento due to blocking
usuale. Gli erroriatdi64-sample boundaries
arrotondamento dovuticould detune the
alla creazione di playback
blocchi diby64
as much as a whole tone in pitch; and even rounding to one-sample
campioni potrebbero modificare l’intonazione di riproduzione anche di boundaries
un intero
could
tono; eintroduce variations up
anche arrotondando to about
a estremi di 0.2%,
un soloorcampione
three cents. This introdurre
potrebbe situation
would call for sub-sample accuracy in sporadic-to-audio conversion.
variazioni fino a circa lo 0.2%, o tre cents. Questa situazione richiederebbe un
accuratezza sul sub-campione nella conversione sporadic-to-audio.
trigger
signal snapshot
(a) (b)
Figure 3.6: Conversion between control and audio: (a) control to signal; (b)
Figura 3.6: Conversione tra controllo e audio: (a) da controllo a segnale; (b) da
signal to control by snapshots.
segnale da controllo tramite snapshots (“istantanee”).
onsets
threshold
(a)
turnoffs
time
(c)
dead periods
Figure 3.7: Threshold detection: (a) with no debouncing; (b) debounced using
Figura
two 3.7: Rilevamento
threshold di soglia: (a)
levels; (c) debounced senza
using soppressione
dead periods. dei rimbalzi; (b) sop-
primendo i rimbalzi utilizzando due livelli di soglia; (c) sopprimendo i rimbalzi
usando periodi morti.
3.7. Segnali audio come controllo 67
frequency 4
* 4
WRAP
OUT 1
IN
trigger
S/H
OUT
Figure 3.9: Sample and hold (“S/H”), using falling edges of the trigger signal.
Figura 3.9: Sample-and-hold (“S/H”), usando i punti di caduta del segnale di
trigger.
nuovo singolo valore dal segnale all’ingresso primario e viene emesso continua-
mente quel valore fino al punto successivo quando viene sostituito da un nuovo
valore, sempre ottenuto dal segnale all’ingresso primario.
Nell’audio digitale è spesso utile campionare un nuovo valore sui punti di
caduta del segnale di trigger, ovvero quando il valore corrente del segnale di
trigger è minore del suo valore precedente, come mostrato in Figura 3.9. Ciò
è particolarmente conveniente per l’uso con un’onda a dente di sega, quando
vogliamo campionare i segnali in sincronia con un processo controllato da un
oscillatore. L’oggetto di sample-and-hold di Pd è stato precedentemente in-
trodotto nel contesto del campionamento (esempio B08.sampler.nodoppler.pd,
pagina 50).
in delay time
delay (a)
out
time
(input)
(b)
(c)
Figure 3.10: Delay as an operation on a control stream: (a) block diagram; (b)
Figura
effect of 3.10: Operazione
a simple delay on adicontrol
delay su un flusso
stream; di controllo:
(c) effect (a) diagramma
of a compound delay. a
blocchi; (b) effetto di un delay semplice su un flusso di controllo; (c) effetto di
un delay composto.
72 Capitolo 3. Calcoli audio e di controllo
sync data
(a)
(b)
1 -2 3 -4 (c)
1 3
1 3
(d)
1 1 3
Figure 3.11: Operations on control streams (besides delay): (a) block diagrams;
Figura 3.11: Operazioni sui flussi di controllo (oltre al ritardo): (a) diagrammi
(b) merging; (c) pruning; (d) resynchronizing.
a blocchi; (b) merging; (c) pruning; (d) risincronizzazione.
3.9. CONTROLsui
3.9. Operazioni OPERATIONS IN PD
flussi di controllo in Pd 77
73
0 0
0
delay (a)
0 (b)
0 0 0 0
0 0
Figure
Figura 3.12:
3.12: The four control
Le quattro operations
operazioni in di
sui flussi Pd:controllo
(a) delay; (b) (a)
in Pd: merging; (c)
delay; (b)
pruning; (d) resynchronizing.
merging; (c) pruning; (d) risincronizzazione.
Or should the source event be considered as being first so that its value goes
viene visualizzato come una connessione (sottile) che trasporta i numeri come
to the output at the same time? How this should be disambiguated is a design
messaggi.
question, to which various software environments take various approaches. (In
Pd itI messaggi
is controlledche explicitly
non contengono dati compongono sequenze temporali. Per
by the user.)
visualizzare i messaggi senza dati, in Pd, viene usato il simbolo (arbitrario)
“bang”.
3.9I quattro
Control operations
tipi di operazioni sui flussi in Pd descritti nel paragrafo pre-
di controllo
cedente possono essere espressi in Pd come mostrato in Figura 3.12. I delays
So far we eseguiti
vengono have used Pd mostly
usando for processing
due oggetti di ritardo audio signals, although as early as
espliciti:
Figure 1.10 we have had to make the distinction between Pd’s notion of audio
del , and
signals delay : delaystreams:
of control semplice. thinè possibile
connections specificare il tempo
carry control di ritardo
streams tra-
and thick
mite creation argument o attraverso l’ingresso destro. Un
ones carry audio. Control streams in Pd appear as sequences of messages. The “bang” nell’ingresso
sinistro “aziona”
messages may contain il delay,
datache(most
poi emette
often,il one
“bang” dopo ilnumbers),
or more ritardo specificato
or not. in A
millisecondi. Il delay è semplice nel senso che l’invio
numeric control stream (Section 3.3) appears as a (thin) connection thatdi un bang in un delay già
carries
avviato resetta
numbers a un nuovo tempo di uscita, annullando il precedente.
as messages.
Messages not containing data make up time sequences. So that you can see
pipe : delay composto. I messaggi che arrivano nell’ingresso sinistro appaiono
messages with no data, in Pd they are given the (arbitrary) symbol “bang”.
in uscita dopo il ritardo specificato, impostato dal primo creation argument.
The four types of control operations described in the previous section can
Se ci sono più creation arguments, essi specificano una o più entrate per i dati
be expressed in Pd as shown in Figure 3.12. Delays are accomplished using two
numerici o simbolici che i messaggi contengono. Un qualsiasi numero di messag-
explicit delay objects:
gi può essere memorizzato contemporaneamente in pipe e i messaggi possono
del , riordinati
essere delay : insimpleuscitadelay. You can
in funzione specify
dei vari tempithedidelay
ritardo time in aassegnati.
a loro creation
L’unione
argument di flussi
or via di controllo
the right inlet. A in Pd non
“bang” viene
in the lefteseguita
inlet setsda the
oggetti
delay,espliciti
which
ma da un meccanismo di connessione di Pd stesso.
then outputs “bang” after the specified delay in milliseconds. The delay Questo è mostrato nella
is
parte (b) della figura con number boxes come esempio.
simple in the sense that sending a bang to an already set delay resets it to aIn generale, ogni volta
che output
new viene fatto
time,più di una the
canceling connessione
previously adscheduled
un ingresso one.di controllo, i flussi di
controllo vengono uniti.
pipe : compound delay. Messages coming in the left inlet appear on the
Pd offre diversi oggetti per il pruning su flussi di controllo, due dei quali
sono mostrati nella parte (c) della figura:
moses : selezione su intervallo numerico. I messaggi numerici che arrivano
nell’ingresso sinistro appaiono sull’uscita sinistra se sono più piccoli di un valore
74 Capitolo 3. Calcoli audio e di controllo
3.10 Esempi
Campionamento e foldover
L’esempio C01.nyquist.pd (Figura 3.13, parte a) mostra un oscillatore che ripro-
duce una wavetable passando attraverso le frequenze da 500 a 1423. Il wavetable
è costituito solo dalla 46-esima parziale, che quindi varia da 23000 a 65458 Hertz.
A una frequenza di campionamento pari a 44100 queste due frequenze suonano
teoricamente come 21100 e 21358 Hertz, ma il passaggio da l’una all’altra è
discendente per poi divenire ascendente.
Altre due forme d’onda sono invece fornite per mostrare gli interessanti effetti
di battimento tra le parziali che, sebbene dovrebbero essere distanti, si trovano
vicine a causa del foldover. Per esempio, a 1423 Hertz, il seconda armonico è
2846 Hertz, mentre il 33-esimo armonico suona a 1423 · 33 − 44100 = 2859 Hertz
– una discreta dissonanza.
Altri esempi meno estremi possono comunque produrre un foldover udibile
in forme meno drastiche. Di solito si tratta di una forma ancora scoraggiante
e vale la pena imparare a sentirla. L’esempio C02.sawtooth-foldover.pd (non
illustrato qui) mostra ciò per un’onda a dente a sega (l’oggetto phasor∼). Per
le wavetables che contengono registrazioni audio, l’errore di interpolazione può
creare un foldover supplementare. I suoi effetti possono variare notevolmente;
il suono è a volte descritto come “croccante” o “splattering”, a seconda del tipo
di registrazione, di trasposizione e di algoritmo di interpolazione.
3.10. EXAMPLES 79
line~
tabosc4~ table24
(OUT)
table24
(a)
pd metro
1 300 0 300
pd metro
line line~ 1 2 0 2
osc~ 880
line~ vline~
*~ *~
(b) (c)
Figure 3.13: (a) sending an oscillator over the Nyquist frequency; (b) zipper
Figurafrom
noise 3.13:
the(a) invio
line della frequenza
(control) object; (c)dithe
unline~
oscillatore oltre laobjects
and vline~ frequenza
com-di
Nyquist;
pared. (b) zipper noise dell’oggetto line∼ (c) confronto tra gli oggetti line∼
e vline∼.
76 Capitolo 3. Calcoli audio e di controllo
3.10. EXAMPLES 81
; cut the
cutoff 0 5 sound off
<-- record
r phase
In questa situazione, i flussi di controllo sono più adatti come trigger rispet-
to ai segnali audio. L’esempio C05.sampler.oneshot.pd (Figura 3.14) mostra
un possibile modo per realizzare ciò. I quattro oggetti con la tilde in basso a
sinistra costituiscono la rete di elaborazione del segnale per la riproduzione. Un
oggetto vline∼ genera un segnale di fase (in realtà si tratta solo un indice di ri-
cerca sulla tabella) diretto all’oggetto tabread4∼; questo sostituisce il phasor∼
dell’esempio B03.tabread4.pd (pagina 46) ed i suoi derivati.
L’ampiezza dell’output di tabread4∼ è controllata da un secondo vline∼,
per evitare le discontinuità nell’output nel caso in cui un nuovo evento venga
avviato mentre il precedente evento è ancora in riproduzione. L’oggetto vline∼
“cutoff” crea una rampa che manda l’output verso zero (indipendentemente dal
fatto che sia in riproduzione) in modo che, una volta che l’output sia zero,
l’indice della wavetable può essere cambiato in modo discontinuo.
Per avviare una nuova “nota”, in primo luogo, l’oggetto vline∼ “cutoff” va a
zero; quindi, dopo un ritardo di 5 msec (nel tempo in cui vline∼ ha raggiunto lo
zero) la fase viene resettata. Questo viene fatto con due messaggi: innanzitutto,
la fase è impostata su 1 (senza valore temporale in modo da saltare a 1 senza
nessuna rampa). Il valore “1” specifica il primo punto leggibile della wavetable,
poiché stiamo utilizzando l’interpolazione a 4 punti. In secondo luogo, nella
stessa message box, la fase è portata a 441,000,000 in un periodo di tempo di
10,000,000 msec (in Pd, i numeri molto grandi sono mostrati usando la notazione
esponenziale; questi due appaiono come 4.41e+08 e 1e+07.) Il quoziente è 44.1
(in unità per millisecondo) che fornisce una trasposizione di uno. L’oggetto
vline∼ superiore (che genera la fase) riceve questi messaggi tramite l’oggetto
“r phase” sopra di esso.
L’esempio presuppone che la wavetable scenda senza discontinuità a zero
nelle due estremità e la parte inferiore destra della patch mostra come registrare
un tale tipo di wavetable (in questo caso quattro secondi). Qui è sufficiente (e
computazionalmente più economico) un oggetto line∼. Anche se la wavetable
deve essere almeno di 4 secondi affinché tutto funzioni, è possibile registrare
wavetables più brevi semplicemente attivando prima l’oggetto line∼. L’unica
cautela è che, se si sta leggendo e scrivendo contemporaneamente dalla stessa
wavetable, si dovrebbe evitare situazioni in cui le operazioni di lettura e scrittura
si riferiscano contemporaneamente alla stessa parte della wavetable.
Gli oggetti vline∼ intorno al tabread4∼ sono stati scelti al posto di line∼
perché l’arrotondamento dei punti di arresto di quest’ultimo al confine del blocco
più vicino (tipicamente 1,45 msec) può rendere aperiodicità udibili nel suono se
la wavetable viene ripetuto più di 10 o 20 volte al secondo, e impedirebbe di
ottenere un suono piacevole e periodico a livelli più elevati di ripetizione.
Ritorneremo sul campionamento basato su vline∼ nel prossimo capitolo,
per aggiungere trasposizione, inviluppi e polifonia.
Da segnali a controlli
phasor~ 0.6
tabread4~ envelope
sequence sample
Figura 3.15:
Figure Un sequencer
3.15: in stile sintetizzatore analogico.
An analog-synthesizer-style sequencer.
3.9. Esempi 81
3.10. EXAMPLES 85
notein
Esercizi
1. Quante parziali di un tono La a 440 possono essere rappresentate digital-
mente ad una frequenza di campionamento di 44100 Hertz?
7. Qual è il livello relativo, in decibel, del terzo armonico (tre volte la fonda-
mentale) dell’onda a dente di sega rispetto a quella della fondamentale?
8. Supponiamo di sintetizzare un’onda a dente di sega a 44000 Hertz ad
una frequenza di campionamento di 44100 Hertz. Qual è la forma d’onda
risultante?
9. Utilizzando le tecniche del paragrafo 3.7, disegnare un diagramma a bloc-
chi per la generazione di due sinusoidi, con fase bloccata, a 500 e 700
Hertz.
10. Disegnare un diagramma a blocchi che illustri come utilizzare il threshol-
ding per rilevare quando un segnale audio ne supera un altro in valore
(questo potrebbe essere utile quando si vuole rilevare e filtrare il feedback
dagli altoparlanti ai microfoni).
84 Capitolo 3. Calcoli audio e di controllo
Capitolo 4
Automazione e gestione
della voce
Spesso è auspicabile controllare gli oggetti musicali o gli eventi come “aggregati”
piuttosto che singolarmente. Gli aggregati possono assumere la forma di una
serie di eventi distanziati nel tempo, in cui i dettagli degli eventi seguono dal-
l’architettura superiore (ad esempio, note in una melodia). Oppure gli oggetti
singoli potrebbero essere eseguiti contemporaneamente, come con le voci di un
accordo o le parziali in un tono complesso. Spesso alcune o tutte le proprietà
degli elementi singoli sono meglio dedotte da quelle del tutto.
Una ricca collezione di strumenti e di idee è sorta nel repertorio della musica
elettronica per distinguere i comportamenti individuali da quelli aggregati. In
questo capitolo ci occupiamo di due classi generali di tali strumenti: generatori
di inviluppo e banchi di voci. Il generatore di inviluppo automatizza il compor-
tamento nel tempo e il banco di voci su aggregati di processi simultanei (come
i generatori di segnali).
85
90
86 CHAPTER 4. AUTOMATION AND VOICEe gestione
Capitolo 4. Automazione MANAGEMENT
della voce
trigger
Figure 4.1:
Figura 4.1: ADSR envelope
Diagramma as a block
a blocchi di undiagram, showing
inviluppo ADSR the trigger
, che input
mostra (a
l’input
control stream) and the audio output.
trigger (un flusso di controllo) e l’output audio.
parameter sets the output value at the end of the attack segment (normally the
Ci sono
highest value cinque
outputparametri
by the ADSRche controllano
generator). il generatore
Second and ADSR.third,Intheprimo luo-
attack
go, un parametro di livello imposta il valore di uscita
and decay parameters give the time duration of the attack and decay segments. alla fine del segmento
di attacco
Fourth, (normalmente
a sustain parameter l’output
gives thepiùlevel
altoofprodotto
the sustain dalsegment,
generatore as aADSR).
fractionIl
secondo e il terzo, i parametri di attacco e decadimento,
of the level parameter. Finally, the release parameter gives the duration of the danno la durata dei
segmenti di attacco
release segment. e decadimento.
These Il quartowith
five values, together parametro
the timing è quello
of thedi“on”sustain
and e
fornisce il livello
“off” triggers, deldetermines
fully segmento the di sustain,
output ofespresso
the ADSR come una frazione
generator. del para-
For example,
metro di livello.
the duration Infine,
of the sustainil parametro di rilascio
portion is equal to the fornisce la durata
time between “on”delandsegmento
“off”
di rilascio.
triggers, minus Questi cinque valori,
the durations of theinsieme
attack andalla decay
temporizzazione
segments. dei triggers di
“on” e “off”, determinano completamente l’output del generatore ADSR. Ad
esempio,
Figurela4.2 durata
graphs della
some porzione
possibledioutputs
sostegno è uguale
of an ADSRalenvelope
tempo compreso
generator.tra In i
part (a) “on”
triggers we assume that
e “off”, the “on”
meno and “off”
le durate triggers are
dei segmenti widely enough
di attacco separated
e di decadimento.
that the sustain segment is reached before the “off” trigger is received. Parts
(b) La
andFigura
(c) of 4.2 riporta
Figure 4.2 alcuni
show the possibili
resultoutputs
of following di unangeneratore
“on” trigger di inviluppo
quickly
ADSR. Nellaone:
by an “off” parte
(b)(a) supponiamo
during the decay che i triggers
segment, and“on”(c) eeven
“off” siano during
earlier, abbastanzathe
separati
attack. Thein modo ADSR chegenerator
il segmento di sostegno
reacts to thesevenga raggiunto
situations prima che
by canceling il trigger
whatever
remains
“off” sia of the attack
ricevuto. Le andpartidecay
(b) esegments
(c) dellaand continuing
figura straight
4.2 mostrano to the release
il risultato di un
segment.rapido
innesco Also, dianunADSR
“off” generator
dopo un “on”: may be (b)retriggered
durante il “on” segmentobefore di the release
decadimen-
segment
to is finished
e (c) ancor prima,or durante
even during the attack,
l’attacco. decay, or ADSR
Il generatore sustainreagisce
segments. Part
a queste
(d) of the annullando
situazioni figure shows a reattack
qualsiasi during
residuo dei the sustain
segmenti di segment,
attacco e and part (e),
di decadimen-
during
to the decay segment.
e proseguendo direttamente nel segmento di rilascio. Inoltre, un generatore
ADSR può essere retriggerizzato con un “on” prima che il segmento di rilascio
The classicoapplication
sia terminato addiritturaofdurantean ADSR envelopediisattacco,
i segmenti using a decadimento
voltage-control key-
o soste-
board or sequencer to make musical notes on a synthesizer.
gno. La parte (d) della figura mostra una ri-attivazione durante il segmento Depressing and re-di
leasing a key (for example) would generate
sostegno e la parte (e) durante il segmento di decadimento. “on” and “off” triggers. The ADSR
generator could then control the amplitude of synthesis so that “notes” would
start and stop withclassica
L’applicazione the keys.di un Ininviluppo
addition to ADSRamplitude,
è quellathedi ADSR
utilizzaregenerator
una ta-
stiera o un sequencer, voltage-control, per effettuare note musicali to
can (and often is) used to control timbre, which can then be made su evolve
un sin-
naturally overLathe
tetizzatore. course ofe each
pressione note. di un tasto (ad esempio) genererebbero
il rilascio
triggers “on” e “off”. Il generatore ADSR potrebbe allora controllare l’ampiez-
za della sintesi in modo che le “note” partirebbero e si fermerebbero in funzione
dei tasti. Oltre all’ampiezza, il generatore ADSR può essere (e spesso è) utiliz-
zato per controllare il timbro, che può quindi evolvere naturalmente nel corso
di ogni nota.
4.2. Forme di ampiezza lineari e curvilinee 87
attack
decay
sustain
(a) release
on off time
(b)
on off
(c)
on off
(d)
on on
(e)
on on
Figure 4.2: ADSR envelope output: (a) with “on” and “off” triggers separated;
Figura
(b), (c) 4.2:
withOutput dell’inviluppo
early “off” ADSR:
trigger; (d), (a) con triggers “on” e “off” separati;
(e) re-attacked.
(b), (c) con il trigger “off” attivato prima che siano passati i tempi di attacco
e/o decadimento; (d), (e) con successiva riattivazione.
88 Capitolo 4. Automazione e gestione della voce
f3 (x) = x4 (quartica).
y[n] = f (n/N ).
4.2. LINEAR AND CURVED AMPLITUDE SHAPES 93
linear
ampli-
tude
decibels
quartic
0
0 1
units
Figure 4.3: Three amplitude transfer functions. The horizontal axis is in linear,
Figura 4.3:or Tre
logarithmic, funzioni
fourth-root didepending
units trasferimento di ampiezza. L’asse orizzontale è in
on the curve.
unità lineari, logaritmiche o radici quarte dell’unità, a seconda della curva.
94 CHAPTER 4. AUTOMATION AND VOICE MANAGEMENT
FREQUENCY
-1
f()
OUT
Figure 4.4: Using a transfer function to alter the shape of amplitude curves.
Figura 4.4: Utilizzo di una funzione di trasferimento per modificare la forma
delle curve di ampiezza.
A block diagram for this is shown in Figure 4.4. Here we are introducing a new
type of block to represent the application of a transfer function. For now we
won’t worry about its implementation; depending on the function desired, this
might be best done arithmetically or using table lookup.
4.3.1 Muting
La tecnica del muting consiste nell’applicare un inviluppo all’ampiezza in uscita,
che viene rapidamente spostata a zero prima che il parametro cambi e successi-
vamente ripristinata. Può o non può essere il caso in cui le modifiche discontinue
si traducano in un segnale che saga senza salti dopo lo zero. Nella Figura 4.5
(parte a) prendiamo l’esempio di un inviluppo di ampiezza (il segnale di uscita
di un generatore ADSR) e supponiamo che la modifica discontinua sia quella di
avviare una nuova nota ad ampiezza zero.
4.3. Cambiamenti di controllo continui e discontinui 91
(a)
time
(b)
Figure 4.5: Muting technique for hiding discontinuous changes: (a) the enve-
Figura 4.5: Tecnica del muting per nascondere cambiamenti discontinui: (a)
lope (upper graph) is set discontinuously to zero and the muting signal (lower
l’inviluppo (grafico superiore) viene impostato in maniera discontinua a zero e
graph) ramps down in advance to prepare for the change, and then is restored
il segnale di muting (grafico inferiore) si abbassa in anticipo per prepararsi alla
(discontinuously) to its previous value; (b) the envelope changes discontinuously
modifica e quindi viene ripristinato (discontinuamente) al valore precedente; (b)
between two nonzero values; the muting signal must both ramp down before-
l’inviluppo cambia in modo discontinuo tra due valori non nulli; il segnale di
hand and ramp back up afterward.
muting deve sia abbassarsi prima e tornare su dopo.
4.3.1 Muting
The muting technique is to apply an envelope to the output amplitude, which
is quickly ramped to zero before the parameter change and then restored after-
ward. It may or may not be the case that the discontinuous changes will result
in a signal that rises smoothly from zero afterward. In Figure 4.5 (part a),
we take the example of an amplitude envelope (the output signal of an ADSR
generator), and assume that the discontinuous change is to start a new note at
amplitude zero.
To change the ADSR generator’s output discontinuously we reset it. This is
4.3. CONTINUOUS AND DISCONTINUOUS CONTROL CHANGES 97
time
Figure
Figura 4.6: Thetecnica
4.6: La switch-and-ramp technique
switch-and-ramp for canceling
per annullare out discontinuous
le modifiche discontinue.
changes. A discontinuity
Una discontinuità (grafico (upper graph)
superiore) vieneis misurata
measurede annullata
and canceled
con out with
un segna-
alesignal
aventehaving the opposite
la discontinuità discontinuity
opposta (lower graph),
(grafico inferiore), which decade
che quindi then decays
senza
smoothly.
intoppi.
4.3.2 Switch-and-ramp
Anche la tecnica switch-and-ramp cerca di eliminare le discontinuità derivanti
da cambiamenti di controllo discontinui, ma lo fa in modo diverso: sintetizzando
una discontinuità opposta che aggiungiamo per annullare l’originale. La Figura
4.6 mostra un esempio in cui un suono percussivo sintetico (una sinusoide in-
viluppata) inizia una nota a metà di una precedente. L’attacco del suono non
time
4.4. Polifonia 93
trigger
snapshot
reset/
trigger level
...
OUT
control
voice 1
voice 2
voice 3
OUT
other hand, musical writing for ensembles frequently specifies explicitly which
4.4 Polifonia
instrument plays which note, so that the notes will connect to each other end-
to-end in a desirable way.
One simple voice allocation algorithm works as shown in Figure 4.10. Here
Nella musica, il termine polifonia viene solitamente usato per indicare “più di
we suppose that the voice bank has only two voices, and we try to allocate voices
una voce distinta che cantano o che suonano note diverse l’una dall’altra”.
for the tasks a, b, c, and d. Things go smoothly until task d comes along, but
Quando ci si riferisce a strumenti musicali elettronici usiamo questo termine
then we see no free voices (they are taken up by b and c). We could now elect
per “mantenere in parallelo diverse copie dello stesso processo”. Solitamente
either to drop task d, or else to steal the voice of either task b or c. In practice
chiamiamo ogni copia una “voce” in linea con l’analogia, sebbene le voci non
the best choice is usually to steal one. In this particular example, we chose to
devono necessariamente suonare suoni distinguibili separati.
steal the voice of the oldest task, b.
In
If wequesti
happentermini,
to knowun pianoforte
the lengthèofuno thestrumento
tasks b andpolifonico, con 88of“voci”.
c at the outset task d,
Ogni voce del pianoforte è normalmente in grado di suonare
we may be able to make a better choice of which voice to steal. In this example esattamente una
nota. Non esiste mai il dubbio di quale voce usare per suonare
it might have been better to steal from c, so that d and b would be playing una nota di una
determinata
together at the end and not d alone. In some situations this information willpiù
altezza e nemmeno se si possano suonare contemporaneamente be
note alla stessa
available when the intonazione.
choice must be made, and in some (live keyboard input, for
example) it will not.musicali elettronici polifonici usano un approccio più flessi-
Molti strumenti
bile per la gestione delle voci. La maggior parte dei softwares di sintesi (come
Csound) utilizzano uno schema di allocazione vocale dinamica, per cui, in ef-
4.6 viene
fetti, Voice
creata unatags nuova voce per ogni nota nello spartito. In sistemi come
Max o Pd, orientati verso un uso interattivo in tempo reale, un banco di voci
viene
Suppose allocato
now in anticipo
that we’re eusing
il lavoro da eseguire
a voice bank to(suonare note as
play notes, o qualunque altra
in the example
cosa)
above,viene distribuito
but suppose thetra le voci
notes a, b,del banco.
c, and d all have the same pitch, and further-
more that all
Questo their other
è illustrato nel parameters
diagramma are dellaidentical. How
Figura 4.8, canciascuna
dove we design a control
delle diver-
stream so that, when any one note is turned off, we know which
se voci produce un segnale di uscita, che sono poi sommati per ottenere l’output one it is?
totale del banco di voci. Spesso le singole voci richiedono più uscite separate;
per esempio, possono richiedere diversi canali in modo che possano essere spa-
zializzate singolarmente; o possono avere uscite individuali di invio effetti, in
modo che ognuna possa avere il proprio livello di invio.
100 CHAPTER 4. AUTOMATION AND VOICE MANAGEMENT
4.5. Allocazione vocale 95
"notes"
voice
allocation
voice 1
voice 2
voice 3
OUT
OUT
a
b
c
d
time
Figure 4.10:
Figura 4.10: Un
A polyphonic voice allocation
algoritmo polifonico algorithm,
di allocazione showing
vocale, voice stealing.
che mostra la voce
da togliere.
suonando insieme alla fine, rispetto ad avere solo d. In alcune situazioni queste
informazioni saranno disponibili quando la scelta deve essere fatta, mentre in
altre (l’input da tastiera in situazioni live, per esempio) non lo sarà.
4.7 Incapsulamento in Pd
Gli esempi di questo capitolo utilizzeranno il meccanismo di incapsulamento
di Pd, che consente la costruzione di patches che possono essere riutilizzate
un qualsiasi numero di volte. Una o più caselle di oggetti, in una patch Pd,
possono essere sottopatches, che sono patches distinte e incapsulate all’interno
delle caselle. Queste sottopatches possono essere di due tipi: one-off subpatches
e abstractions. In entrambi i casi la sottopatch appare come una casella di
oggetto in un’altra patch, chiamata genitore (parent).
Se si digita “pd” o “pd my-name” in una object box, questo crea una sot-
topatch one-off. I contenuti della sottopatch vengono salvati come parte della
parent patch, in un unico file. Se si utilizzano più copie di una sottopatch,
è possibile modificarle individualmente. D’altra parte, è possibile richiamare
un’abstraction digitando nella casella il nome di una patch Pd (senza l’esten-
sione “.pd”) salvata in un file. In questa situazione Pd leggerà quel file nella
4.8. EXAMPLES 103
98 Capitolo 4. Automazione e gestione della voce
(a) (b)
inlet
8
plusminus 5 + $1 − $1
13 3 outlet outlet
Figura 4.11:
Figure 4.11: Pd’s
Meccanismo di mechanism:
abstraction abstraction in
(a) Pd: (a) invocare
invoking l’abstrac-
the abstraction,
tion plusminus
plusminus with 5 con 5 come argument;
as a creation creation (b)
argument; (b) of
the contents il the
contenuto del file
file, “plusmi-
nus.pd”.
“plusminus.pd”.
attack release
stop
10 200 del 200
1 2500 0 500
(IN)
| line~
*~
|
(OUT)
Figure
Figura4.12:
4.12:Using a line~
Utilizzo di unobject tolline∼
oggetto generate angenerare
per ADSR envelope.
un inviluppo ADSR.
osc~ 440
4.8 Esempi
*~
|
Generatore di inviluppo ADSR
(OUT)
L’esempio D01.envelope.gen.pd (Figura 4.12) mostra come l’oggetto line∼ pos-
sa essere utilizzato per generare un inviluppo ADSR per controllare una patch
di sintesi (in figura
Figure è mostrato
4.13: Invoking solo l’inviluppo
the adsr ADSR). Il pulsante “attack”,
abstraction.
quando premuto, ha due effetti. Il primo (nella parte più sinistra della figura) è
quello di impostare l’oggetto line∼ sul suo segmento di attacco, con un obiet-
in a Pdtivo
abstraction (named adsr)
di 10 (l’ampiezza so that
di picco) in it200
canmsec
easily(ilbetempo
replicated. The design
di attacco). In secondo
of the adsr
luogo,abstraction
il pulsantemakes“attack” it possible
impostatoun control
delaythe200, five in
ADSR
modoparameters
che, dopo che il
either by supplying
segmento creationsia
di attacco arguments
stato fatto,or byil connecting
segmento dicontrol streams può
decadimento to itsiniziare.
inlets. Il segmento di decadimento scende ad un obiettivo di 1 (il livello di sostegno)
In this
dopoexample the msec
altri 2500 five creation
(il tempo arguments (1, 100, 200, 50, and 300) specify
di decadimento).
the peak level, attack“release”
Il pulsante time, decay manda time, sustain
lo stesso level (as
oggetto line∼a percentage
a zero in 500of millisecondi
peak
level), (il
andtempo
releasedi time. There
rilascio). are sixnel
Inoltre, control
caso ininlets: the first to
cui l’oggetto trigger
delay 200thesia stato
ADSR attivato,
generator, neland the others
momento in cuitoviene
update the values
premuto of the “release”,
il pulsante five parameters.
viene inviato
The output of the abstraction
un messaggio “stop”. Ciò is animpedisce
audio signal. al generatore ADSR di lanciare il suo
This abstraction
segmento is realized as
di decadimento doposhown in Figure
il lancio del suo 4.14. (You di
segmento canrilascio.
open this
subpatch by clicking onD02.adsr.pd
Nell’esempio the adsr object (Figurain the
4.13)patch.) The onlyil signal
incapsuliamo objects
generatore ADSR in
are line~
unaand outlet~. diThe
abstraction Pdthree nomeobjects
(conpack adsr)correspond
in modo che to the three
possa message
essere facilmente
objectsreplicata.
from the earlier Figure dell’abstraction
La struttura 4.12. From left adsr to right, they take
consente care of the
di controllare i cinque
attack,parametri
decay, andADSRrelease segments.
fornendo creation arguments o collegando flussi di controllo ai
Thesuoiattack segment goes to a target specified as “$1” (the first creation
ingressi.
In questo esempio i cinque creation arguments (1, 100, 200, 50 e 300) speci-
ficano il livello di picco, il tempo di attacco, il tempo di decadimento, il livello
di sostegno (come percentuale del livello di picco) e il tempo di rilascio. Ci sono
sei ingressi di controllo: il primo serve per attivare il generatore ADSR e gli altri
(IN)
| line~
*~
|
(OUT)
trigger
osc~ 440
*~
|
(OUT)
attack
trigger test for negative trigger
moses
inlet
t b b if so, zero the output
release
sel 0
if zero t b ... do this anyway
cancel stop peak
decay
level attack decay sustain
inlet inlet inlet inlet
ATTACK:
optionally
f $1
jump DECAY
0 release
to zero pack 0 $2 del $2
inlet
f $4 * $1
... then * 0.01 pack 0 $3 pack 0 $5
recall peak level RELEASE: ramp
and pack with back to zero
line~
attack time
outlet~
LINEAR QUARTIC
*~ *~
osc~
sample messages *~
; |
freq 1760 5000 (OUT)
;
freq 55 5000
Figure 4.15: Linear and quartic transfer functions for changing amplitude and
Figura 4.15: Funzioni di trasferimento lineari e quartiche per cambiare ampiezza
pitch.
e intonazione.
argument of the abstraction) over “$2” milliseconds; these values may be over-
written by sending numbers to the “peak level” and “attack” inlets. The release
segment is similar, but simpler, since the target is always zero. The hard part is
the decay segment, which again must be set off after a delay equal to the attack
time (the del $2 object). The sustain level is calculated from the peak level
and the sustain percentage (multiplying the two and dividing by 100).
The trigger inlet, if sent a number other than zero, triggers an onset (the
attack and decay segments), and if sent zero, triggers the release segment. Fur-
thermore, the ADSR generator may be reset to zero by sending a negative trigger
102 Capitolo 4. Automazione e gestione della voce
partial 1 1 0.56 0
partial 0.67 0.9 0.56 1 0 pitch
catch~ sum
|
(OUT)
$1 amplitude;
trigger $2 relative duration;
arguments:
r trigger $3 relative frequency;
$4 detune
t b b ATTACK
relative
frequency del 5 DECAY float $1
float $3 relative
float $2 * 0.1
r frequency duration
sqrt
times global r duration
*
frequency * sqrt
actual duration
+ $4 plus detune
0 $1 $1 5
osc~ attack time
line~
*~ 5 msec
*~ quartic amplitude
throw~ sum curve
*~
add to global
summing bus
Figure 4.17: The partial abstraction used by Risset’s bell instrument from
Figura 4.17: L’abstraction partial utilizzata dallo strumento a campana di
Figure 4.16.
Risset di Figura 4.16.
spectrum-tab
Figura4.19:
Figure 4.19:The
L’abstraction abstraction utilizzata
spectrum-partial
spectrum-partial in Figura
used in Figure 4.18. 4.18.
sentire solo uno scorrere continuo e non salti. Il risultato è un famoso repertorio
uditivo, un tono indefinito ascendente o discendente.
La tecnica per sintetizzare uno specifico inviluppo spettrale può essere gene-
ralizzata in molti modi: l’inviluppo può essere fatto variare nel tempo sia come
risultato di un’analisi live di un altro segnale, sia calcolandolo da un insieme di
regole di composizione o attraverso il cross-fading tra una collezione di inviluppi
spettrali pre-disegnati o attuando un warping sulle frequenze degli inviluppi, per
citare alcune possibilità.
r note
unpack 0 0 0 0 0 0 0
t b f
counter to f + 1
generate tags
mod 1e+06
sampvoice
one "sampvoice"
sampvoice
abstraction
sampvoice
for each
voice, each sampvoice
adding its sampvoice
own output
to a sum (left sampvoice
inlets and sampvoice
outlets)
sampvoice
|
(OUT)
Figure
Figura 4.20:
4.20: A
Unpolyphonic sampler
campionatore demonstrating
polifonico voice
che mostra allocationdella
l’allocazione and use
voceofe
tags.
l’uso dei tags.
108 Capitolo 4. Automazione e gestione della voce
al segnale di ingresso, e manda la somma sulla sua outlet. Nella parte inferiore
degli otto oggetti l’outlet ha quindi la somma di tutti e otto. Questo ha il
vantaggio di essere più esplicito dei busses throw∼/catch∼ ed è preferibile
quando l’apparenza visiva non è un problema.
Il lavoro principale della patch, tuttavia, è quello di distribuire i messaggi
“note” agli oggetti sampvoice. A tal fine occorre introdurre alcuni nuovi oggetti
Pd:
mod : modulo intero. Ad esempio, 17 mod 10 dà 7 e −2 mod 10 dà 8. Esiste
anche un oggetto di divisione intera denominato div ; dividendo 17 per 10
tramite div dà 1, e −2 diviso 10 dà −1.
poly : allineatore polifonico di voci. I creation arguments indicano il numero di
voci nel banco e un indicatore (1 se è necessaria togliere una voce, 0 altrimenti).
L’entrata a sinistra serve per il tag numerico e quella a destra è un flag che
indica se avviare o interrompere una voce con il tag dato (numeri diversi da
zero significano “inizio” e zero significa “stop”). Le uscite sono, a sinistra, il
numero di voce, al centro nuovamente il tag e a destra la flag start/stop. Nelle
applicazioni MIDI, il tag può essere la nota e il flag start/stop può essere la
velocity della nota.
makenote : fornisce i messaggi ritardati di note-off che corrispondono a relativi
messaggi di note-on. Le entrate sono un tag e un flag start/stop (“pitch” e
“velocity” nell’utilizzo MIDI) e la durata desiderata in millisecondi. La coppia
di tag/flag viene ripetuta alle due uscite quanto viene ricevuta; quindi, dopo il
ritardo, il tag viene ripetuto con il flag zero per arrestare la nota dopo la durata
desiderata.
I messaggi “note” contengono campi per la nota, l’ampiezza, la durata, il
sample number, la posizione di partenza del campione, il tempo di salita e il
tempo di decadimento. Ad esempio, il messaggio,
60 90 1000 2 500 10 20
(se ricevuto dall’oggetto r note) significa riprodurre una nota con pitch 60
(unità MIDI), ampiezza 90 dB, durata di un secondo, dalla wavetable denomi-
nato “sample2”, a partire dal punto a 500 msec nella wavetable, con tempi di
attacco e decadimento di 10 e 20 msec.
Dopo aver spacchettato il messaggio nelle sue sette componenti, la patch crea
un tag per la nota. Per fare questo, innanzitutto l’oggetto t b f emette un bang
dopo che l’ultimo dei sette parametri appare separatamente. La combinazione
degli oggetti +, f, e mod funge da contatore che riparte dopo un milione di passi,
generando essenzialmente un numero univoco corrispondente alla nota.
Il passo successivo consiste nell’utilizzare l’oggetto poly per determinare
con quale voce suonare la nota. L’oggetto poly prevede messaggi separati per
avviare e arrestare i compiti (ad esempio note). Quindi il tag e la durata vengono
prima inseriti nell’oggetto makenote, le cui uscite includono un flag (“velocity”)
a destra e il tag nuovamente a sinistra. Per ciascun tag ricevuto da makenote
vengono emesse due coppie di numeri, una per avviare la nota e un’altra, dopo
un ritardo pari alla durata della nota, per fermarla.
Dopo aver trattato con poly questo ingresso separato, ora dobbiamo ricavare
i messaggi corrispondenti alla chiusura delle note, poiché in realtà abbiamo
4.8. Esempi 109
4 60 90 1000 2 500 10 20
dove il “4” è il numero di voce emesso dall’oggetto poly. Il numero di voce viene
utilizzato per indirizzare il messaggio alla voce desiderata utilizzando l’oggetto
route. L’appropriato oggetto sampvoice ottiene quindi la lista originale che
inizia con “60”.
All’interno dell’oggetto sampvoice (Figura 4.21), il messaggio viene utiliz-
zato per controllare tabread4∼ e gli oggetti circostanti line∼ e vline∼. Il
controllo avviene con un ritardo di 5 msec come nell’esempio precedente di
campionatore. Qui, tuttavia, dobbiamo memorizzare i sette parametri della no-
ta (precedentemente non c’erano parametri). Questo viene fatto usando i sei
oggetti f, più l’ingresso destro dell’oggetto delay più a destra. Questi valori
vengono utilizzati dopo il ritardo di 5 msec. Ciò avviene in combinazione con
il meccanismo di muting descritto a pagina 90, utilizzando un altro oggetto
vline∼.
Quando i 5 msec sono trascorsi, l’oggetto vline∼, responsabile della gene-
razione dell’indice della wavetable, ottiene i suoi ordini di marcia (e contem-
poraneamente il numero della wavetable è impostato per l’oggetto tabread4∼
e il generatore di inviluppo di ampiezza inizia il suo attacco). L’indice della
wavetable deve essere impostato in modo discontinuo rispetto all’indice di av-
viamento, quindi scende all’indice finale con un tempo appropriato per ottenere
la trasposizione necessaria. L’indice di partenza, in campioni, è proprio 44,1
volte la posizione di partenza in millisecondi, più uno per consentire l’interpola-
zione a quattro punti nella tabella. Questo diventa il terzo numero in una lista
generata dall’oggetto pack al centro della patch della voce.
Decidiamo arbitrariamente che la rampa durerà diecimila secondi (questo è
il “1e+07” che compare nella casella di messaggio inviata al generatore di indici
della wavetable), sperando che questo sia lungo almeno quanto ogni nota che
verrà suonata. L’indice di fine è l’indice di partenza più il numero di campioni
nella rampa. A un fattore di trasposizione di uno, dobbiamo spostarci per
441,000,000 campioni durante quei 10,000,000 millisecondi, o proporzionalmente
più o meno a seconda del fattore di trasposizione. Questo fattore di trasposizione
è calcolato dall’oggetto mtof, diviso per 261.62 (la frequenza corrispondente alla
nota MIDI 60) in modo che un “pitch” specificato di 60 determini un fattore di
trasposizione di uno.
Questi e altri parametri vengono combinati in un messaggio tramite l’oggetto
pack in modo che le caselle di messaggi seguenti possano generare i messaggi
di controllo necessari. L’unica novità è l’oggetto makefilename che converte
numeri come “2” in simboli come “sample2” in modo che sia possibile impostare
la wavetable nell’oggetto tabread4∼.
Nella parte inferiore della patch vocale vediamo come viene implementato
un bus sommatore all’interno di una sottopatch; un oggetto inlet∼ cattura la
somma di tutte le voci precedenti, l’output della voce corrente viene aggiunto e
il risultato viene inviato alla voce successiva tramite l’oggetto outlet∼.
110 Capitolo 4. Automazione e gestione della voce
f delay for
f f f f delay note end
mtof * 44.1 f
/ 261.62 + 1
starting
* 4.41e+08 read
point
+
ending
read pack 0 0 0 0 0
point
attack decay
mute and
unmute 0 5 1 5 $3, $4 1e+07 $5 0, $1 $2 0 $1
wavetable
index
vline~ makefilename sample%d vline~ unpack
set $1 select mute dbtorms
wavetable
sqrt
tabread4~ sample1
sqrt
*~ amplitude
line~ envelope
*~
*~
add to inlet~ *~
summing +~
bus
outlet~
Figura4.21:
Figure 4.21: The
L’abstraction abstractionutilizzata
sampvoicesampvoice nel polyphonic
used in the campionatore polifonico
sampler of di
Figura4.20.
Figure 4.20.
4.8. Esempi 111
Esercizi
1. Quale input a una funzione di trasferimento di quarta potenza fornisce
un’uscita di −12 dB, se un input di 1 fornisce 0 dB?
2. Un generatore di inviluppo sale da zero ad un valore di picco durante il
suo segmento di attacco. Quanti decibel inferiori al picco ha raggiunto
l’output a metà dell’attacco, assumendo l’output lineare? E con la quarta
potenza?
3. Quale funzione di trasferimento di tipo esponenziale (cioè quale scelta di
n per la funzione f (x) = xn ) dobbiamo usare se si desidera che il valore a
metà percorso sia −12 decibel?
4. Supponiamo che si desideri fare una dissolvenza incrociata tra due segnali,
cioè far salire a 1 un segnale e contemporaneamente farne scendere a 0 un
altro. Se hanno potenza uguale e non sono correlati, una dissolvenza
incrociata lineare comporterà una perdita di 3 decibel a metà percorso del
cross-fading. Quale legge esponenziale conviene utilizzare per mantenere
la potenza costante durante la dissolvenza incrociata?
5. Un accordo a tre note, di durata 1.5 secondi, viene riprodotto una volta
ogni secondo. Quante voci sono necessarie per sintetizzarlo senza tagliare
le note?
6. Supponiamo che una patch di sintesi dia output tra −1 e 1. Mentre una
nota viene riprodotta, viene avviata una nuova nota usando la tecnica
voice-stealing “rampdown”. Qual è l’output massimo?
112 Capitolo 4. Automazione e gestione della voce
Capitolo 5
Modulazione
Dopo aver fatto una deviazione di due capitoli per parlare di aspetti di controllo
e organizzazione nella musica elettronica, torniamo a descrivere le tecniche di
sintesi audio e di elaborazione. Finora abbiamo visto metodi additivi e basati
su wavetables. In questo capitolo introdurremo tre cosiddette tecniche di modu-
lazione: modulazione di ampiezza, modulazione di frequenza e waveshaping. Il
termine “modulazione” si riferisce liberamente a qualsiasi tecnica che modifica
sistematicamente la forma di una forma d’onda piegando il suo grafico verti-
calmente o orizzontalmente. La modulazione è ampiamente usata per costruire
suoni sintetici con varie famiglie di spettri, per cui dobbiamo introdurre alcune
terminologie prima di entrare nello specifico delle tecniche.
a0 = a0 cos(0 · ωn),
113
114 Capitolo 5. Modulazione
(a) harmonic
amplitude spectral
envelope
frequency
(b) inharmonic
(c.) continuous
Figure
Figura 5.1:
5.1: A taxonomy
Una of timbres.
tassonomia TheL’inviluppo
di timbri. spectral envelope describes
spettrale descrivethe
la shape
forma
of thespettro.
dello spectrum. The sound
Il suono may discretamente
può essere be discretely or continuously distributed
o continuamente distribuito in
in
frequency;
frequenza; ifsediscretely, it may
discretamente, be essere
può harmonic or inharmonic.
armonico o inarmonico.
5.1. Tassonomia degli spettri 115
1
cos(a) cos(b) = cos(a + b) + cos(a − b) .
2
Per capire perché questa formula sia vera, possiamo usare la formula per il
coseno di una somma di due angoli
per valutare il lato destro della formula del prodotto dei coseni; quindi, applicato
anche a cos(a − b), e facendo le dovute semplificazioni, si ottiene il lato sinistro.
Possiamo usare questa formula per vedere cosa succede quando moltiplichia-
mo due sinusoidi (pagina 1):
cos(αn + φ) cos(βn + ξ) =
1
= 2 cos((α + β)n + (φ + ξ)) + cos((α − β)n + (φ − ξ)) .
IN
1
-1
OUT
Figura5.2:
Figure 5.2: Block
Diagramma a blocchi
diagram for ring per modulazione
modulating ad anello
an input signalcon un asegnale
with di
sinusoid.
ingresso di tipo sinusoidale.
α)n),
cos((α − β)n) = cos((β − α)n)
quindi
so la componente
the negative componentnegativa è esattamente
is exactly equivalentequivalente
to one at athequella con frequency
positive frequenza
positiva β − α, con la stessa
β − α, at the same amplitude. ampiezza.
Nel
In thecaso speciale
special casedove α =α β,
where = laβ, seconda banda
the second laterale (differenza)
(difference) sideband hasha zero
una
frequenza pari a zero. In questo caso la fase sarà significativa quindi
frequency. In this case phase will be significant so we rewrite the product with riscriviamo
il prodotto
explicit con replacing
phases, fasi esplicite,
β bysostituendo
α, to get: β con α, per ottenere:
2a cos(αn + φ) cos(αn + ξ) =
2a cos(αn + φ) cos(αn + ξ) =
= a cos(2αn + (φ + ξ)) + acos(φ − ξ).
= a cos (2αn + (φ + ξ)) + a cos (φ − ξ).
Il secondo termine ha frequenza pari a zero; la sua ampiezza dipende dalla fase
The second term has zero frequency; its amplitude depends on the relative phase
relativa delle due sinusoidi e varia da +a a −a, poiché la differenza di fase φ − ξ
of the two sinusoids and ranges from +a to −a as the phase difference φ − ξ
varia da 0 a π radianti. Questa situazione è mostrata nella parte (c) della Figura
varies from 0 to π radians. This situation is shown in part (c) of Figure 5.3.
5.3.
Finally, part
Infine, la (d)(d)
parte shows a carrier
mostra signal modulante
un segnale whose frequency is zero. Itsè value
la cui frequenza is
zero. Il
the constant a (not 2a; zero frequency is a special case). Here we
suo valore è la costante a (non 2a, la frequenza zero è un caso speciale). Quiget only one
sideband,
abbiamo soloof amplitude
una banda a/2 as usual.
laterale, di ampiezza a/2 come al solito.
We can useusare
Possiamo the distributive rule for multiplication
la legge distributiva to find out
per la moltiplicazione perwhat happens
scoprire cosa
when
succedewe quando
multiplymoltiplichiamo
signals together which
segnali consistciascuno
insieme, of more dei
than oneè partial
quali each.
costituiti da
più di una parziale. Ad esempio, nella situazione precedente possiamo sostituire
il segnale di frequenza α con una somma di diverse sinusoidi, ad esempio:
amplitude
a
(a)
a/2 a/2
OUT IN OUT
frequency
− +
a
(b)
a/2 a/2
a
(c)
a/2
z
a
(d)
a/2
=0
Figura 5.3:
Figure 5.3: Sidebands
Bande laterali derivanti
arising dalla moltiplicazione
from multiplying two sinusoidsdi due sinusoidi α
of frequency di
frequenze
and β: (a)α ewith
β: (a)
α > conβ α>> 0;
β> (b)0; with
(b) con
β >β> α αsointhat
modo chelower
the la banda laterale
sideband is
inferiore sia
reflected aboutriflessa
the frispetto l’asse
= 0 axis; (c)fwith
= 0; α(c)
= con α =which
β, for β, perthecuiamplitude
l’ampiezzaofdella
the
banda laterale sideband
zero-frequency a frequenza zero dipende
depends dalle fasi
on the phases delletwo
of the duesinusoids;
sinusoidi;(d)(d)with
con
α = 0.
5.2. Moltiplicazione di segnali audio 119
amplitude
(a)
frequency
(b)
(c)
Figure
Figura 5.4:
5.4: Result of ring
Risultato dellamodulation
modulazioneofad
a complex
anello di signal by a complesso
un segnale pure sinusoid:
per
(a) the original signal’s spectrum and spectral envelope; (b) modulated
una sinusoide pura: (a) lo spettro del segnale originale e l’inviluppo spettra-by a
relatively low modulating
le; (b) modulato frequency modulante
da una frequenza (1/3 of therelativamente
fundamental);bassa
(c) modulated
(1/3 della
by a higher frequency, 10/3 of the fundamental.
fondamentale); (c) modulato da una frequenza più alta, 10/3 del fondamentale.
For example, in the situation above we can replace the signal of frequency α
with a sum of several sinusoids, such as:
a1 cos(α1 n) + · · · + ak cos(αk n)
α1 + β, α1 − β, . . . , αk + β, αk − β
α1 + β, α1 − β, . . . , αk + β, αk − β.
5.3 Waveshaping
Un altro approccio per modulare un segnale, chiamato waveshaping, consiste
semplicemente di passarlo attraverso una funzione non-lineare opportunamente
scelta. Un diagramma a blocchi per realizzare il waveshaping è mostrato in Fi-
gura 5.5. La funzione f () (chiamata funzione di trasferimento) distorce la forma
d’onda in ingresso in una forma diversa. La nuova forma dipende dalla forma
dell’onda in entrata, dalla funzione di trasferimento e, soprattutto, dall’am-
piezza del segnale in entrata. Poiché l’ampiezza della forma d’onda in ingresso
influenza la forma della forma d’onda di uscita (e quindi il timbro), questo ci
5.3. WAVESHAPING
5.3. Waveshaping 127
121
IN
f()
OUT
Figure 5.5: Block diagram for waveshaping an input signal using a nonlinear
Figura 5.5: Diagramma a blocchi per il waveshaping di un segnale in ingresso
function f (). An amplitude adjustment step precedes the function lookup, to
usando una funzione non-lineare f (). Un controllo di regolazione dell’ampiezza
take advantage of the different effect of the wavetable lookup at different am-
precede la funzione di ricerca, per approfittare del diverso effetto della ricerca
plitudes.
su wavetable a diverse ampiezze.
to a clipping function. This example shows clearly how the input amplitude—
offreindex—can
the un modo semplice
affect the peroutput
creare waveform.
una famigliaThe di timbri in continuo
clipping function mutamen-
passes its
input to the output unchanged as long as it stays in the interval Per
to, semplicemente variando il livello di input della trasformazione. questo-
between
0.3 and +0.3. So when the input does not exceed 0.3 in absolute value,parte
motivo, è consuetudine includere un controllo di ampiezza principale come the
dell’operazione
output is the same di waveshaping,
as the input. come mostrato
But when nel diagramma
the input grows pasta theblocchi.
limits, the
L’ampiezza
output della forma
stays within; and asd’onda in entrataofè the
the amplitude chiamata
signal indice
increasesdi waveshaping.
the effect of
this clipping action is progressively more severe. In the figure, the piccole
In molte situazioni un indice piccolo porta a distorsioni relativamente input is(ina
decaying sinusoid. The output evolves from a nearly square waveform timbro
modo che l’output somigli molto all’input) e un indice più grande dà un at the
più distorto
beginning to ea più
purericco.
sinusoid at the end. This effect will be well known to anyone
whoLa hasFigura
played5.6 anmostra un esempio
instrument through familiare di waveshaping,
an overdriven amplifier. inThecuilouder
f () è una
the
input, the more distorted will be the output. For this reason, waveshapingco-
funzione di taglio (clipping function). Questo esempio mostra chiaramente is
me l’ampiezza
also sometimesdell’input – l’indice – possa influenzare la forma d’onda di uscita.
called distortion.
La Figure
funzione 5.7dishows
taglio apassa
muchil suo
simpleringresso
and all’uscita
easier to invariato finché rimane
analyse situation, nel-
in which
l’intervallo tra −0.3 e +0.3. Perció,
the transfer function simply squares the input: quando l’input non supera 0.3 in valore
assoluto, l’output è uguale all’input. Ma quando l’input supera questi limiti,
l’output vi resterà all’interno; all’aumentare f (x) = x2 dell’ampiezza del segnale, l’effetto
di questa azione di taglio sarà progressivamente più drastica. Nella figura, l’in-
For a sinusoidal input,
put è una sinusoide che decade. L’output si evolve da una forma d’onda quasi
x[n] = a cos(ωn + φ)
quadra all’inizio fino a una sinusoide pura alla fine. Questo effetto sarà ben
we
notogeta chiunque abbia suonato uno strumento attraverso un amplificatore con
overdrive. Quanto più fforte a2
(x[n])è = l’ingresso, più l’uscita
(1 + cos(2ωn sarà distorta. Per questa
+ 2φ))
ragione, il waveshaping viene a volte 2 chiamato anche distorsione.
If the
Laamplitude
Figura 5.7amostraequals una
one,situazione
this just amounts
molto piùtosemplice
ring modulating
e facile dathe sinusoid
analizzare,
by a sinusoid
in cui la funzione of the same frequency,
di trasferimento whose
calcola result we described
semplicemente il quadrato in dell’input:
the previ-
ous section: the output is a DC (zero-frequency) sinusoid plus a sinusoid at
f (x) = x2 .
1 (a)
-1
0.3
(b)
-0.3
(c)
0.3
-0.3
Figure
Figura 5.6:
5.6: Clipping
Esempio di aswaveshaping
an example con
of waveshaping: (a) the
taglio: (a) l’input, input,
una a decaying
sinusoide che de-
sinusoid; (b) the waveshaping function, which clips its input to the interval
cade; (b) la funzione di waveshaping, che taglia l’input al di fuori dell’intervallo
between
tra −0.3-0.3 and (c)
e +0.3; +0.3; (c) the result.
il risultato.
5.3. Waveshaping 123
1
(a)
-1
(b)
-1 1
1
(c)
2
Figure
Figura5.7:
5.7:Waveshaping
Waveshaping using a quadratic
usando transferdifunction
una funzione f (x) = xquadratica
trasferimento : (a) the
input; (b) the transfer function; (c) the result, sounding at twice the
f (x) = x2 : (a) l’input; (b) la funzione di trasferimento; (c) il risultato, original
che
frequency.
suona al doppio della frequenza originale.
twice the original frequency. However, in this waveshaping example, unlike ring
modulation, the amplitude of the output grows as the square of the input.
Keeping the same transfer function, we now consider the effect of sending in
a combination of two sinusoids with amplitudes a and b, and angular frequencies
α and β. For simplicity, we’ll omit the initial phase terms. We set:
a2
f (x[n]) = (1 + cos(2αn)) +
2
b2
+ (1 + cos(2βn))
2
+ab [cos((α + β)n) + cos((α − β)n)]
The first two terms are just what we would get by sending the two sinusoids
through separately. The third term is twice the product of the two input terms,
124 Capitolo 5. Modulazione
si ottiene
a2
f (x[n]) = (1 + cos(2ωn + 2φ)).
2
Se l’ampiezza a è uguale a 1, ciò equivale semplicemente ad una modulazione ad
anello della sinusoide tramite una sinusoide alla stessa frequenza, il cui risultato
abbiamo descritto nel paragrafo precedente: l’output è una sinusoide DC (a
frequenza nulla) più una sinusoide al doppio della frequenza originale. Tuttavia,
in questo esempio di waveshaping, diversamente dalla modulazione ad anello,
l’ampiezza dell’output cresce come il quadrato dell’input.
Utilizzando la stessa funzione di trasferimento, consideriamo ora l’effetto
di inviare una combinazione di due sinusoidi con ampiezze a e b e frequenze
angolari α e β. Per semplicità, ometteremo i termini di fase iniziale. Sia quindi
e applicandovi f () si ottiene
a2
f (x[n]) = 2 (1 + cos(2αn))+
2
+ b2 (1 + cos(2βn))+
I primi due termini sono proprio quello che avremmo ottenuto inviando separa-
tamente le due sinusoidi. Il terzo termine è due volte il prodotto dei due termini
in input, che proviene dal termine misto nell’espansione
f (x + y) = x2 + 2xy + y 2 .
f (x[n + τ ]) = f (x[n])
(in alcuni casi speciali l’output può avere periodo pari ad un sottomultiplo di τ ,
in modo da ottenere, come risultato, un armonico dell’input, questo accade, ad
esempio, in Figura 5.4).
5.3. Waveshaping 125
f (x + y)[n + τ ] = f (x + y)[n].
f (x) = f0 + f1 x + f2 x2 + f3 x3 + · · ·
Poiché i termini della serie sono successivamente moltiplicati per potenze su-
periori dell’indice a, un valore piccolo di a enfatizzerà i primi termini più
pesantemente e un valore più alto sottolineerà quelli superiori.
Gli spettri dei singoli termini possono essere trovati applicando ripetutamen-
te la formula del prodotto del coseno:
1 = cos(0)
x[n] = cos(ωn)
1 1
x2 [n] = 2 + 2 cos(2ωn)
1 2 1
x3 [n] = 4 cos(−ωn) + 4 cos(ωn) + 4 cos(3ωn)
1 3 3 1
x4 [n] = 8 cos(−2ωn) + 8 cos(0) + 8 cos(2ωn) + 8 cos(4ωn)
1 4 6 4 1
x5 [n] = 16 cos(−3ωn) + 16 cos(−ωn) + 16 cos(ωn) + 16 cos(3ωn) + 16 cos(5ωn)
e cosı̀ via. I numeratori delle frazioni sono individuati dal triangolo di Pascal. Il
Teorema del Limite Centrale, in Teoria delle Probabilità, implica che la k−esima
riga può essere approssimata da una curva gaussiana la cui deviazione standard
(una misura di larghezza) è proporzionale alla radice quadrata di k.
126 Capitolo 5. Modulazione
f (−x) = f (x)
f (−x) = −f (x)
(a) (b)
modulation modulation
frequency frequency
1 1
-1 -1
index of
index of
modulation
modulation
carrier
1 frequency
carrier N
frequency
1
-1
OUT
OUT
Figure 5.8: Block diagram for frequency modulation (FM) synthesis: (a) the
Figura 5.8: Diagramma a blocchi per la sintesi di modulazione di frequenza
classic form; (b) realized as phase modulation.
(FM): (a) forma classica; (b) realizzata come modulazione di fase.
e
sin(a cos(ωm n))
hanno, rispettivamente, armonici sintonizzati a
0, 2ωm , 4ωm , . . .
e
ωm , 3ωm , 5ωm , . . .
e ognuno è moltiplicato per una sinusoide alla frequenza portante. Quindi, ci
sarà uno spettro centrato sulla frequenza portante ωc , con bande laterali ai
multipli sia pari che dispari della frequenza di modulazione ωm , prodotti rispet-
tivamente dai waveshaping, sopra, con seno e il coseno. L’indice di modulazione
a, quando cambia, controlla la forza relativa delle varie parziali. Le parziali
stesse sono situate alle frequenze
ωc + mωm
dove
m = . . . , −2, −1, 0, 1, 2, . . .
Come per tutte le situazioni in cui si moltiplicano due segnali periodici, se c’è
un sopramultiplo comune dei due periodi, il prodotto risultante si ripeterà a
quel periodo più lungo. Quindi se i due periodi sono kτ e mτ , dove k e m
sono relativamente primi, entrambi si ripetono dopo un intervallo di tempo di
kmτ . In altri termini, se i due hanno frequenze che sono entrambe multiple
di una frequenza comune, cosicché ωm = kω e ωc = mω, ancora con k e m
relativamente primi, il risultato si ripete alla frequenza del sottomultiplo comune
5.5. Esempi 129
5.5 Esempi
Modulazione ad anello e spettri
L’esempio E01.spectrum.pd serve per introdurre uno strumento di misura dello
spettro che useremo; qui saltiamo al secondo esempio, E02.ring.modulation.pd
(Figura 5.9), che mostra l’effetto di modulare ad anello uno spettro armonico
(che è stato trattato teoricamente nel paragrafo 5.2 e mostrato in Figura 5.4).
In questo esempio consideriamo un segnale i cui armonici (da 0 a 5) hanno tutti
ampiezza unitaria.
Gli armonici possono essere attivati e disattivati separatamente con dei tog-
gles. Quando sono accesi, l’inviluppo spettrale ha un picco al DC (perché il
segnale costante è due volte più forte delle altre sinusoidi), ha poi una regione
piatta dal primo al quinto armonico e infine scende a zero.
Nella porzione della patch che riguarda la generazione del segnale (parte (a)
della figura), le sei parziali sono sommate e tale somma viene moltiplicata per il
singolo oscillatore portante (i sei segnali vengono sommati implicitamente colle-
gandoli tutti alla stessa entrata dell’oggetto ∗ ∼). Il valore della “fondamentale”
in alto viene calcolato per allinearsi bene all’analisi spettrale, il cui risultato è
indicato nella parte (b) della figura.
L’analisi spettrale (che utilizza tecniche che non descriveremo fino al Capitolo
9) mostra l’ubicazione delle sinusoidi (assumendo uno spettro discreto) sull’asse
orizzontale e le loro grandezze su quello verticale. Quindi la presenza di un
picco in DC, di magnitudine uno, nello spettro del segnale di ingresso ci dice,
secondo la Figura 5.3, che dovrebbe esserci un picco nello spettro di uscita,
alla frequenza portante, di altezza 1/2. Analogamente, le altre due sinusoidi
nel segnale di ingresso, che hanno l’altezza 1/2 nello spettro, danno origine,
ciascuna, a due picchi in uscita, di altezza 1/4. Uno di questi quattro è stato
riflesso sul bordo sinistro della figura (prendendo il valore assoluto della sua
frequenza negativa).
r fundamental
* 0 * 1 * 2 * 3 * 4 * 5
*~ *~ *~ *~ *~ *~
0 carrier
*~ osc~ frequency
|
(OUT) (a)
SPECTRUM
.
1
0.5
0
0 1 2 3 4 5 6 7
-- partial number --
(b)
Figura5.9:
Figure 5.9:Ring
Modulazione ad anello
modulation di un tono
of a complex tonecomplesso tramite
by a sinusoid: unarealization;
(a) its sinusoide:
(a) la sua realizzazione;
(b) a measured spectrum. (b) uno spettro misurato.
5.5. Esempi 131
(Figura 5.10). Il segnale che processiamo qui è una registrazione di una voce
che parla.
Le sottopatches pd looper e pd delay nascondono i dettagli. Il primo è un
campionatore a loop del tipo descritto nel Capitolo 2. Il secondo è un ritardo
di 1024 campioni, che utilizza oggetti che introdurremo più avanti nel Capitolo
7. Presentiamo qui una classe di oggetti:
fiddle∼ : tracker di pitch. L’ingresso accetta un segnale da analizzare e
messaggi per modificare le impostazioni. A seconda dei suoi creation arguments,
fiddle∼ può avere un numero variabile di uscite che offrono varie informazioni
sul segnale di ingresso. Come mostrato qui, con un solo creation argument per
specificare la dimensione della finestra, la terza uscita tenta di analizzare il tono
del segnale di ingresso e l’ampiezza di quella porzione dell’input che si ripete
(almeno approssimativamente) al tono riportato. Questi vengono emessi come
un elenco di due numeri. Il tono, che è in note MIDI, viene riportato con il
valore zero se non vi è identificazione.
In questa patch la terza uscita viene spacchettata nelle sue componenti di
tono e ampiezza e il componente tono viene filtrata dall’oggetto moses in modo
che siano utilizzate solo le stime riuscite di tono (non nulle). Queste vengono
convertite in frequenze dall’oggetto mtof. Infine, le stime di frequenza vengono
ridotte di 1/2 o moltiplicate per 15, a seconda del moltiplicatore selezionato,
per fornire la frequenza di modulazione. Nel primo caso otteniamo un octave
divider, e nel secondo, un’aggiunta di ulteriori armonici superiori che deformano
le vocali.
r fundamental
* 0 * 1 * 2 * 3 * 4 * 5
*~ *~ *~ *~ *~ *~
0 carrier
*~ osc~ frequency
|
(OUT) (a)
SPECTRUM
.
1
0.5
0
0 1 2 3 4 5 6 7
-- partial number --
(b)
Figura5.9:
Figure 5.10:
RingAbbassamento
modulation of adel tono tone
complex di unby suono di un’ottava
a sinusoid: tramite
(a) its realization;
individuazione
(b) a measured del suo tono e modulando a metà della fondamentale.
spectrum.
5.5. Esempi 133
osc~ 300
loadbang
225
225 <-- frequency of second tone
osc~
loadbang
+~
50
*~ amplitude of sum
50 <-- before clipping
clip~ -1 1 / 100
|
(OUT)
of frequency by the mtof object. Finally, the frequency estimates are either
reduced by 1/2 or else multiplied by 15, depending on the selected multiplier,
5.5. EXAMPLES 139
to provide the modulation frequency. In the first case we get an octave divider,
and in the second, additional high harmonics that deform the vowels.
osc~ 220
Waveshaping and difference tones
E05-tab
0 <- index
Example E04.difference.tone.pd (Figure 5.11) introduces waveshaping, demon-
strating/the
100nonlinearity of the process. Two sinusoids (300 and 225 Hertz, or
a ratio of 4 to 03) 50
pack are summed and then clipped, using a new object class:
clip~ : signal clipper. When the signal lies between the limits specified by
line~
the arguments to the clip~ object, it is passed through unchanged; but when
*~below the lower limit or rises above the upper limit, it is replaced by the
it falls
limit. The effect of clipping a sinusoidal signal was shown graphically in Figure
*~ 128
5.6.
+~long
As 129as the amplitude of the sum of sinusoids is less than 50 percent, the
sum can’t exceed one in absolute value and the clip~ object passes the pair of
tabread4~ E05-tab
sinusoids through unchanged to the output. As soon as the amplitude exceeds
hip~ 5however, the nonlinearity of the clip~ object brings forth distor-
50 percent,
tion|products (at frequencies 300m + 225n for integers m and n), all of which
(OUT) to be multiples of 75, which is thus the fundamental of the resulting
happening
tone. Seen another way, the shortest common period of the two sinusoids is
1/75 second
Figure (whichChebychev
5.12: Using is four periods of the 300
polynomials Hertz, tone and
as waveshaping three functions.
transfer periods of
Figura
the 2255.12:
HertzUtilizzo deithe
tone), so polinomi di Chebychev
result repeats come
75 times perfunzioni
second. di trasferimento
waveshaping.
The frequency of the 225 Hertz tone in the patch may be varied. If it is
moved slightly away from 225, a beating sound results. Other values find other
common subharmonics, and still others give rise to rich, inharmonic tones.
cos(5ωn)
by waveshaping a sinusoid
134 Capitolo 5. Modulazione
cos(5ωn)
x[n] = cos(ωn).
dove a[n] è un indice opportuno che può variare in funzione del sample number
n. Quando accade che a valga uno, l’output è il quinto armonico puro. Altri
valori di a danno spettri variabili che, in generale, hanno il primo e il terzo
armonico oltre che il quinto.
Combinando opportunamente i polinomi di Chebychev, possiamo ottenere
qualsiasi sovrapposizione desiderata di componenti nella forma d’onda di uscita
(sempre, fino a quando l’indice del waveshaping è uno). Ma il vero aspetto inte-
ressante del waveshaping – cioè che cambiando semplicemente l’indice possiamo
produrre spettri che si evolvono in modi interessanti ma controllabili – non è
affrontato, almeno direttamente, dalla teoria di Chebychev.
f (x) = f0 + f1 x + f2 x2 + · · · ,
f1 = f0 , 2f2 = f1 , 3f3 = f2 , . . .
ea cos(ωn)
f (a cos(ωn)) = = ea cos(ωn)−1 .
ea
Questo è realizzato nell’Esempio E06.exponential.pd. Gli spettri risultanti
per a = 0, 4 e 16 sono mostrati in Figura 5.13. Al crescere dell’indice di wave-
shaping, decresce l’energia presente nella fondamentale; l’energia viene sempre
di più diffusa sulle parziali.
sin(a cos(ωn)) = 2J1 cos(ωn) − 2J3 (a) cos(3ωn) + 2J5 (a) cos(5ωn) ∓ · · ·
136 Capitolo 5. Modulazione
a=0 0
0.25
a=4 0
0.25
a=16 0
0 1 2 3 4 5 6 7
−− partial number −−
Figura
Figure 5.13: Spettri di
5.13: Spectra of output di waveshaping
waveshaping usando
output using una funzione
an exponential di trasferi-
transfer func-
mento esponenziale.
tion. Indices Sono mostrati
of modulation of 0, 4, indici
and 16diare
modulazione
shown; notepari
theadifferent
0, 4 e 16;vertical
notare
le diverse scale verticali.
scales.
5.5. EXAMPLES 143
(frequency)
|
(index)
osc~
|
*~
symmetry
+~ 0.1 0.1 mixed
cos~ 0 even
| odd
0.25
(OUT)
Le funzioni Jk (a) sono le funzioni di Bessel del primo tipo, che gli ingegneri
utilizzano talvolta per risolvere i problemi relativi alle vibrazioni o al flusso di
calore sui dischi. Per altri valori di φ possiamo espandere l’espressione di f :
f (x) = cos(x) cos(φ) − sin(x) sin(φ)
quindi il risultato è un mix tra gli armonici pari e dispari,
modulation con φ che controlla
modulation
frequency frequency descritta in
le relative ampiezze. Ciò è mostrato nella patch E07.evenodd.pd,
Figura 5.14. | |
osc~ osc~
carrier
Modulazione di modulationfase e FM frequency modulation
index | index
carrier
L’esempio E08.phase.mod.pd, illustrato in Figura 5.15, mostra
| come utilizza-
| phasor~
frequency
*~
re Pd per| realizzare*~effettivamente la modulazione di frequenza (parte a) e la
modulazione+~ di fase (parte b). Queste corrispondono
+~ ai diagrammi a blocchi
della Figura 5.8. Per realizzare la modulazione di fase, l’oscillatore portante è
suddiviso osc~ cos~
nelle sue componenti di ricerca di fase e di coseno. Il segnale è della
forma | |
(OUT) x[n] = cos(ωc n + a (OUT)
cos(ωm n))
dove ωc è la frequenza (b)
(a) portante, ωm è la frequenza di modulazione, e a è l’indice
di modulazione – tutto in unità angolari.
Possiamo prevedere lo spettro espandendo il coseno esterno:
Figure 5.15: Pd patches for: (a) frequency modulation; (b) phase modulation.
x[n] = cos(ωc n) cos(a cos(ωm n)) − sin(ωc n) sin(a cos(ωm n)).
Incorporando le espansioni di pagina 135 e semplificando i termini si ha
x[n] = J0 (a) cos(ωc n)+
3π 3π
+J3 (a) cos((ωc + 3ωm )n + 2 ) + J3 (a) cos((ωc − 3ωm )n + 2 ) + ···
Figure 5.14: Using an additive offset to a cosine transfer function to alter the
symmetry between even and odd. With no offset the symmetry is even. For odd
symmetry, a quarter cycle is added to the phase. Smaller offsets give a mixture
of even and odd.
modulation modulation
frequency frequency
| |
osc~ osc~
carrier
modulation frequency modulation
index | index
carrier |
| phasor~
frequency
*~ *~
|
+~ +~
osc~ cos~
| |
(OUT) (OUT)
(a) (b)
Figure
Figura5.15:
5.15: Pd patches
Patches for:per:
in Pd (a) (a)
frequency modulation;
modulazione (b) phase
di frequenza; modulation.
(b) modulazione
di fase.
Cosı̀ le componenti sono centrate intorno alla frequenza portante ωc con bande
laterali che si estendono in entrambe le direzioni, ognuna distanziata ωm dalla
successiva. Le ampiezze sono in funzione dell’indice di modulazione e non di-
pendono dalle frequenze. La Figura 5.16 mostra alcuni spettri di modulazione
di fase a due operatori, misurati usando l’esempio E09.FM.spectrum.pd.
La modulazione di fase può quindi essere vista semplicemente come una
forma di waveshaping modulata ad anello. Quindi possiamo usare le strategie
descritte nel paragrafo 5.2 per generare combinazioni particolari di frequenze.
Ad esempio, se la frequenza portante è la metà della frequenza di modulazione,
si ottiene un suono con armonici dispari esattamente come nell’esempio di octave
divider (Figura 5.10).
La modulazione di frequenza non deve essere limitata a oscillatori portanti o
modulanti puramente sinusoidali. Un strada ben percorsa è quella di effettuare
la modulazione di fase nello spettro della modulazione di fase stessa. Esisto-
no quindi due indici di modulazione (li chiamano a e b) e due frequenze di
modulazione (ωm e ωp ) e la forma d’onda è:
0.5
a=0.15 0
0 2 4 6 8 10 12 14
0.25
a=0.38 0
0 2 4 6 8 10 12 14
0.25
a=0.84 0
0 2 4 6 8 10 12 14
−− partial number −−
Figure
Figura5.16:
5.16: Spectra
Spettri from
dalla phase modulation
modulazione di faseata three different
tre diversi indices.
indici. The
Gli indici
indices are come
sono dati given multipli
as multiples
di 2πofradianti.
2π radians.
Esercizi
1. Un suono ha fondamentale 440. Come potrebbe essere modulato ad anel-
lo per dare un tono a 110 Hertz con solo le parziali dispari? Come si
potrebbero aggiungere le pari se richieste?
4. Due sinusoidi con frequenza 300 e 400 Hertz e ampiezza di picco uno
(e quindi l’ampiezza RMS è circa 0.707) vengono moltiplicate. Qual è
l’ampiezza RMS del prodotto?
5. Supponiamo di voler rendere una FM ancora più complicata modulando
l’oscillatore modulante, come in:
Progettare spettri
Come suggerito all’inizio del capitolo precedente, un modo potente per sinte-
tizzare i suoni musicali è quello di specificare – e quindi realizzare – specifiche
traiettorie di tono (o, più in generale, di frequenze di parziali), insieme a traiet-
torie di inviluppo spettrale [Puc01]. L’inviluppo spettrale viene utilizzato per
determinare l’ampiezza delle singoli parziali, in funzione delle loro frequenze, e
viene pensato come un controllo del timbro del suono (eventualmente variabile
nel tempo).
Un semplice esempio di ciò potrebbe essere quello di imitare una corda piz-
zicata costruendo un suono con parziali armonicamente distanziate in cui l’invi-
luppo spettrale parte molto ricco ma poi decade in maniera esponenziale con le
frequenze più alte che decadono più velocemente di quelle basse, in modo che il
timbro maturi nel tempo. Sono stati proposti modelli di evoluzione spettrale per
vari strumenti acustici [GM77], [RM69]. Un esempio più complicato è la voce
parlata o cantata, in cui le vocali appaiono come inviluppi spettrali, i dittonghi
e molte consonanti appaiono come variazioni temporali negli inviluppi spettrali
e altre consonanti appaiono come rumore spettralmente formato.
Gli inviluppi spettrali possono essere ottenute dall’analisi dei suoni registra-
ti (sviluppata nel Capitolo 9) o da criteri puramente sintetici. Per specificare,
da zero, un inviluppo spettrale, per ogni frequenza possibile, sarebbe noioso e
nella maggior parte dei casi si vorrebbero descrivere in termini di caratteristiche
salienti. Il modo più noto per farlo è quello di specificare la dimensione e la
forma dei picchi dell’inviluppo spettrale, che sono chiamati formanti. La Figura
6.1 mostra un inviluppo spettrale con due formanti. Anche se le forme dei due
picchi nell’inviluppo spettrale sono differenti, possono essere descritti grossola-
namente dando le coordinate di ciascun apice (che danno la frequenza centrale
e l’ampiezza della formante) e la larghezza di banda di ciascuna formante. Una
misura tipica della larghezza di banda potrebbe essere la larghezza del picco a
un livello di 3 decibel al di sotto del suo apice. Si noti che se il picco è sull’asse
f = 0 (o vicino ad esso), facciamo finta che scenda a sinistra allo stesso tasso
con cui (nella realtà) scende a destra.
Supponiamo che vogliamo generare un suono armonico con un determinato
insieme di formanti. Indipendentemente dalla frequenza fondamentale deside-
rata, vogliamo che lo spettro abbia picchi con frequenze centrali, ampiezze e
larghezze di banda prescritte. Tornando agli spettri di modulazione di fase mo-
strati nella Figura 5.16, vediamo che, almeno a piccoli indici di modulazione,
141
148
142 CHAPTER 6. DESIGNER
Capitolo SPECTRA
6. Progettare spettri
(f , a )
1 1
b
1
(f , a )
2 2
b
ampli- 2
tude
frequency
Figure
Figura6.1:
6.1:AUna
spectral envelope
inviluppo showing
spettrale chethe frequencies,
mostra amplitudes,
le frequenze, and band-
le ampiezze e le
widths of two
larghezze formants.
di banda di due formanti.
bandwidths.
il risultato haReturning
un piccotospettrale
the phase modulation
singolo spectra shown
e ben definito. in Figure
Possiamo 5.16,
immagina-
we see that, at
re l’aggiunta di small indicestutti
più picchi, of modulation
che condividonoat least,
una the result fondamentale
frequenza has a single,
well-defined
(modulante)spectral
ma con peak. Wesintonizzate
portanti can imagine adding armonici
a diversi several ofper
these, all shar-
selezionare le
ing a fundamental
varie (modulating)
frequenze centrali desiderate,frequency but di
e con indici with carriers tuned
modulazione sceltitoper
different
dare le
harmonics
larghezze dito banda
select desiderate.
the various Questo
desired fatto
center frequencies,
è stato studiatoand
perwith indices
la prima of
volta
da Chowning
modulation [Cho89]
chosen che the
to give ha organizzato formanti This
desired bandwidths. generate dallaexplored
was first modulazio-by
ne di fase [Cho89]
Chowning per sintetizzare voci che
who arranged cantano.generated
formants In questobycapitolo stabiliremo un
phase modulation to
quadro generale
synthesize singingper la costruzione
voices. di spettri
In this chapter we’ll armonici
establish con formanti
a general desiderate,
framework for
eventualmente
building harmonicvariabili
spectranelwith
tempo.
desired, possibly time-varying, formants.
6.1 Carrier/modulator
6.1 Modello carrier/modulator
model
In precedenza
Earlier we saw abbiamo
how to use visto come
ring usare la to
modulation modulazione
modify thead anello per
spectrum of modifi-
a peri-
care lo spettro di un segnale periodico, collocando picchi spettrali
odic signal, placing spectral peaks in specified locations (see Figure 5.4, in posizioni
Page
specifiche
125). To do(vedere
so we Figura
need to5.4,be Pagina
able to119). Per fare
generate ciò bisogna
periodic signals essere
whose in grado
spectra
di generare
have maximasegnali
at DC periodici
and fall offi cui spettri abbiano
monotonically with massimi
increasing al frequency.
DC e scendanoIf we
monotonicamente al crescere della frequenza. Se possiamo
can make a signal with a formant at frequency zero—and no other fare un segnale con
formants
besides that one—we can use ring modulation to displace the formant to any–
una formante alla frequenza zero – e nessun altra formante oltre a questa
possiamo
desired usare la modulazione
harmonic. ad anello per
If we use waveshaping spostare the
to generate la formante su qualsiasi
initial formant, the
armonico desiderato. Se usiamo il
ring modulation product will be of the formwaveshaping per generare la formante iniziale,
il prodotto della modulazione ad anello sarà della forma
x[n] = cos(ωc n)f (a cos(ωm n))
x[n] = cos(ωc n)f (a cos(ωm n))
where
dove ωωcc (la
(thefrequenza
carrier frequency)
portante) is
è set to the formant
impostata center frequency
sulla frequenza (a ·
and ffor-
centrale della
cos(ω
mante n)) is a signal with fundamental frequency determined
m e f (a cos(ωm n)) è un segnale con frequenza fondamentale m by ω , produced
determinata
da ωm , prodotto usando una funzione di waveshaping f e un indice a. Que-
sto secondo termine è il segnale che vogliamo dare a una formante sul DC con
una larghezza di banda controllabile. Un diagramma a blocchi per sintetizzare
questo segnale è mostrato in Figura 6.2.
6.1. Modello carrier/modulator 143
modulation
frequency
-1
index of
modulation
1
carrier
frequency
-1 1
-1
OUT
Figura 6.2:
Figure 6.2: Waveshaping modulato
Ring modulated ad anello per for
waveshaping la generazione di formanti.
formant generation
using a waveshaping function f and index a. This second term is the signal we
wish to give a formant at DC with a controllable bandwidth. A block diagram
for synthesizing this signal is shown in Figure 6.2.
Much earlier in Section 2.4 we introduced the technique of timbre stretching,
as part of the discussion of wavetable synthesis. This technique, which is capable
of generating complex, variable timbres, can be fit into the same framework. The
enveloped wavetable output for one cycle is:
frequency
-1
stretch index
1 1
-1
-M M -N N
OUT
Molto prima, nel paragrafo 2.4, abbiamo introdotto la tecnica del timbre
stretching, come parte della discussione sulla sintesi wavetable. Questa tecnica,
capace di generare timbri variabili complessi, può essere inserita nello stesso
schema. L’output della wavetable inviluppata, per un ciclo, è:
(a)
(b)
(c)
Figure
Figura6.4:
6.4: Pulse width modulation
Modulazione using
di larghezza the von Hann
dell’impulso usandowindow function:
la funzione (a)
finestra
the function
di Hann: (a)Wla(φ)funzione
= (1 + Wcos(φ))/2;
(φ) = (1(b) the function
+ cos(φ))/2; (b)aslaafunzione
waveform, repeated
come forma
atd’onda,
a dutyripetuta
cycle ofcon100% (modulation
duty index(indice
cycle del 100% a = 1);di(c) the waveform
modulazione a = at
1);a(c)
50% la
forma
duty
154 d’onda
cycle (a =con2). duty cycle del 50% (a = 2).
CHAPTER 6. DESIGNER SPECTRA
(a)
(b)
Figure 6.5: Audio signals resulting from multiplying a cosine (partial number
Figura 6.5: Segnali audio risultanti dalla moltiplicazione di un coseno (numero di
6) by pulse trains: (a) windowing function from the wavetable formulation; (b)
parziale 6) per un treno di impulsi: (a) funzione di windowing dalla formulazione
waveshaping output using the Cauchy lookup function.
wavetable; (b) output del waveshaping utilizzando la funzione di Cauchy.
cos(6ωn)Ma (ωn)
148 Capitolo 6. Progettare spettri
Hann
100
80
60
40
20
Gaussian
100
80
60
40
20
Cauchy
100
80
60
40
amplitude
20
(dB)
0 2 4 6 ...
partial number
Figura 6.6: Spettri di tre treni di impulsi modulati ad anello: (a) la funzione
Figure
di 6.6:di Spectra
finestra of three
Hann, con ring-modulated
duty cycle pulse trains: (a)
del 50% (corrispondente theindice
ad un von Hann
di 2);
window function, 50% duty cycle (corresponding to an index of 2); (b) a wave-
(b) un treno di impulsi waveshaping che utilizza una funzione di trasferimento
shaping pulse train using a Gaussian transfer function; (c) the same, with a
gaussiana; (c) lo stesso, ma con una funzione di trasferimento di Cauchy. Le
Cauchy transfer function. Amplitudes are in decibels.
ampiezze sono in decibel.
150 Capitolo 6. Progettare spettri
6.3. MOVABLE RING MODULATION 157
Figure 6.7:
Figura 6.7: Waveform for a wavetable-based
Forma d’onda per un segnale carrier signal
portante tunedsutowavetable,
basato 1.5 times
the fundamental.
sintonizzato a 1.5 Two
volte periods are shown.Sono mostrati due periodi.
la fondamentale.
che possiamo utilizzare qualsiasi numero di queste formanti per costruire uno
spettro più complesso e le ampiezze delle parziali si combinano tramite somma
(i sidelobes non si comportano cosı̀ bene: sono alternativamente di segno con-
trario e producono schemi di cancellazione, ma spesso possiamo semplicemente
rimuoverli come un piccolo e incontrollabile segnale residuo).
Questo metodo porta ad una generalizzazione interessante, cioè a prendere
una sequenza di wavetables registrate, allineare tutte le fasi delle loro compo-
nenti a quelle dei coseni e utilizzarle al posto della funzione coseno come segnale
portante. L’allineamento delle fasi è necessario per consentire una dissolvenza
incrociata coerente tra i samples in modo che l’inviluppo spettrale possa cam-
biare senza problemi. Se, ad esempio, utilizziamo frammenti successivi di un
sample vocale come input, otteniamo un vocoder straordinariamente efficace; si
veda il paragrafo 9.6.
Un’altra tecnica per produrre segnali portanti, che possano essere mossi con-
tinuamente su e giù in frequenza pur mantenendo una frequenza fondamentale,
è semplicemente quella di usare una dissolvenza incrociata tra gli armonici. Il
segnale portante è quindi:
c(φ) = c(ωn) = p cos(kωn) + q cos((k + 1)ωn)
dove p + q = 1 e k è un intero, tutti e tre scelti in modo che
(k + q) · ω = ωc
in modo che il centro spettrale della massa dei due coseni sia posto a ωc (si noti
che impostiamo le ampiezze dei due coseni in modo che la loro somma sia uno
invece di impostare la potenza totale a uno; facciamo questo perché il modu-
latore agirà su essi coerentemente in fase). Per fare ciò, basta semplicemente
scegliere k e q come la parte intera e la parte frazionaria, rispettivamente, della
frequenza centrale quoziente ωc /ω.
Il modo più semplice di realizzare un’interfaccia di controllo per questa tec-
nica di sintesi sarebbe quello di utilizzare rampe per aggiornare ω e ωc e quindi
calcolare q e k come segnali audio da ω e ωc , uniformemente variabili nelle ram-
pe. Stranamente, nonostante il fatto che k, p e q siano funzioni discontinue
di ωc /ω, la portante c(φ) risulta variare in modo continuo con ωc /ω e quindi
se la frequenza centrale desiderata ωc passa, tramite una rampa, da un valore
a un altro valore, il risultato è un cambiamento continuo nella frequenza cen-
trale. Tuttavia, è necessario un maggior lavoro se sono necessari cambiamenti
discontinui nella frequenza centrale. Questa non è una cosa irragionevole da
desiderare, essendo analoga a cambiare la frequenza di un oscillatore in modo
discontinuo.
C’è un ottimo modo per fare questo. Il trucco per l’aggiornamento di k
e q è quello di osservare che c(φ) = 1 ogni volta che φ è un multiplo di 2π,
indipendentemente dalla scelta di k, p e q finché p + q = 1. Quindi possiamo
fare cambiamenti discontinui in k, p e q una volta per periodo (proprio quando
la fase è un multiplo di 2π), senza creare discontinuità nel segnale portante.
Nel caso specifico della FM, se vogliamo, possiamo ora tornare indietro e
modificare la formulazione originale a:
p cos(nω2 t + r cos(ω1 t))+
Ciò consente di aggiungere glissandi (udibili come dittonghi) alla tecnica origi-
nale di sintesi vocale basata sulla modulazione di fase di Chowning.
phase generator
fundamental
frequency
phase
trigger
S/H
modulator carrier
k k+1
WRAP WRAP
0 1
0 1 0 1
p q
-10 10
OUT
Figura 6.8:6.8:
Figure Diagramma a blocchi del
The PAF generator as ageneratore PAF.
block diagram.
154 Capitolo 6. Progettare spettri
6.4. PHASE-ALIGNED FORMANT (PAF) GENERATOR 161
center
frequency
bandwidth
fundamental
frequency fundamental
frequency
phase
phase
trigger
trigger
S/H
S/H
WRAP
b
the Come
center descritto
partial’s amplitude.
nel paragrafo However, if using
precedente, the PAF k,
le quantità to generate formants
p, e q dovrebbero
with
cambiare solo nei punti di wraparound della fase, cioè a periodi di 2π/ω. +Poiché
specified peak amplitudes, the output should be multiplied by 1 b (or
even, if necessary, a better approximation of the correction
il calcolo di k, p e q dipende dal valore del parametro ω, ne consegue che ω factor, whose exact
value
stessadepends
deve essereon the waveshaping
aggiornata function).
solo quando This
la fase amplitude
è un multiplocorrection should
di 2π; altrimenti
be ramped, not sampled-and-held.
una modifica di ω potrebbe inviare la frequenza centrale (k + q)ω ad un valore
Since
errato perthe
unaexpansion
frazione of the waveshaping
(comunque (modulator)
molto udibile) signal consists
di un periodo. of alltutti
In effetti, co-
sine termsdei
i calcoli (i.e., since they
parametri all have
devono initial
essere phase zero),con
sincronizzati as dola the
fasetwo components
dell’oscillatore
of the carrier, it follows from the cosine product formula that the components
originale.
of theUna result
voltaarecheallsicosines as well. This
ha il controllo della means that any number
fase dell’oscillatore, of PAF gen-
l’aggiornamento
erators,
della suaiffrequenza
they are made to sharedithe
è un esempio same oscillator
feedback, for phase
che in generale generation,
significa will
ri-utilizzare
all be in phase
l’output and combining
di qualsiasi processo them come gives
uno deithesuoi
suminputs.
of the individual
Quando sispectra.
elaborano So
we can make
segnali audioadigitali
multiple-formant
a una frequenzaversion di as campionamento
shown in Figure fissa 6.10. (come stiamo
Figure non
facendo), 6.12 èshows a possibleavere
mai possibile output of a pair
l’output of formants
corrente generated
del processo come thisinput,
way;
the firstnel
poiché formant
momento is centered
in cui ne halfway
avremmobetweenbisogno,partials 3 and 4,ancora
non l’abbiamo and the second
calcolato.
at partial che
Il meglio 12, possiamo
with lowersperareamplitude and bandwidth.
è utilizzare il precedente Thecampione
Cauchy waveshaping
in output –
function
in effetti,was used, whichun
aggiungendo makes linearly
campione di sloped
ritardo. spectra
Negli(viewed
ambienti in con
dB).strutture
The two
superpose
a blocchi (comeadditively,
Max,soPdthat the spectral
e Csound) envelopediventa
la situazione curves piùsmoothly from one
complicata, ma
formant
aspettiamo to the other. The
a discuterne finolower formant capitolo
al prossimo also adds (e to its own reflection
semplicemente about
eliminiamo
the vertical axis,
il problema negli so that it
esempi appears
alla fine di slightly
questo).curved upward there.
L’ampiezza
The del picco
PAF generator cancentrale
be alterednelloif desired
spettro to delmake
generatore
inharmonicPAF spectra
è di circaby
1/(1 +the
sliding b); partials
in altreupward
parole, orè downward
vicino all’unità quando To
in frequency. l’indice
do this,b èadd
piùa piccolo
second
di uno, etodiminuisce
oscillator the phase of inversamente
both carrieral crescere
cosines, butdinot b. toPer
the valori
phase di b minori
of the modula- di
circa 10, l’intensità dell’output non varia notevolmente, poiché l’introduzione di
altre parziali, anche a basse ampiezze, compensa la diminuzione dell’ampiezza
della parziale centrale. Tuttavia, se si utilizza il PAF per generare formanti
162 CHAPTER 6. DESIGNER SPECTRA
fundamental
frequency
phase
generation
k1, k2,
b1 p1, q1 b2 p2, q2
OUT
Figure 6.10:
Figura 6.10: Block diagram
Diagramma for making
a blocchi a spectrumuno
per realizzare with two formants
spettro con due using the
formanti
PAF generator.
utilizzando il generatore PAF.
.
100
80
ampli-
tude 60
(dB)
40
20
0 2 4 6 ...
partial number
Figura 6.11:
Figure Spettro
6.11: ottenuto
Spectrum fromdaaun generatore PAF
two-formant PAF agenerator.
due formanti..
0 <-frequency
phasor~
-~ 0.5 0-centered sawtooth
0 <-index
/ 10 ...in tenths
pack 0 50
line~ smooth it
+~ 1 add 1
Figura 6.13:
Figure 6.12: Example
L’esempio della
patch patch F01.pulse.pd,
F01.pulse.pd, che sintetizza
which synthesizes a pulseun treno
train di
using
impulsi utilizzando
stretched wavetable la stretched wavetable lookup.
lookup.
166 CHAPTER 6. DESIGNER SPECTRA
phase
(a)
0.5
-0.5
clipped
(b) 0.5
-0.5
output
1
(c)
Figure
Figura 6.14:
6.13: Intermediate
Segnali audioaudio signals
intermedi da from Figure
Figura 6.12: 6.13:
(a) il (a) the result
risultato of
di mol-
multiplying
tiplicare
6.5. the phasor by the “index”; (b) the same, clipped to lie between -0.5
il phasor per un “indice”; (b) lo stesso, ristretto fra −0.5 e 0,5; 167
EXAMPLES (c)
and 0.5; (c) the output.
l’output.
0 <-- bandwidth
pd pulse-train pulse train
generator from before
*~
|
(OUT)
the carrier signal is a broken sinusoid. Since its phase is the fundamental phase
times the center frequency quotient, the sample-to-sample phase increment is
the same as for a sinusoid at the center frequency. However, when the phase
wraps around, the carrier phase jumps to a different place in the cycle, as was
illustrated in Figure 6.7. Although the bandwidth quotient ωb /ω must be at
least one, the center frequency quotient ωc /ω may be as low as zero if desired.
La fase iniziale viene regolata per muoversi tra −0.5 e 0.5 e poi scalata con un
moltiplicatore il cui valore è almeno 1, determinando il segnale di Figura 6.13
(parte a); questo corrisponde all’output dell’oggetto ∗ ∼, il quinto dal basso
nella patch mostrata. Il grafico nella parte (b) mostra il risultato di ritagliare
l’onda a dente di sega nell’intervallo tra −0.5 e 0.5, usando l’oggetto clip∼.
Se il moltiplicatore riscalante era al suo minimo (uno), il range dell’onda a
dente di sega sarebbe comunque solo da −0.5 a 0.5 ed il wrapping non avrebbe
alcun effetto. Per qualsiasi valore del moltiplicatore riscalante maggiore di uno,
l’output del clipping starebbe sul valore −0.5, quindi sale a 0.5, infine sta su 0.5.
Più alto è il moltiplicatore, più rapidamente la forma d’onda sale e più tempo
spende negli estremi in basso e in alto.
Successivamente l’oggetto cos∼ converte questa forma d’onda in un impulso.
Gli inputs pari a −0.5 e 0.5 vanno entrambi a −1 (sono separati da un ciclo); al
punto centrale della forma d’onda, l’input è 0 e l’output è quindi 1. L’output,
quindi, si trova a −1, traccia un ciclo completo della funzione coseno, poi torna
indietro e si ferma a −1. La percentuale di tempo che la forma d’onda spende
percorrendo la funzione coseno è divisa per il moltiplicatore; quindi è il 100%
per un moltiplicatore di 1, 50% per 2 e cosı̀ via. Infine, l’output degli impulsi
viene regolato per avere un range tra 0 e 1; questo è illustrato nella parte (c)
della figura.
center
(frequency) frequency
|
(as multiple of
phasor~ 100
fundamental)
-~ 0.5 |
*~
bandwidth
(as multiple of magnified
fundamental) phase signal
|
*~
clip~ -0.5 0.5
cos~ raised
+~ 1 cosine
pulse
*~ 0.5
cos~
*~ carrier
|
(OUT)
Figure
Figura 6.16:
6.15: Using stretched
Utilizzo di unawavetable
sintesi disynthesis
stretchedtowavetable
make a formant with mov-
per formare una
able center frequency.
formante con frequenza centrale mobile.
center frequency
output dell’oggetto line∼. Questo èto
(relative separato nella sua parte frazionaria (uti-
fundamental)
fundamental
lizzando l’oggetto wrap∼)| e la sua parte intera (sottraendo la parte frazionaria
frequency Questi due
dall’originale). line~
valori sono etichettati con q e k per uniformarsi alla
|
trattazione del paragrafo 6.3.
phasor~ wrap~ the fractional part "q"
La fase – un onda a dente di sega alla frequenza fondamentale – viene molti-
plicata sia per k che per k-~+ 1 (quest’ultimo
subtract to get the l’onda
aggiungendo integer part
a dente "k"
di sega
originaria al precedente) e vengono presi i coseni di entrambi; essi sono quindi a
k e k + 1 volte la *~
frequenza+~fondamentale
multiply e nonphase
hannobydiscontinuità
k and k+1nei punti di
wraparound dellacos~ fase. I cos~
seguentisynthesize
oggetti della patch calcolano la"c1"
two partials somma pesata
and "c2"
pc1 + qc2 , dove c1 , c2 sono le due sinusoidi e p = 1 − q, tramite un’espressione
equivalente, c1 +q(c2 −c1-~ ). Questo c2 ci-dàc1
il segnale portante, a frequenza mobile,
richiesto.
L’esempio F09.declickit.pd *~ (non q *mostrato
(c2 - c1) qui) mostra come, aggiungendo
un oggetto samphold∼ dopo +~ q * c2 + (1-q) *controlla
l’oggetto line∼ che la frequenza centra-
c1
le, è possibile evitare discontinuità
| nel segnale di uscita anche se la frequenza
centrale desiderata cambia
(OUT)in modo discontinuo. Nell’esempio la frequenza cen-
trale quoziente alterna tra i valori 4 e 13.5. Con tempi di rampa inferiori a circa
20 msec ci sono artefatti udibili quando si usa solo l’oggetto line∼ che scompa-
iono quando
Figure viene aggiunto
6.17: Cross-fading l’oggetto
between to make(uno
samphold∼
sinusoids svantaggio
movable center di applicare
frequencies.
il sample-and-hold alla frequenza quoziente è che, per frequenze fondamentali
molto basse, le modifiche possono essere percepite come passi discreti. Quindi,
in situazioni in cui la frequenza fondamentale è bassa e la frequenza centrale
non deve cambiare molto rapidamente, può essere meglio ignorare la parte di
+~ 1 cosine
pulse
*~ 0.5
cos~
*~ carrier
|
(OUT)
6.5. Esempi
Figure 6.16: Using stretched wavetable synthesis to make a formant with mov- 161
able center frequency.
center frequency
(relative to fundamental)
fundamental |
frequency line~
|
phasor~ wrap~ the fractional part "q"
-~ subtract to get the integer part "k"
-~ c2 - c1
*~ q * (c2 - c1)
+~ q * c2 + (1-q) * c1
|
(OUT)
Figure
Figura6.17:
6.16:Cross-fading
Dissolvenzabetween sinusoids
incrociata to make movable
tra sinusoidi center
per creare frequencies.
frequenze centrali
mobili.
sample-and-hold).
I due esempi successivi mostrano l’utilizzo di una portante fatta con oscilla-
tori in dissolvenza incrociata come parte della tecnica classica di modulazione
di fase a due operatori. Lo stesso oscillatore modulante viene aggiunto separa-
tamente alle fasi dei due coseni. Gli spettri risultanti possono essere fatti per
muoversi su e giù in frequenza, ma a causa delle complicate relazioni di fase
tra i picchi vicini nello spettro della modulazione di fase, indipendentemente da
quanto si allineino tali spettri non si può mai evitare di ottenere le cancellazioni
di fase dove si sovrappongono.
Il generatore PAF
L’esempio F12.paf.pd (Figura 6.17) è una realizzazione del generatore PAF de-
scritto nel paragrafo 6.4. Gli ingressi di controllo specificano la frequenza fonda-
mentale, la frequenza centrale e la larghezza di banda, tutte in unità “MIDI”. I
primi passaggi nella realizzazione sono quelli per dividere la frequenza centrale
per la fondamentale (per ottenere la frequenza centrale quoziente) e la larghezza
di banda per la fondamentale per ottenere l’indice di modulazione per il wave-
shaper. La frequenza centrale quoziente subisce un processo di sample-and-hold
in modo che sia aggiornata solo al periodo della fondamentale.
Un oscillatore (l’oggetto phasor∼) è attivo alla frequenza fondamentale.
Questo viene utilizzato sia per controllare un oggetto samphold∼ che sincronizza
gli aggiornamenti della frequenza centrale quoziente (etichettata come “C.F.
relative to fundamental” nella figura) e per calcolare le fasi per entrambi gli
oggetti cos∼ che operano come mostrato in precedenza nella Figura 6.16.
La parte di waveshaping della patch utilizza un mezzo periodo di sinusoide
come funzione di ricerca (per compensare il raddoppio di frequenza a causa
170 CHAPTER 6. DESIGNER SPECTRA
center
frequency
0
fundamental
(MIDI units) mtof
0 pack 0 50 bandwidth
mtof line~ 0
expr 1/$f1 mtof
*~ pack 0 50
phasor~ C.F. relative line~
to fundamental
divide by
*~ fundamental
*~ 0.5
samphold~
-~ 0.25
-~ wrap~ cos~ *~ 25
*~ +~ *~ range for table
cos~ cos~
offset to middle
+~ 100
-~ of table
tabread4~ bell-curve
+~ *~
waveshaper
*~ ring mod
|
(OUT)
Figura 6.17:
Figure Algoritmo
6.18: di sintesi performant
The phase-aligned la formante
(PAF)allineata in fase
synthesis (PAF).
algorithm.
della simmetria della funzione di ricerca). Per ottenere un mezzo ciclo della
funzione seno moltiplichiamo la fase per 0.5 e sottraiamo 0.25, in modo che la
fase regolata vada da −0.25 a +0.25, una volta per periodo. Questo esegue la
scansione della metà positiva del ciclo definito dall’oggetto cos∼.
L’ampiezza della mezza sinusoide viene quindi regolata da un indice di mo-
dulazione (che è proprio la larghezza di banda quoziente ωb /ω). La tabella
(“bell-curve”) contiene una curva Gaussiana non-normalizzata campionata da
−4 a 4 su 200 punti (25 punti per unità), quindi il centro della tabella, al
punto 100, corrisponde al picco centrale della curva a campana . Al di fuori
dell’intervallo da −4 a 4 la curva Gaussian è trascurabilmente piccola.
La Figura 6.18 mostra come viene preparata la wavetable Gaussiana. È
necessario un nuovo oggetto di controllo:
untill : quando l’ingresso “start” a sinistra riceve un bang, emette bang se-
quenziali (senza intervalli di tempo tra essi) in modo iterativo, finché l’entrata
“stop” a destra non riceve un bang. Il messaggio “bang” di arresto deve prove-
6.5. EXAMPLES
6.5. Esempi 163 171
t b b bell-curve
0
until
f + 1
sel 199 t f f
expr ($f1-100)/25
expr exp(-$f1*$f1)
tabwrite bell-curve
getto phasor∼ con i suoi punti di wraparound, quindi dovremmo fare altret-
tanto per il quoziente larghezza di banda/fondamentale sul lato destro della
patch. Nello scenario corrente, tuttavia, non c’è alcun problema ad aggiornare
continuamente tale valore.
Una soluzione pratica a questo problema di aggiornamento potrebbe essere
semplicemente la riscrittura dell’intera patch in C come classe Pd; questo si tra-
duce anche nell’utilizzo di molto meno tempo della CPU rispetto alla patch in
figura, e rappresenta la soluzione più pratica in generale – finché non si desidera
sperimentare la creazione di abbellimenti o altre modifiche all’algoritmo. Ta-
li abbellimenti potrebbero includere: aggiungere uno spostamento inarmonico
verso l’alto o verso il basso nelle parziali; permettere di passare ad aggiorna-
menti della frequenza centrale in modo continuo o sample-and-hold; aggiungere
controlli separati di guadagno per parziali pari e dispari; introdurre grani mo-
dulando irregolarmente la fase; permettere miscele di due o più funzioni di wa-
veshaping; o fare attacchi percussivi più nitidi allineando la fase dell’oscillatore
con la temporizzazione di un generatore di inviluppo di ampiezza.
Un dettaglio finale sull’ampiezza è necessario: poiché l’ampiezza della par-
ziale più forte diminuisce approssimativamente come 1/(1 + b) dove b è l’indice
di modulazione, è auspicabile a volte (ma non sempre) correggere l’ampiezza
in output moltiplicando per 1 + b. Questa è solo un’opzione se b è aggiornato
senza salti (come in questo esempio), ma non quando viene aggiornato tramite
sample-and-hold. Una situazione in cui ciò è appropriato è quando si vuole si-
mulare corde pizzicate (impostando la frequenza centrale come la fondamentale,
a partire da un indice di modulazione alto e abbassandolo esponenzialmente);
sarebbe opportuno ascoltare la caduta, e non un aumento, della fondamentale
in ampiezza durante il decadimento della corda.
Stretched wavetables
Invece di usare la tecnica del waveshaping, è possibile anche creare formanti
utilizzando la tecnica delle stretched wavetables, come dimostrato nell’esempio
F14.wave.packet.pd (non mostrato qui). La tecnica è sostanzialmente quella
vista nell’esempio B10.sampler.overlap.pd (descritta nel paragrafo 2.6), con una
ricerca su coseno invece di quella più generale su wavetable, ma con l’aggiunta di
un controllo per impostare il duty cycle degli inviluppi di ampiezza. Le unità di
misura sono regolate per essere compatibili con quelle dell’esempio precedente.
Esercizi
1. Un treno a impulsi è costituito da finestre di Hann (coseni), da estremo a
estremo, senza alcun gap tra essi. Qual è lo spettro risultante?
2. Quali devono essere i valori di k e q (nella terminologia di Figura 6.8) per
sintetizzare una formante alla frequenza centrale di 2000 Hertz e frequenza
fondamentale di 300 Hertz?
3. Come deve essere modificato il diagramma a blocchi della Figura 6.8 per
produrre solo armonici dispari?
Capitolo 7
Spostamenti temporali e
ritardi
165
166 Capitolo 7. Spostamenti temporali e ritardi
Z = a + ib
√
dove a e b sono numeri reali e i = −1 (in questo libro usiamo le lettere
maiuscole romane Z per indicare i numeri complessi. I numeri reali sono indicati
con lettere minuscole romane o greche, ad eccezione di indici interi, normalmente
scritti come M o N ). Poiché un numero complesso ha due componenti reali,
usiamo un piano cartesiano (al posto di una linea numerica) per illustrarlo, come
mostrato in Figura 7.1. Le quantità a e b sono chiamate rispettivamente la parte
reale e la parte immaginaria di Z, scritte come:
a = re(Z),
b = im(Z).
a = r cos(θ),
b = r sin(θ).
Un numero complesso può essere scritto in termini delle sue parti reale e im-
maginaria, a e b, come Z = a + ib (questa prende il nome di forma rettangolare)
oppure, in alternativa, in forma polare, in termini di r e θ:
Z = r · [cos(θ) + i sin(θ)].
7.1. Numeri complessi 167
176 CHAPTER 7. TIME SHIFTS AND DELAYS
b
Z=a+bi
|Z|
arg(Z)
a
Figure
Figura7.1:
7.1: A
Unnumber,
numero,Z,Z,innel
thepiano
complex plane. Gli
complesso. Theassi
axessono
are per
for la
theparte
real reale
part
aa and the imaginary part b.
e la parte immaginaria b.
Z1 Z2 = r1 r2 · [cos(θ Z 1= a + bi
) cos(θ 2 ) − sin(θ1 ) sin(θ2 )+
√
where a and b are real numbers
+i(sin(θ and2 )i+=cos(θ
1 ) cos(θ −1. (In2 ))].
1 ) sin(θ this book we’ll use the
upper case Roman letters such as Z to denote complex numbers. Real numbers
appear as lower
Qui il segno casedavanti
meno Romanaor Greek
sin(θ letters, except for integer bounds, usually
1 ) sin(θ2 ) deriva dalla moltiplicazione di i per
written as M
se stesso, cheorvale
N .)−1.
Since a complex number
Nell’espressione soprahas two realpossiamo
descritta components, we use
utilizzare le
aformule
Cartesian plane (in
di somma deiplace of ae number
coseni dei seni line) to graph
e quindi it, as shown in Figure 7.1.
semplificare:
The quantities a and b are called the real and imaginary parts of Z, written as:
Z1 Z2 = r1 r2 · [cos(θ1 + θ2 ) + i sin(θ1 + θ2 )].
a = re(Z)
Risulta che il prodotto Z1 Z2 ha modulo r1 r2 e argomento θ1 + θ2 .
b = im(Z)
Possiamo usare questa proprietà dei numeri complessi per sommare e sot-
trarre angoli (moltiplicando e dividendo numeri complessi con gli argomenti
appropriati) e quindi prendere il coseno e il seno del risultato estraendo le parti
reale e immaginaria.
168 Capitolo 7. Spostamenti temporali e ritardi
178 CHAPTER 7. TIME SHIFTS AND DELAYS
A
AZ
Z2
AZ 2
Z
1
Z −1
Figure 7.2: The powers of a complex number Z with |Z| = 1, and the same
Figura 7.2:
sequence Le potenze
multiplied by a di un numero
constant A. complesso Z con |Z| = 1, e la stessa
sequenza moltiplicata per una costante A.
7.1.1
7.1.1 Complex
Sinusoidi sinusoids
complesse
Recall the formula
Richiamiamo for a (real-valued)
la formula sinusoid
di una sinusoide fromreali)
(a valori Page di
1: pagina 1:
x[n]
x[n] =
=aa cos(ωn
cos(ωn +
+ φ)
φ).
Questa
This is aè sequence
una sequenza di coseni
of cosines di angoli
of angles (chiamati
(called phases)fasi) che increase
which aumentano aritme-
arithmeti-
ticamente
cally with the con sample
il sample number
number n.n.The
I coseni sono
cosines aretutti moltiplicati
all adjusted per factor
by the il fattore
a.
a. Possiamo
We ora riscrivere
can now rewrite this asquesta formula
the real part ofcome la parte
a much reale
simpler and dieasier
una sequenza
to manip-di
numeri
ulate complessi
sequence molto piùnumbers,
of complex semplici by
e più manipolabili,
using utilizzando
the properties of theirlearguments
proprietà
dei loro
and argomenti e dei loro moduli.
magnitudes.
Supponiamo
Suppose thatche un numero
a complex complesso
number Z abbia modulo
Z happens to have unitario
magnitude(cioèone
modulo
and
1) e argomento
argument ω, initmodo
ω, so that can bechewritten
possa essere
as: scritto come
Z=
Z = cos(ω)
cos(ω) +
+ ii sin(ω)
sin(ω).
Quindi per ogni numero intero n, il numero Z n deve avere esso stesso modulo 1
Then for any integer n, the number Z n must have magnitude one as well (be-
(per la moltiplicazione di moduli) e argomento nω (per la somma di argomenti).
cause magnitudes multiply) and argument nω (because arguments add). So,
Quindi
Z nn =
Z = cos(nω)
cos(nω) +
+ ii sin(nω)
sin(nω).
Questo vale anche per i valori negativi di n, per esempio
This is also true for negative values of n, so for example,
1
= Z −1 = cos(ω) − i sin(ω).
1
Z
= Z −1 = cos(ω) − i sin(ω)
Z
La Figura 7.2 mostra graficamente come le potenze di Z si muovano intorno al
cerchio unitario (cioè di raggio 1), che
Figure 7.2 shows graphically how the powersè l’insieme
of Z di tuttiaround
wrap i numeri
thecomplessi di
unit circle,
modulo uno. Essi formano una sequenza geometrica:
which is the set of all complex numbers of magnitude one. They form a geometric
sequence:
. . . , Z 0, Z 1, Z 2, . . .
. . . , Z 0, Z 1, Z 2, . . .
e prendendo la parte reale di ogni termine otteniamo una sinusoide a valori reali
reale con fase iniziale pari a zero e ampiezza uno:
Inoltre, supponiamo di moltiplicare gli elementi della sequenza per una qualche
costante (complessa) A con modulo a e argomento φ. Questo dà
. . . , A, AZ, AZ 2 , . . .
X[n] = AZ n , Y [n] = BZ n
Y [n] = X[n − d]
IN
OUT
Figure 7.3: A delay network. Here we add the incoming signal to a delayed copy
ofFigura
itself. 7.3: Una rete di ritardo. Qui sommiamo il segnale in ingresso con una
copia ritardata di se stesso.
We’ll now look at the delay network of Figure 7.3 in each of the two ways in
turn.
Figure 7.4 shows the network’s behavior in the time domain. We invent some
sort of suitable test function as input (it’s a rectangular pulse eight samples wide
in182
this example) and graph the CHAPTER 7. TIME
input and output SHIFTS AND
as functions of theDELAYS
sample
number n. This particular delay network adds the input to a delayed copy of
itself.
A frequently
input
used test function is an impulse, which is a pulse lasting only
one sample. The utility of this is that, if we know the output of the network for
an impulse, we can find the output for any other digital audio signal—because
any signal x[n] is a sum of impulses, one of height x[0], the next one occurring
n
one sample later and having height x[1], and so on. Later, when the networks
get more complicated, we will move to using impulses as input signals to show
their time-domain behavior.
Onoutput
the other hand, we can analyze the same network in the frequency domain
by considering a (complex-valued) test signal,
X[n] = Z n
HZ N
Figura 7.4:
Figure 7.4: The
La visualizzazione
time domain viewnel dominio del tempo
of the delay networkdella
of rete di ritardo
Figure di
7.3. The
for some7.3.
Figura complex number H (which we wante to find). So we write the output
output is theL’output è lainput
sum of the sommaanddell’input della
its time shifted sua
copy.copia traslata.
directly as the sum of the input and its delayed copy:
Z n + Z −d Z n = (1 + Z −d )Z n
and find by inspection that:
H = 1 + Z −d
We can understand the frequency-domain behavior of this delay network by
studying how the complex number H varies as a function of the angluar fre-
quency ω. We are especially interested in its argument and magnitude—which
tell us the relative phase and amplitude of the sinusoid that comes out. We will
work this example out in detail to show how the arithmetic of complex numbers
can predict what happens when sinusoids are combined additively.
Figure 7.5 shows the result, in the complex plane, when the quantities 1 and
Z −d are combined additively. To add complex numbers we add their real and
complex parts separately. So the complex number 1 (real part 1, imaginary part
172 Capitolo 7. Spostamenti temporali e ritardi
La Figura 7.4 mostra il comportamento della rete nel dominio del tempo.
Abbiamo inventato una sorta di funzione appropriata di test come input (in
questo esempio è un impulso rettangolare largo otto campioni) e disegniamo
il grafico dell’input e dell’output come funzioni del sample number n. Questa
particolare rete di ritardo somma l’input con una copia ritardata di se stesso.
Una funzione di test utilizzata di frequente è l’impulso, che è una pulsazione
della durata di solo un campione. L’utilità di ciò è che, se conosciamo l’output
della rete per un impulso, possiamo trovare l’output per qualsiasi altro segnale
audio digitale – perché qualsiasi segnale x[n] è una somma di impulsi, uno
di altezza x[0], il successivo che si verifica un campione più tardi e che ha
l’altezza x[1], e cosı̀ via. Più tardi, quando le reti diventeranno più complicate,
passeremo ad utilizzare gli impulsi come segnali di input per mostrare il loro
comportamento nel dominio del tempo.
D’altra parte, possiamo analizzare la stessa rete nel dominio della frequenza
considerando un segnale di prova (a valori complessi)
X[n] = Z n
HZ n
Z n + Z −d Z n = (1 + Z −d )Z n
H = 1 + Z −d .
d/2
Z
d/2
HZ
real 1
Z -d/2
H
imaginary -d
Z
gain
2
2 4
d d
Figure 7.6: Gain of the delay network of Figure 7.3, shown as a function of
Figura 7.6: Guadagno della rete di ritardo di Figura 7.3, mostrato in funzione
angular frequency ω.
della frequenza angolare ω.
take ω = π/d so that the delay is half the period, then the delay output is out
of phase and cancels the input exactly.
This particular delay network has an interesting application: if we have a
L’output
periodic della rete
(or nearly è una incoming
periodic) somma disignal,due sinusoidi di uguale ampiezza
whose fundamental frequency e le
is
ω radians per sample, we can tune the comb filter so that the peaks in con
cui fasi differiscono di ωd. La risposta in frequenza risultante è in accordo the
il buon
gain aresenso:
aligned se at la frequenza angolare
even harmonics andω theè impostata
odd onesinfall modo where che the
un numero
gain is
zero. To do this we choose d = π/ω, i.e., set the delay time to exactly di
intero di periodi stia esattamente in d campioni, cioè se ω è un multiplo one2π/d,
half
l’output
period of del
theritardo
incoming è esattamente
signal. In thisuguale
way we al segnale
get a new originale,
signal whose e quindi i due si
harmonics
combinano
are 2ω, 4ω, 6ω, per .dare
. ., and un output
so it nowcon has
ampiezza
a newdue volte quellafrequency
fundamental originale.atD’altra
twice
the original one. Except for a factor of two, the amplitudes of thesia
parte, se per esempio noi prendiamo ω = π/d in modo che il ritardo la metà
remaining
del periodo,still
harmonics allora
follow l’output del ritardo
the spectral è fuoriof
envelope fase
thee annulla
original esattamente
sound. So we l’input.
have
a tool now for raising the pitch of an incoming sound by an octave without
Questaitsparticolare
changing spectral envelope.rete di ritardo ha un’interessante
This octave doubler is the applicazione:
reverse of the se octave
abbia-
mo un segnale in entrata
divider introduced back in Chapter 5. periodico (o quasi periodico), la cui frequenza fonda-
mentale
The timeè ω and
radianti per campione,
frequency domains offerpossiamo sintonizzareways
complementary il filtro a pettine
of looking in
at the
modo che i picchi nel guadagno siano allineati agli
same delay network. When the delays inside the network are smaller than thearmonici pari mentre quelli
dispari
ear’s si trovino
ability to resolve doveevents
il guadagno è zero.than
in time—less Perabout
fare ciò sceglieremo d = π/ω,
20 milliseconds—the time
domain picture becomes less relevant to our understanding ofdel
cioè, impostiamo il tempo di ritardo a esattamente metà theperiodo del se-
delay network,
gnaleweinturn
and ingresso.
mostlyIn to questo modo otterremopicture.
the frequency-domain un nuovo Onsegnale
the other i cui armonici
hand, when
sono 2ω, 4ω, 6ω, . . . e quindi adesso ha una nuova frequenza
delays are greater than about 50 msec, the peaks and valleys of plots showing fondamentale pari
a due volte quella originale. Fatta eccezione per un fattore
gain versus frequency (such as that of Figure 7.6) crowd so closely together that di due, le ampiezze
dei frequency-domain
the restanti armonici seguono ancoraless
view becomes l’inviluppo
important. spettrale
Both are delnonetheless
suono originale.
valid
Quindi abbiamo uno strumento
over the entire range of possible delay times. per aumentare di un’ottava il tono di un suono
in ingresso senza cambiare il suo inviluppo spettrale. Questo octave doubler è
l’opposto dell’octave divider introdotto nel Capitolo 5.
7.4 Recirculating delay networks
I domini del tempo e della frequenza offrono modalità complementari per
It is sometimes
esaminare desirable
una stessa toritardo.
rete di connectQuando
the outputs of all’interno
i ritardi one or more delays
della in a
rete sono
network back intorispetto
a tempi inferiori their own
alla or each others’
capacità inputs.diInstead
dell’orecchio of getting
distinguere onenel
gli eventi or
several
tempo echos
– meno of di
thecirca
original sound as in –thelaexample
20 millisecondi above, wenel
rappresentazione candominio
potentially
del
get
tempoan diventa
infinite meno
number of echos,
rilevante each
per la one comprensione
nostra feeding back della
into rete
the di
network
ritardotoe
engender yet others.
ci rivolgiamo principalmente alla rappresentazione nel dominio della frequenza.
D’altro canto, quando i ritardi sono superiori a circa 50 msec, i picchi e le valli
della rappresentazione che mostrano il guadagno in funzione della frequenza
(come quella in Figura 7.6) sono cosı̀ strettamente vicini che la visualizzazione
nel dominio della frequenza diventa meno importante. Entrambe sono comunque
valide per tutta la gamma di possibili tempi di ritardo.
7.4. Reti
7.4. di ritardo ricircolanti
RECIRCULATING DELAY NETWORKS 175
185
IN
OUT
Figure
Figura 7.7:
7.7: Block diagram
Diagramma for a recirculating
a blocchi per un filtro comb filter.
a pettine Here d is the
ricircolante. Qui delay
d è il
time in samples and g is the feedback coefficient.
tempo di ritardo in campioni e g è il coefficiente di feedback.
input
output
Figura
Figure 7.8: Analisi nel dominio
7.8: Time-domain analysisdelof tempo del filtro acomb
the recirculating pettine ricircolante,
filter, using an
utilizzando un impulso
impulse as input. come input.
Se,the
Here come prima,
terms in thel’input della from
sum come rete èthe
il segnale,
series of discrete echos. It follows that
the amplitude of the output is:
X[n] = Z n
2
+ gZ −d +
H = 1 l’output
con |Z| = 1, possiamo scrivere (gZ −d ) + · · ·
come
This is a geometricYseries; we+can
[n] = (1 sum
gZ −d + git2 Zusing
−2d the standard technique. First
+ · · · )X[n].
−d
multiply both sides by gZ to give:
Qui i termini della somma provengono dalla serie di echi discreti. Ne consegue
2 3
gZ −d H =è:gZ −d + (gZ −d ) + (gZ −d ) + · · ·
che l’ampiezza dell’output
H =1+
and subtract from the original gZ −d +to
equation (gZ −d 2
) + ···
give:
H − gZ −dsommarla
Questa è una serie geometrica; possiamo H =1 usando la tecnica standard.
Innanzitutto moltiplichiamo entrambi i lati per gZ −d per avere
Then solve for H:
gZ −d H = gZ −d 1 2 + (gZ −d )3 + · · ·
−d
H +=(gZ ) −d
1 − gZ
e sottraendola dall’equazione originale si ottiene:
A faster (but slightly less intuitive) method to get the same result is to
examine the recirculating network H −itself
gZ −dtoH yield
= 1. an equation for H, as follows.
We named the input X[n] and the output Y [n]. The signal going into the delay
Quindi, risolvendo
line is the output Yper
[n],Hand
si ha:
passing this through the delay line and multiplier
gives
1
H Y=[n] · gZ −d .
1 − gZ −d
This plus the input is just the output signal again, so:
Un metodo più veloce (ma meno intuitivo) per ottenere lo stesso risultato
è quello di esaminare la rete
Y [n]ricircolante
= X[n] + Y stessa per−dprodurre un’equazione per
[n] · gZ
H, nel modo seguente. Chiamiamo X[n] l’input e Y [n] l’output. Il segnale che
entra nella linea di ritardo è l’output Y [n] e passando questo attraverso la linea
di ritardo ed il moltiplicatore otteniamo
Y [n] · gZ −d .
7.4. Reti di ritardo ricircolanti 177
imaginary
imaginary
1−g
1−g
real 1
real −d 1
gW
−d −d
gW 1−gW
−d
−d 1−gW
gZ
−d
gZ
Figure 7.9: Diagram in the complex plane for approximating the output gain
Figura 7.9: Diagramma nel piano complesso per approssimare il guadagno di
|H| of the recirculating comb filters at three different frequencies: 0, and the
uscita |H|
Figure 7.9: dei filtri ainpettine
Diagram ricircolanti
the complex planea for
treapproximating
diverse frequenze: 0, e gligain
the output ar-
arguments of two unit complex numbers W and Z; W is chosen to give a gain
|H|
gomenti
of thedi recirculating
due numeri complessi
comb filtersunitari W edifferent
at three Z; W viene scelto per
frequencies: 0, avere un
and the
about 3 dB below the peak.
guadagno di
arguments of circa 3 dBcomplex
two unit al di sotto del picco.
numbers W and Z; W is chosen to give a gain
about 3 dB below the peak.
gain
5
gain
5
2 4
2d 4d
d d
Figure 7.10: Frequency response of the recirculating comb filter with g = 0.8.
The peak gain is 1/(1 − g) = 5. Peaks are much narrower than for the non-
Figure 7.10: Frequency response of the recirculating comb filter with g = 0.8.
Figura 7.10: comb
recirculating Risposta in frequenza del filtro a pettine ricircolante con g = 0.8.
filter.
The peak gain is 1/(1 − g) = 5. Peaks are much narrower than for the non-
Il guadagno di picco è 1/(1 − g) = 5. I picchi sono molto più stretti che nel caso
recirculating comb filter.
del filtro a pettine non-ricircolante.
7.5. Conservazione della potenza e reti di ritardo complesse 179
(in radianti) ai due lati del picco. La larghezza di banda si restringe (e i picchi
del filtro diventano più nitidi), quando g si avvicina al suo valore massimo, pari
a 1.
Come per il filtro a pettine non-ricircolante del paragrafo 7.3, i denti del
pettine sono più vicini tra loro per valori più grandi del ritardo d. D’altra
parte, un ritardo di d = 1 (il più breve possibile) fornisce solo un dente (a
frequenza zero) al di sotto della frequenza di Nyquist π (il dente successivo, a
2π, corrisponde nuovamente a una frequenza pari a zero a causa del foldover).
Quindi il filtro a pettine ricircolante con d = 1 è praticamente un filtro passa-
basso. Le reti di ritardo con ritardi di un campione saranno la base per la
progettazione di molti altri tipi di filtri digitali nel Capitolo 8.
IN
d d d d
1 2 3 4
OUT
Figure 7.11:
Figura 7.11: First fundamental
Primo building
fondamentale blockdifor
blocco unitary delay
costruzione pernetworks: delay
reti di ritardo
lines in parallel.
unitarie: linee di ritardo in parallelo.
(a) (b)
IN
IN
c -s s c
c -s
s c
OUT
OUT
dovesoZthe
and è un
twonumero complesso
output signals havecon modulo
the same unitario
total power ase argomento θ. signals.
the two input Poiché
|Z| For
= 1,ansegue che |X| description
alternative = |Y |. of rotation in two dimensions, consider com-
plexSenumbers
eseguiamo X una
= xrotazione
1 + x2 i and Y =
su una y1 +diy2segnali
coppia i. Thee above
poi ne transformation
invertiamo uno
amounts to setting
(ma non l’altro), il risultato è una riflessione. Anche la riflessione conserva la
potenza totale del segnale, in quanto Y possiamo
= XZ invertire uno o tutti gli elementi
in un insieme di segnali senza cambiare la potenza totale. In dimensione 2, una
where Z is a complex number with unit magnitude and argument θ. Since
riflessione appare come una trasformazione della forma
|Z| = 1, it follows that |X| = |Y |.
If we perform a rotation on a pair of signals and then invert one (but not
y1 [n] = cx1 [n] + sx2 [n]
the other) of them, the result is a reflection. This also preserves total signal
.
power, since we can invert any or all of a collection of signals without changing
y2 [n] = sx1 [n] − cx2 [n]
the total power. In two dimensions, a reflection appears as a transformation of
the form
Una matrice di rotazione particolare ed utile viene ottenuta impostando
y [n] p= cx1 [n] + sx2 [n]
θ = π/4, in modo che s = c1 = 1/2. Ciò consente di semplificare i calcoli,
come mostrato in Figura 7.13 y2 [n](parte a), −perché
= sx1 [n] cx2 [n] ciascun segnale deve essere
moltiplicato per la sola quantità c = s.
A special
! andeffettuare
useful rotation matrix is obtained by setting θ = π/4, so that
È possibile rotazioni o riflessioni più complicate di più di due
s = c = 1/2. This allows us to simplify the computation as shown in Figure
segnali di ingresso semplicemente ruotandoli e/o riflettendoli ripetutamente a
7.13 (part a) because each signal need only be multiplied by the one quantity
coppie. Ad esempio, in Figura 7.13 (parte b), quattro segnali vengono combinati
c = s.
in coppia, in due passaggi successivi, in modo che alla fine ogni ingresso di
More complicated rotations or reflections of more than two input signals may
segnale appaia in tutte le uscite. Potremmo fare altrettanto con otto segnali
be made by repeatedly rotating and/or reflecting them in pairs. For example,
(usando tre passaggi) e cosı̀ via. Inoltre, se usiamo l’angolo speciale π/4, tutti
in Figure 7.13 (part b), four signals are combined in pairs, in two successive
i segnali di ingresso contribuiranno ugualmente a ciascuna delle uscite.
Qualsiasi combinazione di ritardi e matrici di rotazione, applicata in suc-
cessione ad una collezione di segnali audio, provocherà una risposta piatta in
frequenza, in quanto ogni singola operazione fa questo. Ciò ci permette già di
generare un’infinità di reti di ritardo a risposta piatta, ma finora, nessuna di
192 CHAPTER 7. TIME SHIFTS AND DELAYS
182 Capitolo 7. Spostamenti temporali e ritardi
(a) (b)
IN
IN
R R
1 2
R
3
a a
R
4
OUT OUT
Figure 7.13: Details about rotation (and reflection) matrix! operations: (a) ro-
Figuraby
tation 7.13:
the Dettagli
angle θ =sulle π/4,operazioni
so that a matriciali
= cos(θ) =disin(θ) rotazione
= (e 1/2riflessione):
≈ 0.7071;
p (b) (a)
rotazione di un angolo di θ = π/4, cosicché
combining two-dimensional rotations to make higher-dimensional ones. a = cos(θ) = sin(θ) = 1/2 ≈
0.7071; (b) combinazione di rotazioni bidimensionali per ottenere quelle in
dimensione maggiore.
stages, so that in the end every signal input feeds into all the outputs. We could
do the same with eight signals (using three stages) and so on. Furthermore, if
esseuse
we è ricircolante.
the special angle Unaπ/4,
terzaalloperazione,
the input signalsmostrata willincontribute
Figura 7.14, consente
equally di
to each
effettuare
of the outputs. reti ricircolanti che danno ancora risposte piatte in frequenza.
La parte (a) della figura mostra il layout generale. La trasformazione R è
Any combination of delays and rotation matrices, applied in succession to
una qualsiasi combinazione di ritardi e matrici di miscelazione che preservano
a collection of audio signals, will result in a flat frequency response, since each
la potenza totale. I segnali x1 , . . . , xk entrano in una rete di ritardo unitaria
individual operation does. This already allows us to generate an infinitude of
e ne emergono i segnali di uscita y1 , . . . , yk . Altri segnali w1 , . . . , wj (dove j
flat-response delay networks, but so far, none of them are recirculating. A third
non è necessariamente uguale a k) appaiono all’uscita della trasformazione R e
operation, shown in Figure 7.14, allows us to make recirculating networks that
vengono riportati al suo ingresso.
still enjoy flat frequency responses.
Se R conserva effettivamente la potenza, la potenza totale di ingresso (la
Part (a) of the figure shows the general layout. The transformation R is
potenza dei segnali x1 , . . . , xk più quella dei segnali w1 , . . . , wj ) deve essere
assumed to be any combination of delays and mixing matrices that preserves
uguale alla potenza di uscita (la potenza dei segnali y1 , . . . , yk più quella dei
total power. The signals x1 , . . . xk go into a unitary delay network, and the
segnali w1 , . . . , wj ) e sottraendo tutti gli w dall’uguaglianza, troviamo che le
output signals y1 , . . . yk emerge. Some other signals w1 , . . . wj (where j is not
potenze totali di ingresso e di uscita sono uguali.
necessarily equal to k) appear at the output of the transformation R and are
Se poniamo j = k = 1 in modo di avere un solo segnale x, y e w e supponiamo
fed back to its input.
che la trasformazione R sia una rotazione di un angolo θ seguita da un ritardo di
If R is indeed
d campioni sull’outputpowerWpreserving,
, il risultatothe è iltotal
ben noto inputall-pass
power filter.
(the power of the
Con qualche
signals x 1 , . . . x k plus that of the signals w 1 , . .
manipolazione e ponendo c = cos(θ) possiamo dimostrare che è equivalente. w j ) must equal the output power
(the power of the signals y 1 , . . . y k plus w 1 , . . . w j ),
alla rete mostrata nella parte (b) della figura. I filtri all-pass hanno molte and subtracting all the w from
the equality, we find that the total input and output
applicazioni, alcune delle quali verrano viste più avanti in questo libro. power are equal.
If we let j = k = 1 so that there is one x, y, and w, and let the transformation
R be a rotation by θ followed by a delay of d samples on the W output, the result
7.6 Riverberazione artificiale
La riverberazione artificiale è ampiamente utilizzata per migliorare il suono
delle registrazioni, ma ha una vasta gamma di altre applicazioni musicali [DJ85,
pp.289-340]. La riverberazione in spazi naturali, reali, deriva da un complesso
7.6. Riverberazione artificiale
ARTIFICIAL REVERBERATION 183
193
(a) (b)
IN
x1 xk
...
...
R
wj w d c
1
...
d1 ... dj
c
y y
1 k
OUT
is the well-known all-pass filter. With some juggling, and letting c = cos(θ), we
schema
can show diitriflessioni sonore
is equivalent to sulle pareti e shown
the network su altriin oggetti
part (b)cheofdefiniscono
the figure.loAll-pass
spazio.
Imitare questo processo utilizzando reti di ritardo ricircolanti
filters have many applications, some of which we will visit later in this book. e discrete è una
grande semplificazione. Tuttavia, modellare la riverberazione utilizzando linee
di ritardo ricircolanti può, con molto lavoro, essere fatto per dare buoni risultati.
7.6L’ideaArtificial
centrale è quella reverberation
di idealizzare qualsiasi stanza (o altro spazio riverbe-
rante) come una collezione di linee di ritardo parallele che modellano la memoria
Artificialall’interno
dell’aria reverberation dellaisstanza.
widely usedAd ognito improve
punto sullethe pareti
sound della
of recordings,
stanza molti but
has a wide
percorsi range
lineari of other musical
terminano, ciascuno applications [DJ85, pp.289-340].
dei quali trasporta il suono a quel Reverbera-
punto;
iltion in real,
suono alloranatural spaces
si riflette in arises
molti from
altri apercorsi,
complicatedognuno pattern of originato
di essi sound reflections
in quel
off the ewalls
punto, and other
che conduce objects thatad
eventualmente define the punto
un altro space. suItunis muro.
a great oversim-
plification
Anche se toilimitate
muro (ethis process
l’aria using recirculating,
che abbiamo attraversato discrete
per arrivaredelayallanetworks.
parete)
Nonetheless,
assorbe un po’modeling
del suono, reverberation
una parte della usingpotenza
recirculating
incidente delay lines can,
è riflessa versowithun
muchmuro.
altro work, Sebe lamade to yield
maggior partegood results. ricircola, la stanza riverbera per un
dell’energia
tempo Thelungo;
central se idea
tuttaisl’energia
to idealize anyla room
lo fa, (or otherdura
riverberazione reverberant
per sempre. space) Seasa
a collection
qualsiasi of parallel
frequenza delayriflettono
le pareti lines that piùmodels
energiathe memory
rispetto of thericevuta,
a quella air inside il
the room.
suono verràAt each instabilmente;
ripreso point on the walls questo of non
the accade
room, manymai instraight-line
ambienti reali paths
(la
terminate, eachdell’energia
conservazione carrying sound to that point;
lo impedisce), the sound
ma può succederetheninreflects into many
un riverberatore
other paths,
artificiale eachèone
se non statooriginating
progettato at correttamente.
that point, and leading eventually to some
otherPerpoint
fare onun ariverberatore
wall. artificiale usando una rete di ritardo, dobbiamo
Although
soddisfare the wall (and the
simultaneamente air richieste
a due we passedconcorrenti.
through to Innanzitutto,
get to the wall) le absorbs
linee di
some ofdevono
ritardo the sound,esseresome portion of
abbastanza the incident
lunghe powerlaiscolorazione
per impedire reflected and makes it
nell’output
to another
come wall.delIf filtraggio
risultato most of the energy (anche
a pettine recirculates, the room
se passiamo al reverberates
di là del semplice for a
long time;
filtro if alldel
a pettine of paragrafo
it does, the 7.4,reverberation
la risposta inlasts forever.tende
frequenza If atad any frequency
avere picchi
ethe walls
valli la reflect more energy
cui distanza overall than they
varia inversamente receive,
al tempo the sound
totale will feed
di ritardo). back
D’altra
parte, non dovremmo ascoltare singoli echi; la densità di eco dovrebbe essere
idealmente almeno mille per secondo.
Nel perseguimento di questi obiettivi, assembliamo un certo numero di linee
di ritardo e connettiamo i loro outputs ai loro inputs. Il percorso di feedback –
184 Capitolo 7. Spostamenti temporali e ritardi
IN
R1
d1
R2
d2
R
9
R3
d3 g
d7 d8 d9
OUT
la connessione dalle uscite agli ingressi dei ritardi – dovrebbe avere un guadagno
aggregato che varia leggermente in funzione della frequenza e non supera mai
uno per nessuna frequenza. Un buon punto di partenza è dare al percorso di
feedback una risposta piatta in frequenza e un guadagno leggermente inferiore
a uno; questo può essere fatto usando le matrici di rotazione.
Idealmente questo è tutto ciò che dobbiamo fare, ma in realtà non vorremmo
sempre usare le migliaia di linee di ritardo che ci vorrebbero per modellare i
percorsi tra ogni possibile coppia di punti sulle pareti. Nella pratica usiamo
solitamente tra quattro e sedici linee di ritardo per modellare la stanza. Questa
semplificazione a volte riduce la densità di eco al di sotto di ciò che vorremmo, e
quindi potremmo utilizzare più linee di ritardo all’ingresso della rete ricircolante
per aumentare la densità.
La Figura 7.15 mostra un semplice progetto di riverberatore che usa questo
principio. Il suono in entrata, mostrato come due segnali separati in questo
esempio, viene prima ispessito ritardando progressivamente uno dei due segnali
e poi mescolandoli utilizzando una matrice di rotazione. Ad ogni passaggio il
numero di echi del segnale originale è raddoppiato; tipicamente utilizzeremo tra
i 6 e gli 8 passaggi per ottenere tra i 64 e i 256 echi, tutti con un ritardo totale
compreso tra i 30 e gli 80 millisecondi. La figura mostra tre di tali passaggi.
7.6. Riverberazione artificiale 185
t
20 log10 (g).
d
La misura usuale del tempo di riverberazione (RT) è il tempo a cui il guadagno
scende di sessanta decibel:
20 RT
d log10 (g) = −60,
−3d
RT = log10 (g) .
IN (a)
reverb
feedback
OUT
(b)
input
1 gain
t1 t2 time
feedback
1
t3
lasciare entrare, nel riverberatore, forse 1/2 secondo dello stato stazionario del-
la nota. È possibile costruire accordi da uno strumento monofonico aprendo
ripetutamente l’ingresso in momenti diversi in cui il tono è stabile.
La Figura 7.16 mostra come ciò possa essere fatto in pratica. I due con-
trolli più importanti sono i guadagni di ingresso e di feedback del riverberatore.
Per catturare un suono, impostiamo il guadagno di feedback su uno (tempo di
riverbero infinito) e apriamo momentaneamente l’ingresso al tempo t1 . Per ag-
giungere altri suoni ad un già trattenuto, ri-apriamo semplicemente il guadagno
d’ingresso nei momenti appropriati (ad esempio t2 in figura). Infine, possiamo
cancellare il suono ricircolante, sia smorzando l’uscita sia svuotando il riverbe-
ratore impostando il guadagno di feedback ad un valore inferiore a uno (come al
momento t3 ). Più riduciamo il guadagno di feedback, più velocemente l’output
decadrà.
7.7. Spostamenti variabili e frazionari 187
input
time
D output time
Figure 7.17: A variable length delay line, whose output is the input from some
Figura
previous7.17:
time.Una
Thelinea di ritardo
output samplesa can’t
lunghezza variabile,
be newer than theil cui output
input è l’input
samples, nor
rispetto a qualche
older than tempo
the length D ofprecedente. I campioni
the delay line. di output
The slope non possono essere
of the input/output curve
più recenti
controls thedei campioni transposition
momentary di input, né of
piùthe
vecchi della lunghezza D della linea
output.
di ritardo. La pendenza della curva di input/output controlla la transizione
momentanea dell’output.
z[n] = x[y[n]]
7.8. Fedeltà delle linee di ritardo interpolanti 189
gain
1
Figure 7.18: Gain of a four-point interpolating delay line with a delay halfway
Figura 7.18: Guadagno di una linea di ritardo con interpolazione a quattro punti
between two integers. The DC gain is one.
con un ritardo a metà tra due interi. Il guadagno DC è uno.
input
time
output time
Figure
Figura7.19:
7.19:Vibrato
Vibratousing a variable
usando una linea delay
di line. Since
ritardo the pitch
variabile. shift alternates
Poiché lo sposta-
204 CHAPTER 7. TIME SHIFTS AND DELAYS
between
mento diupward and verso
tono varia downward,
l’alto eit verso
is possible to maintain
il basso, è possibileitmantenerlo
without drifting
senza
outside
deviarethe strip
al di of della
fuori admissible
strisciadelay.
di ritardo ammissibile.
input
time
output time
Figure
Figura 7.20: Funzioni
Piecewisedilinear delay
ritardo functions
lineari a tratti to
permaintain
mantenerea constant transpo-
una trasposizione
sition (except
costante at the points
(ad eccezione of discontinuity).
dei punti The Gli
di discontinuità). outputs are subiscono
outputs enveloped unas
suggested by thesuggerito
inviluppo come bars above each
dalle point,
barre toogni
sopra smooth theper
punto, output at the
smussare pointsnei
l’uscita of
discontinuity in delay time.
punti di discontinuità nel tempo di ritardo.
d[n] = d0 + a cos(ωn)
where d0 is the average delay, a is the amplitude of variation about the average
delay, and ω is an angular frequency. The Momentary Transposition (Page 200),
is approximately
7.9. Spostamento di tono 193
IN
0
s
N
d
delay 0
time
1
0
0 N
OUT
Figure
Figura 7.21: Using
Utilizzoa variable delaydiline
di una linea as avariabile
ritardo pitch shifter.
come The
pitchsawtooth wave
shifter. L’on-
creates a smoothly
da a dente di sega increasing or decreasing
crea un tempo delay
di ritardo chetime. The output
aumenta of the senza
o diminuisce delay
line is enveloped
irregolarità. to avoid
L’output delladiscontinuities.
linea di ritardoAnother copy of
è inviluppato perthe same disconti-
evitare diagram
should run 180 degrees
nuità. Un’altra (π radians)
copia dello out of phase
stesso diagramma withessere
deve this one.
eseguita a 180 gradi
(π radianti) fuori fase rispetto al primo.
194 Capitolo 7. Spostamenti temporali e ritardi
input
time
output time
Figure 7.22:
Figura 7.22: Schema
The pitch
di shifter’s delay
lettura del reading
ritardo pattern
del pitch usingutilizzando
shifter two delay due
lines, so
linee
that
di one isinatmodo
ritardo, maximum
che unoamplitude exactly massima
sia all’ampiezza when theesattamente
other is switching.
quando l’altro
sta commutando.
loadbang
metro 1000
tabplay~ G01-tab
input signal
0 <-- pitch
mtof 1
phasor~ adsr 1 100 1000 0 1000
*~ *~
input
signal 0 <-- delay time
delread~ G02-del 160 read from delay line
*~ 0.7 feedback gain
+~ add the original and the delayed signal
|
(OUT) delwrite~ G02-del 2000 write to delay line
0 <-- pitch
si sente un eco discreto. Non c’è alcuna protezione di disattivazione per l’output
mtof
del ritardo,0 quindi
<-- i timbre
clicks sono possibili quando cambia il tempo di ritardo.
* 0.5
* 0.01 0 <-- cycle frequency (hundredths)
Filtro
osc~ a pettine ricircolante
pack 0 100 / 100
0
L’esempio G02.delay.loop.pd (Figura 7.24)<-- cycle
mostra comedepth (msec)
effettuare una rete di
line~ osc~ 0
ritardo ricircolante. Il ritardo è nuovamente ottenuto utilizzando una coppia
pack 0 100
*~ L’output
delwrite∼/delread∼. +~ 1 dell’oggetto delread∼ è moltiplicato per un
line~
guadagno
cos~ di feedback di 0.7 e poi inviato all’oggetto delwrite∼. Un input
*~
(fornito dal phasor∼ e dagli oggetti ad esso associati) viene aggiunto all’ingresso
0 <-- feedback
hip~
di 10
delwrite∼; questa somma diventa l’output della rete. Questo è il filtro a
+~ 1.46
pettine * 0.01 (hundredths)
clip~ ricircolante
-0.2 0.2 del paragrafo 7.4.
vd~ G03-del
La rete di oggetti tilde non ha cicli, nel pack senso 0di100
oggetti che alimentano
+~
direttamente o indirettamente (tramite connessioni attraverso altri oggetti) se
stessi. line~ tra gli oggetti delwrite∼
Il feedback della rete si verifica implicitamente
hip~ 5
e| delread∼.
*~
(OUT)
clip~ -1 1
Linea di ritardo variabile
delwrite~ G03-del 1000
L’esempio seguente, G03.delay.variable.pd (Figura 7.25), è un altro filtro a petti-
ne ricircolante, questa volta ottenuto utilizzando una linea di ritardo a lunghezza
variabile. Qui7.25:
Figure vieneThe
introdotto un interpolating,
flanger: an nuovo oggetto:variable delay line.
vd∼ : lettura da una linea di ritardo, con un tempo di ritardo variabile.
Come l’oggetto delread∼, questo legge da una linea di ritardo il cui nome è
specificato come creation argument. Invece di utilizzare un secondo argomento
e/o messaggi di controllo per specificare il tempo di ritardo, per l’oggetto vd∼
il ritardo in millisecondi è specificato da un segnale audio in entrata. La linea
di ritardo viene letta utilizzando l’interpolazione (cubica) a quattro punti; il
ritardo minimo ottenibile è un campione.
signal 0 <-- delay time
delread~ G02-del 160 read from delay line
*~ 0.7 feedback gain
+~ add the original and the delayed signal
|
(OUT) delwrite~ G02-del 2000 write to delay line
0 <-- pitch
mtof
0 <-- timbre
* 0.5
* 0.01 0 <-- cycle frequency (hundredths)
osc~
pack 0 100 / 100
0 <-- cycle depth (msec)
line~ osc~ 0
pack 0 100
*~
+~ 1
line~
cos~
*~
0 <-- feedback
hip~ 10
+~ 1.46
* 0.01 (hundredths)
clip~ -0.2 0.2
vd~ G03-del
pack 0 100
+~
line~
hip~ 5
| *~
(OUT)
clip~ -1 1
Qui gli oggetti sul lato sinistro, dall’alto verso il basso fino all’oggetto clip∼
-0.2 0.2, formano una rete waveshaping; l’indice è impostato dal controllo
“timbre” e l’output del waveshaping varia tra una quasi sinusoide e un suono
brillante e ronzante. L’output viene sommato all’output dell’oggetto vd∼. La
somma viene poi filtrata con un passa-alto (l’oggetto hip∼ in basso a sinistra),
moltiplicata per un guadagno di feedback, ritagliata e scritta nella linea di
ritardo in basso a destra. C’è un controllo a destra per impostare il guadagno di
feedback; qui, in contrasto con l’esempio precedente, è possibile specificare un
guadagno superiore a uno per ottenere feedback instabili. Per questo motivo il
secondo oggetto clip∼ viene inserito nel ciclo di ritardo (appena sopra l’oggetto
delwrite∼) in modo che il segnale non possa superare 1 in valore assoluto.
La lunghezza del ritardo è controllata dall’input del segnale nell’oggetto vd∼.
Un oscillatore con frequenza e guadagno variabili, al centro della figura, fornisce
il tempo di ritardo. All’oscillatore viene sommato 1 per renderlo non-negativo
prima di moltiplicarlo per il controllo “cycle depth”, che imposta effettivamente
il range dei tempi di ritardo. Il tempo di ritardo minimo di 1.46 millisecondi
viene aggiunto in modo che il range vero dei tempi di ritardo sia tra il minimo
e lo stesso più due volte la “depth” (profondità). La ragione di questo tempo
di ritardo minimo sarà ripresa nella spiegazione del prossimo esempio.
I filtri a pettine con tempi di ritardo variabili sono a volte chiamati flan-
gers. Quando il tempo di ritardo cambia, i picchi della risposta in frequenza si
muovono in su e in giù in frequenza, in modo che il timbro dell’output cambia
costantemente in modo caratteristico.
7.10. Esempi
212 199
CHAPTER 7. TIME SHIFTS AND DELAYS
(a)
(b)
a~
b~ c~ a~ b~
d~
Figure 7.26: Order of execution of tilde objects in Pd: (a), an acyclic network.
Figura
The 7.26: may
objects Ordinebe di esecuzione
executed di oggetti
in either the tilde
orderin“a-b-c-d”
Pd: (a), or
una“a-c-b-d”.
rete aciclica.
In
Gli oggetti possono essere eseguiti nell’ordine “a-b-c-d” o “a-c-b-d”.
part (b), there is a cycle, and there is thus no compatible linear orderingNellaofparte
the
(b), c’è because
objects un ciclo, e quindi
each non need
one would c’è un ordinamento
to be run before lineare compatibile degli
the other.
oggetti perché ognuno avrebbe bisogno di essere eseguito prima dell’altro.
details.)
Ordine di effect
To see the esecuzione e limiti
of the order inferiori
of computation on asui tempi di ritardo
delwrite~/delread~ pair,
we can write explicitly the input and output signals in the two possible
Quando si utilizzano ritardi (cosı̀ come altri oggetti di tilde, in Pd, di condivi-orders,
with
sionethe minimum
di stato), possible
l’ordine delay.
in cui If the write
le operazioni di operation
scrittura ecomes first,
lettura sonoat eseguite
a block
starting at sample number N , the operation can be written as:
può influenzare l’esito del calcolo. Anche se gli oggetti tilde in una patch pos-
sono avere una topologia x[N ], . complessa
. . , x[N + Bdi−connessioni
1] −→ delwrite~ audio, in realtà Pd li esegue
tutti in ordine sequenziale, uno dopo l’altro, per calcolare ogni blocco di output
audio. BQuesto
where ordinesize
is the block lineare
(as inèSection
garantito3.2).perHaving
essere put
compatibile con le intercon-
those particular samples
nessioni
into audio,line,
the delay nel senso che non
a following viene eseguito
delread~ is ablealcunto read calcolo di unvalues
the same oggetto tilde
out:
finché non sono stati calcolati tutti gli inputs, per quel blocco stesso.
La Figura 7.26 mostra delread~ due −→ esempix[Ndi], .topologie B − 1]
. . , x[N +degli oggetti tilde e la loro
interpretazione in una sequenza di calcolo. Nella parte (a) ci sono quattro
On the
oggetti other
tilde e, hand,
a causasuppose
delle the object comes
delread~l’oggetto
connessioni, a∼ before the delwrite~.
deve produrre il suo
Then the samples x[N ], . . . , x[N + B − 1] have
output prima che si possa eseguire sia b∼ o c∼; ed entrambi questi, not yet been stored in the adelay
loro
line,
volta,sovengono
the mostutilizzati
recent samples
nel calcolo that may
di d∼. be read
Quindibelong to the ordini
i possibili previous di block:
questi
quattro oggetti sono “a-b-c-d” e “a-c-b-d”. Questi due ordinamenti avranno
delread~ −→ x[N − B], . . . , x[N − 1]
esattamente lo stesso risultato, a meno che il calcolo di b∼ e c∼ non influenzi,
in qualche modo, l’output l’uno dell’altro (come potrebbero fare, ad esempio, le
x[N ], . . . , x[N + B − 1] −→ delwrite~
operazioni di ritardo).
HereLatheparteminimum
(b) delladelay
figura we mostra
can possibly
un ciclo obtain is thetilde.
di oggetti block Questa
size B. reteSo nonthe
minimum
può esseredelay is eitherin0 un
organizzata or B, depending
ordine sequenziale on the order in which
compatibile, the sia
poiché delread~
a∼ che
and delwrite~objects
b∼ richiedono che l’outputare sorted
dell’altrointosia
a sequence
calcolato of execution.
prima. In generale, un ordine
Looking di
sequenziale back at the
oggetti tildepatches of Figures
è possibile se e solo7.24seandnon7.25, which
ci sono cicliboth feature
in qualsiasi
recirculating
punto della rete delays,
deglithe delread~
oggetti tilde eordelle
vd~loroobject must be placed
interconnessioni earlier in
di segnale the
audio.
sequence
Pd segnala than
unthe quando object.
delwrite~
errore appare This
un taleis true of (si
ciclo anynotidesign
cheinlawhich a delay’s
situazione per
output is fed back di
le interconnessioni into its input.
controllo tra The minimum
oggetti possible delay
è più complicata is B samples.
e flessibile, si veda
For a (typical) sample
la documentazione di Pd rate perofi dettagli).
44100 Hertz and block size of 64 samples, this
comes
Pertovedere
1.45 milliseconds.
l’effetto dell’ordineThis might not sound
di calcolo su unaatcoppia
first like a very important
delwrite∼/read∼,
restriction. But if esplicitamente
possiamo scrivere you are trying itosegnali tune adirecirculating
ingresso e dicomb uscitafilter to a possibili
nei due specific
ordini, con il minimo ritardo possibile. Se l’operazione di scrittura viene prima,
in un blocco a partire dal sample number N , l’operazione può essere scritta
come:
x[N ], . . . , x[N + B − 1] −→ delwrite∼
200 Capitolo 7. Spostamenti temporali e ritardi
dove B è la dimensione del blocco (come nel paragrafo 3.2). Avendo inserito
questi particolari campioni nella linea di ritardo, un delread∼ successivo è in
grado di leggere gli stessi valori:
delread∼ −→ x[N ], . . . , x[N + B − 1].
D’altra parte, supponiamo che l’oggetto delread∼ arrivi prima dell’oggetto
delwrite∼. Quindi i campioni x[N ], . . . , x[N + B − 1] non sono ancora stati
memorizzati nella linea di ritardo, perciò i campioni più recenti che possono
essere letti appartengono al blocco precedente:
delread∼ −→ x[N − B], . . . , x[N − 1]
(a) (b)
loadbang incoming delay
pulses time
metro 500
inlet~ inlet
random 60
del 1 delread~ G04-del
+ 30
1 0 +~ *~ 0.99
mtof
vline~ expr 1000/$f1 delwrite~ G04-del 1000
pd delay-writer
outlet~ block~ 1
|
(OUT) set block size
Figure 7.27: A patch using block size control to lower the loop delay below the
Figura 64
normal 7.27: Una patch
samples: (a) theche utilizza
main patch;il(b)
controllo della dimensione
the “delay-writer” delwith
subpatch blocco
a per
abbassare
block~ il ritardo
object del ciclo al delay
and a recirculating di sotto dei normali 64 campioni: (a) la patch
network.
principale; (b) la sottopatch “delay-writer” con un oggetto block∼ e una rete
di ritardo ricircolante.
pitch, the highest you can get only comes to about 690 Hertz. To get shorter
214
recirculating CHAPTER
delays you must increase 7. TIME
the sample rate orSHIFTS
decreaseAND DELAYS
the block
size.
sits in. Block sizes are normally powers of two. The switch~ pack
object, 0in 30
addition,
can be used delwrite~ G05−d1
to turn audio 1000 within the window on and off, using
computation
control messages. Additional creation arguments can set theline~ local sample rate
and specifyvd~ G05−d1computations (demonstrated in Chapter 9).
overlapping
pd pulse
In +~
part (a) of the figure (the main patch), a rectangular pulse is sent to the
pd delay-writer subpatch, whose output pd delay−writer
is then returned to the main patch.
(BAD)
Part (b) shows the contents of the subpatch, which sends the pulses into a
pd delay−reader
recirculating delay. The block~ object specifies that, in this subpatch, signal
computation uses a block size (B) of only one. So the minimum achievable delay
(GOOD)
is one sample instead of the default 64.
Putting a pulse (or other excitation signal) into a recirculating comb filter
Figure
Figura
to make 7.28: Using
Utilizzo
a pitch subpatches
calledtoKarplus-Strong
di sottopatches
is sometimes ensure that delay
per assicurare chelines are diwritten
le linee
synthesis, having de-before
ritardo
been siano
they are
scritte read
prima in
di non-recirculating
essere lette in retinetworks: (a) the
non-ricircolanti: delwrite~
(a) gli
scribed in a paper by them [KS83], although the idea seems to be older. It and
oggetti vd~ objects
delwrite∼
might
e vd∼up
shows be executed
potrebbero
for example in either
essere
in Paul the “right”
eseguiti
Lansky’s or the
in 1979
ordine “wrong”
“giusto”
piece, oorder; (b)
on athe
“errato”;
Six Fantasies delwrite~
(b)
Poem l’oggetto
by
object
delwrite∼
Thomas isCampion.
inside the pd delay-writer
è all’interno della sottopatch subpatch and the vd~e l’oggetto
pd delay-writer object is vd∼ insideè
the pd delay-reader
all’interno one. pd
della sottopatch Because of the audio
delay-reader. connection
A causa between theaudio
della connessione two
subpatches, the order ofl’ordine
tra le due sottopatches, execution of the read/write
di esecuzione pair is
della coppia di forced to be the
lettura/scrittura
correct one.a essere quello corretto.
è costretto
pd looper
delwrite~ G06-del 100
fiddle~ 2048
unpack mtof fundamental frequency
moses 1 expr 500/$f1 1/2 period, in msec
t f b samplerate~
expr 2048000/$f1
estimate fiddle~ delay
+ as one window (in msec)
delread~ G06-del pack 0 20
line~
vd~ G06-del
+~
|
(OUT)
In this example, the “right” and the “wrong” way to make the comb filter
Ordine
have audiblydi different
esecuzione results.inForlinee
delays diless
ritardo
than 64non-ricircolanti
samples, the right hand
side of the patch (using subpatches) gives the correct result, but the left hand
Nellecan’t
side reti di ritardodelays
produce non-ricircolanti,
below the 64 dovrebbe
sample essere
block possibile
size. posizionare, nella
sequenza, l’operazione di scrittura nella linea di ritardo prima di quella che la
legge. Non è quindi previsto un limite inferiore della lunghezza della linea di
Non-recirculating
ritardo (ad eccezione di ciò comb
che è filter
impostoas octave
dallo schemadoubler
di interpolazione, vedere
il paragrafo 7.7). In linguaggi come Csound,
In example G06.octave.doubler.pd (Figure 7.29) we revisit la sequenza di calcolo del generatore
the idea of pitch-
unitario è (in gran parte) esplicita, quindi è facile da specificare.
based octave shifting introduced earlier in E03.octave.divider.pd. There, Negli ambienti
know-
di patching grafici, tuttavia, l’ordine è implicito ed è
ing the periodicity of an incoming sound allowed us to tune a ring modulator necessario adottare un
altro approccio per assicurare che, ad esempio, un oggetto
to introduce subharmonics. Here we realize the octave doubler described in delwrite∼ venga
calcolato7.3.
Section prima
Usingdela corrispondente oggetto delread∼.
variable, non-recirculating comb filter Unwemodo
takeper
out realizzare
odd har-
ciò è mostrato nell’esempio G05.execution.order.pd (Figura
monics, leaving only the even ones, which sound an octave higher. As before, 7.28).
the Nella
spectralparte (a) della
envelope figura,
of the soundle isconnessioni nella patch
roughly preserved nonoperation,
by the determinano so wein
quale ordine le due operazioni di ritardo appaiano nella
can avoid the “chipmunk” effect we would have got by using speed change to sequenza di calcolo de-
gli the
do oggetti tilde; l’oggetto delwrite∼ potrebbe essere calcolato prima o dopo
transposition.
l’oggetto vd∼. Se vogliamo
The comb filtering is doneassicurarci
by combining che l’operazione di scrittura
two delayed copies of thesiincoming
verifichi
prima dell’operazione di lettura, possiamo procedere come
signal (from the pd looper subpatch at top). The fixed one (delread~) is set nella parte (b) della
to
figura e mettere le due operazioni in sottopatches, collegandole
the window size of the pitch following algorithm. Whereas in the earlier example tramite segnali
audio in modo che la prima sottopatch debba essere calcolata prima della se-
conda (il calcolo audio nelle sottopatches è fatto atomicamente, nel senso che
tutti i contenuti della sottopatch sono considerati come per il calcolo audio per
la sottopatch nel suo complesso. Quindi tutto quello che c’è in una sottopatch
si verifica prima di tutto quello che c’è nella seconda).
7.10. Esempi 203
*~ line~ mod 4
t f b
delread~ G07-del 30
random 1000
*~ line~
expr 2 * $f1/1000 - 0.7
delread~ G07-del 17
pack 0 0 200
*~ line~
route 0 1 2 3
delread~ G07-del 11
*~ line~
+~
|
(OUT)
Figure 7.30: A “shaker”, a four-tap comb filter with randomly varying gains on
Figura
the taps.7.30: Uno “shaker”, un filtro a pettine a quattro taps con guadagni a
variazione casuale nei taps.
diversi spostamenti di tempo (invece di due, come nel filtro a pettine non-
ricircolante originale), ognuno con un diverso guadagno positivo o negativo. A
tal fine, inseriamo il segnale di ingresso in una linea di ritardo e facciamo un
“tap” in tre punti diversi; il quarto “tap” è il segnale originale, non ritardato.
Per pensare alla risposta in frequenza di un filtro a pettine a quattro taps,
consideriamo innanzitutto cosa succede quando due dei quattro guadagni sono
vicini allo zero. Otterremo quindi un semplice filtro a pettine non-ricircolante,
con la leggera complicazione che i guadagni delle due copie ritardate possono
essere diversi. Se sono entrambi dello stesso segno, otteniamo li stessi picchi e
le stesse valli come previsto nel paragrafo 7.3, solo che le valli tra i picchi sono
forse meno profonde. Se sono di segno contrario, le valli diventano picchi e i
picchi diventano valli.
A seconda di quali dei due taps si suppongano essere diversi da zero, i picchi
e le valli sono distanziate da quantità diverse; i tempi di ritardo vengono scelti
in modo che si possano verificare 6 tempi di ritardo diversi, compresi tra 6 e
30 millisecondi. Nel caso generale in cui tutti i guadagni sono diversi da zero,
possiamo immaginare che la funzione di risposta in frequenza vari continuamen-
te tra questi estremi, dando cosı̀ una successione di configurazioni complicate.
Questo ha l’effetto di sollevare e abbassare le ampiezze delle parziali del segnale
in entrata, tutte indipendentemente dalle altre, in uno schema complicato, per
dare un timbro costantemente variabile nel tempo.
Il lato destro della patch si occupa della modifica dei guadagni del segnale
di ingresso e delle sue tre copie spostate. Ogni volta che l’oggetto metro emette
un bang, un contatore viene incrementato (gli oggetti f, + 1 e mod 4). Questo
controlla quali delle ampiezze saranno cambiate. L’ampiezza stessa è calcolata
7.10. Esempi 205
Riverberatore
L’esempio G08.reverb.pd (Figura 7.31) mostra un semplice riverberatore arti-
ficiale, in sostanza una realizzazione del progetto mostrato nella Figura 7.15.
Quattro linee di ritardo vengono alimentate con l’input e con la propria uscita
ricircolante. Le uscite dei ritardi vengono mescolate utilizzando matrici di ro-
tazione, costruite da rotazioni elementari di π/4 come nella Figura 7.13 (parte
a).
p
La moltiplicazione di normalizzazione (per 1/2 ad ogni passo) viene assor-
bita nel guadagno di feedback, che quindi non può superare 1/2. A un guadagno
di feedback di esattamente 1/2, tutta l’energia che lascia le linee di ritardo viene
reinserita in esse, quindi la riverberazione dura per sempre.
La Figura 7.32 mostra l’interno dell’abstraction reverb-echo utilizzata nel
riverberatore. I due ingressi sono miscelati (usando la stessa matrice di rotazio-
ne e lasciando nuovamente la ri-normalizzazione a più tardi). Un canale viene
quindi ritardato. I tempi di ritardo sono definiti per crescere approssimativa-
mente in maniera esponenziale; questo assicura uno schema di echi regolare e
diffuso.
Sono possibili molte estensioni di questa idea delle quali ne citeremo solo
alcune. È naturale, innanzitutto, mettere filtri passa-basso alla fine delle linee
di ritardo, per imitare il decadimento, tipicamente più veloce, delle frequenze
alte rispetto a quelle basse. È anche comune utilizzare più di quattro ritardi
ricircolanti; un riverberatore nella distribuzione Pd ne usa sedici. Infine è norma
comune consentire un controllo separato delle ampiezze dei primi echi (ascoltati
direttamente) e di quella del segnale ricircolante; parametri come questi sono
pensati per controllare le qualità soniche descritte come “presenza”, “calore”,
“chiarezza” e cosı̀ via.
Pitch shifter
L’esempio G09.pitchshift.pd (Figura 7.33) mostra una realizzazione del pitch
shifter descritto nel paragrafo 7.9. Una linea di ritardo (definita e scritta altrove
nella patch) viene letta usando due oggetti vd∼. I tempi di ritardo variano tra
un ritardo minimo (fornito dal controllo “delay”) e il minimo più la dimensione
di una finestra (il controllo “window”).
206 Capitolo 7. Spostamenti temporali e ritardi
inlet~
outlet~ outlet~
Do a power-conserving
Tap outputs here.
+~ mix of them in pairs.
-~ +~ -~
First combine (1, 2) and
(3, 4)...
+~ +~ -~ -~ then (1, 3) and (2, 4)
feedback gain on a scale
of 0-100 controls reverb
/ 200 time.
inlet
min 100
*~ *~ *~ *~
max 0
Figure 7.31:
Figura 7.31:AnUn
artificial reverberator.
riverberatore artificiale.
220 7.10. Esempi CHAPTER 7. TIME SHIFTS AND
207DELAYS
inlet~ inlet~
inlet~ inlet~
+~ -~
+~ -~
delwrite~ $1 $2
delwrite~ $1 $2
delread~ $1 $2
delread~ $1 $2
outlet~
outlet~ outlet~
outlet~
r transpose
7 <-- transposition r window
r transpose (halftones)
80 <--window
7 * 0.05776
<-- transposition r window (msec)
exp
(halftones) max 1
80 <--window
* 0.05776 speed
1.4982 (msec)
change max 1
exp - 1
* 0.001
speed t b f
1.4982* -1 delay
change
(msec)
- 1 tape head* 0.001
/ rotation freq r delay
t b f pack 0 200
* -1 -6.228 +~ 0.5 0 delay
line~ (msec)
phasor~
tape head wrap~ max 1.5
/ rotation freq r delay
pack 0 200
-6.228-~ 0.5 +~*~ 0.5 -~pack
0.5 0
*~
200
line~
0
*~ 0.5 +~ line~
*~ 0.5 +~
phasor~ wrap~ max 1.5
cos~ vd~ G09-del
cos~ vd~ G09-del
*~ pack 0 200
-~ 0.5 *~ -~*~0.5 *~
+~ line~
*~ 0.5| +~
(OUT) *~ 0.5 +~
cos~ vd~ G09-del
cos~ vd~ G09-del
Figure
Figura 7.33:
7.33: Un A pitch
pitch shifter
shifter conusing two variabili
due taps variableintaps
unainto
lineaa di
delay line.
ritardo.
*~
*~
+~
|
(OUT)
Figure 7.33: A pitch shifter using two variable taps into a delay line.
208 Capitolo 7. Spostamenti temporali e ritardi
Esercizi
1. Un numero complesso ha modulo uno e argomento π/4. Quali sono le sue
parti reale e immaginaria?
2. Un numero complesso ha modulo uno e parte reale 1/2. Qual è la sua
parte immaginaria? (Ci sono due valori possibili.)
3. Quale tempo di ritardo si deve dare ad un filtro a pettine in modo che il
suo primo picco di risposta in frequenza sia a 440 Hertz? Se la frequenza
di campionamento è 44100, quale frequenza corrisponderebbe al ritardo
intero più vicino?
4. Supponiamo di fare una variazione del filtro a pettine non-ricircolante in
modo che il segnale ritardato venga sottratto dall’originale anziché essere
sommato. Qual è la nuova risposta in frequenza?
5. Se si desidera effettuare un vibrato a 6 Hz con una linea di ritardo che varia
in maniera sinusoidale e se si desidera che il vibrato modifichi la frequenza
del 5%, quanto è necessario che sia grande la variazione di ritardo? Come
cambierebbe se si volesse che la stessa profondità del vibrato fosse a 12
Hertz?
6. Una sinusoide complessa X[n] ha frequenza 11025 Hertz, ampiezza 50 e
fase iniziale 135 gradi. Un’altra, Y [n], ha la stessa frequenza, ma ampiezza
20 e fase iniziale di 45 gradi. Qual è l’ampiezza e la fase iniziale della
somma di X e Y ?
7. Qual è la frequenza, la fase iniziale e l’ampiezza del segnale ottenuto
quando X[n] (sopra) viene ritardato di 4 campioni?
8. Mostrare che la risposta in frequenza di un filtro a pettine ricircolante, con
tempo di ritardo d e guadagno di feedback g, in funzione della frequenza
angolare ω, è uguale a:
Filtri
Nel capitolo precedente abbiamo visto che una rete di ritardo può avere una
risposta in frequenza non uniforme – un guadagno che varia in funzione della
frequenza. Le reti di ritardo modificano anche la fase dei segnali in ingresso
variabilmente dipendente della frequenza. Quando i tempi di ritardo usati sono
molto brevi, le proprietà più importanti di una rete di ritardo diventano la
sua risposta in frequenza e la sua risposta di fase. Una rete di ritardo che è
progettata appositamente per la sua risposta in frequenza o di fase è chiamata
un filtro.
Nei diagrammi a blocchi, i filtri sono mostrati come nella Figura 8.1 (parte
a). La curva mostrata all’interno del blocco fornisce una rappresentazione quali-
tativa della risposta in frequenza del filtro. La risposta in frequenza può variare
nel tempo e, a seconda della progettazione del filtro, è possibile utilizzare uno
o più controlli (o ingressi audio aggiuntivi) per modificarla.
Supponiamo che, seguendo la procedura del paragrafo 7.3, introduciamo una
sinusoide complessa con frequenza angolare ω, a ampiezza unitaria, in un filtro.
Ci aspettiamo di ottenere una sinusoide della stessa frequenza e con qualche
ampiezza, che dipende da ω. Ciò ci dà una funzione complessa H(ω), che viene
chiamata funzione di trasferimento del filtro.
La risposta in frequenza è il guadagno in funzione della frequenza ω. È
uguale al modulo della funzione di trasferimento. La risposta in frequenza di un
filtro viene normalmente rappresentata graficamente come in Figura 8.1 (parte
b). Una sinusoide in entrata, di ampiezza unitaria e frequenza ω, esce dal filtro
con modulo |H(ω)|.
A volte è utile conoscere anche la risposta di fase del filtro, pari a ∠(H(ω)).
Per una frequenza fissata ω, la fase dell’output del filtro sarà ∠(H(ω)) radianti
in anticipo rispetto alla fase in ingresso.
La progettazione e l’uso dei filtri sono un soggetto enorme: l’ampia gamma
di usi che un filtro può avere ci suggerisce un’ampia varietà di processi di pro-
gettazione dei filtri. In alcune applicazioni un filtro deve seguire esattamente
una risposta in frequenza prescritta, in altri è importante minimizzare i tempi
di calcolo, in altri la risposta di fase è importante e in altri ancora il filtro deve
comportarsi bene quando i suoi parametri cambiano rapidamente con il tempo.
209
224
210 CHAPTER 8. FILTERS
Capitolo 8. Filtri
gain
(a) (b)
Figure
Figura 8.1:
8.1: Representations
Rappresentazioniofdia un
filter: (a) (a)
filtro: in ainblock diagram; (b)
un diagramma a graph (b)
a blocchi; of
its frequency response.
un grafico della sua risposta in frequenza.
8.1 Taxonomy
Tassonomiaofdei
filters
filtri
Over
Durantethetutta
history of electronic
la storia music
della musica the technology
elettronica, for building
la tecnologia filters has
per la costruzione
changed
di filtri èconstantly, but certain kinds
cambiata costantemente, maofcerti
filters
tipireappear
di filtri often. In this
riappaiono section
spesso. In
we will give
questo some nomenclature
paragrafo for describing
forniremo alcune nomenclaturefilters of descrivere
per several generic,
filtri recurring
di diversi
types. Later we’ll
tipi, generici develop some
e ricorrenti. basic strategies
Successivamente for making filters
svilupperemo alcunewith desired
strategie di
characteristics, and finally
base per creare filtri we’ll discuss some
con le caratteristiche common
desiderate applications
e infine of filters
discuteremo in
alcune
electronic
applicazioni music.
comuni dei filtri nella musica elettronica.
ripple
stopband
attenuation
passband stopband
transition
band
Figura 8.2:
Figure 8.2: Terminology
Terminologiaforperdescribing
descriverethe la risposta
frequencyin response
frequenzaofdei filtri passa-
low-pass and
basso e passa-alto.
high-pass filters. TheL’asse orizzontale
horizontal axis isèfrequency
la frequenza
andethe l’asse verticale
vertical axis èisilgain.
gua-
Adagno. Viene
low-pass visualizzato
filter is shown; aun filtro passa-basso;
high-pass filter has theunsame
filtrofeatures
passa-alto ha le stesse
switched from
caratteristiche
right to left. commutate da destra a sinistra.
ripple
stopband
attenuation
passband
stopband
stopband transition
bands
Figure
Figura 8.3:
8.3: Terminology
Terminologiaforperdescribing
descriverethe
la frequency
risposta inresponse
frequenza of dei
band-pass and
filtri passa-
stop-band filters. The horizontal axis is frequency and the vertical axis
banda ed elimina-banda. L’asse orizzontale è la frequenza e l’asse verticale è is gain.
A
il band-pass
guadagno. filter is shown;
Viene a stop-band
visualizzato filter
un filtro would haveun
passa-banda; a contiguous stopband
filtro elimina-banda
surrounded by two passbands.
avrebbe una stop-band circondata da due bande passanti.
8.1. TAXONOMY OF FILTERS 227
and lowest gain in the passband, expressed in decibels. The ideal low-pass or
high-pass filter would have a ripple of 0 dB.
The stopband of a low-pass or high-pass filter is the frequency band over
which the filter is intended
bandwidthnot to transmit its input. The stopband attenuation
is the difference, in decibels, between the lowest gain in the passband and the
highest gain in the stopband. Ideally this would be infinite; the higher the
better.
Finally, a realizable filter, whose frequency response is always a continuous
function of frequency, must have a frequency band over which the gain drops
from the passband gain to the stopband gain; this is called the transition band.
The thinner this band can be made, the more nearly ideal the filter.
high
frequency
gain
crossover frequency
Figure
Figura8.5:
8.5:AUn
shelving filter, showing
filtro shelving, low and
che mostra il high frequency
guadagno gain,
a bassa and crossover
e alta frequenza
frequency.
e la frequenza di crossover.
guadagno di potenza del picco (vale a dire, il guadagno è entro 3 decibel del
suo massimo). La larghezza di banda è la larghezza, in unità di frequenza, della
banda passante. La frequenza centrale è il punto di massimo guadagno, che è
approssimativamente il punto medio della banda passante.
bandwidth
8.1.3 Filtri di equalizzazione
in-band
In alcune applicazioni, come l’equalizzazione,
gain l’obiettivo non è quello di passare
segnali a determinate frequenze, eliminandone altre, ma di effettuare regolazioni
controllabili, aumentando o attenuando un segnale, su una gamma di frequenze,
tramite un guadagno desiderato. Due tipi di filtri sono utili per questo scopo.
In primo luogo, viene utilizzato un filtro shelving (Figura 8.5) per aumentare o
ridurre selettivamentegain
out-of-band l’estremità bassa o alta della gamma delle frequenze. Al di
sotto di una frequenza di crossover selezionabile, il filtro tende verso un guadagno
a bassa frequenza, e al di sopra di essa tende verso uno ad alta frequenza. La
frequenza di crossover, il guadagno a bassa frequenza e il guadagno ad alta
frequenza possonocenter frequency
essere regolati indipendentemente.
In secondo luogo, un peaking filter (filtro di picco, Figura 8.6) è in grado di
aumentare o attenuare i segnali entro un intervallo di frequenze. La frequenza
Figure
centrale8.6:
e laAlarghezza
peaking filter, with(che
di banda controllable center frequency,
insieme controllano bandwidth,
l’intervallo and
di frequenze
in-band and out-of-band
interessate), e i guadagnigains.
in-banda e fuori-banda sono regolabili separatamente.
Gli equalizzatori parametrici utilizzano spesso due filtri shelving (per rego-
lare le estremità basse e alte dello spettro) e due o tre filtri di picco per regolare
le bande in mezzo.
Figure 8.5: A shelving filter, showing low and high frequency gain, and crossover
frequency.
bandwidth
in-band
gain
out-of-band gain
center frequency
Figure
Figura8.6:
8.6:A Un
peaking
filtrofilter, with con
peaking, controllable
frequenzacenter frequency,
centrale, bandwidth,
larghezza ande
di banda
in-band and
guadagni out-of-band
in-banda gains. controllabili.
e fuori-banda
IN
d=1
OUT
Figure 8.7: A delay network with a single-sample delay and a complex gain Q.
Figura 8.7: Una rete di ritardo con un ritardo di un singolo campione e un
This is the non-recirculating elementary filter, first form. Compare the non-
guadagno complesso Q. Questo è il filtro elementare non-ricircolante, prima
recirculating comb filter shown in Figure 7.3, which corresponds to choosing
forma. Confrontandolo con il filtro a pettine non-ricircolante mostrato in Figura
Q = −1 here.
7.3, questo corrisponde, qui, a scegliere Q = −1.
230 CHAPTER 8. FILTERS
8.2 Elementary filters
We saw in Chapter 7 how to predict the frequency and phase response of delay
networks. The art of filter design lies in finding a delay network whose transfer
function (whichimaginary
controls the frequency and phase response) has a desired shape.
We will develop an approach to building such delay networks out of the two types
of comb filters developed in Chapter 7: recirculating
Z and non-recirculating. Here
we will be interested in the special case where the delay is only one sample in
length. In this situation, the frequency responses
Q
shown inZ-Q
Figures 7.6 and 7.10
no longer look like combs; the second r peak recedes all the way to the sample
rate, 2π radians, when d = 1. Since only frequencies between 0 and the Nyquist
frequency (π radians) are audible, in effect there is only one peak when d = 1.
In the comb filters shown in Chapter 7, the peaks
real 1 are situated at DC (zero
frequency), but we will often wish to place them at other, nonzero frequencies.
-1
This is done using delay networks—comb filters—with complex-valued gains.
QZ
-1
1-QZ
8.2.1 Elementary non-recirculating filter
The non-recirculating comb filter may be generalized to yield the design shown
in Figure 8.7. This is the elementary non-recirculating filter, of the first form.
Its single, complex-valued parameter Q controls the complex gain of the delayed
signal subtracted from the original one.
To find its frequency response, as in Chapter 7 we feed the delay network a
complex sinusoid 1, Z, Z 2 , . . . whose frequency is ω = arg(Z). The nth sample
of the input is Z n and that of the output is
Figure 8.8: Diagram for calculating −1 the nfrequency response of the non-
Figura 8.8: Diagramma per il calcolo
(1 − QZ della)Zrisposta in frequenza del filtro ele-
recirculating elementary filter (Figure 8.7). The frequency response is given
mentare non-ricircolante (Figura 8.7). La risposta in frequenza è data dalla
by the length of the segment connecting Z to Q in the complex plane.
lunghezza del segmento che collega Z a Q nel piano complesso.
H(Z) = 1 − QZ −1
This can be analyzed graphically as shown in Figure 8.8. The real numbers r
and α are the magnitude and argument of the complex number Q:
Q = r · (cos(α) + i sin(α))
The gain of the filter is the distance from the point Q to the point Z in the
complex plane. Analytically we can see this because
8.2.
216 ELEMENTARY FILTERS 231
Capitolo 8. Filtri
gain
|Q|=1
0.5
0
0 frequency 2
|1 − QZ −1 | = |Z||1 − QZ −1 | = |Q − Z|.
8.2.2 Non-recirculating filter, second form
Graficamente, il numero QZ −1 è proprio il numero Q ruotato all’indietro (in
Sometimes we will need a variant of the filter above, shown in Figure 8.10, called
senso orario) per la frequenza angolare ω della sinusoide in entrata. Il valore
the elementary non-recirculating filter, second form. Instead of multiplying the
|1 − QZ −1 | è la distanza da QZ −1 a 1 nel piano complesso, uguale alla distanza
delay output by Q we multiply the direct signal by its complex conjugate Q. If
da Q a Z.
Poiché la frequenzaAdell’input
= a + bi = spazia da 0 a+2π,
r · (cos(α) il punto Z si muove in senso
i sin(α))
orario attorno al cerchio unitario. Al punto in cui ω = α, la distanza è al
is any complex
minimo, pari a number,
1 − r. Ilits complexsiconjugate
massimo is defined
verifica quando Z èas:
al punto opposto del
cerchio. La Figura 8.9Amostra
= a − bi = r · (cos(α) − i sin(α)) per tre diversi valori
la funzione di trasferimento
di r = |Q|.
Graphically this reflects points of the complex plane up and down across the
real
8.2.2 axis. Filtro
The transfer function of the new
non-ricircolante, filter is forma
seconda
A volte abbiamo bisogno di una H(Z)variante, Z −1
= Q −mostrata in Figura 8.10, del filtro di
cui sopra chiamata filtro elementare non-ricircolante,
This gives rise to the same frequency response as before seconda
since forma. Invece di
moltiplicare l’output di ritardo per Q, moltiplichiamo il segnale diretto per il
coniugato complesso Q.|QSe − Z −1 | = |Q − Z −1 | = |Q − Z|
−1
Here we use the fact that
A =Za= +Z ib =, rfor any unit
· (cos(α) + icomplex
sin(α)) number Z, as can be
verified by writing out ZZ in either polar or rectangular form.
Although
è un the two forms
numero complesso, of coniugato
il suo the elementary non-recirculating
complesso filter have the
è definito come:
same frequency response, their phase responses are different; this will occasion-
a − ib form.
A =second
ally lead us to prefer the = r · (cos(α) − i sin(α)).
H(Z) = Q − Z −1 .
232 8.2. Filtri elementari CHAPTER 8. 217FILTERS
IN
Q d=1
OUT
Figure Figura
8.10: 8.10:
The Ilelementary non-recirculating
filtro elementare filter, forma.
non-ricircolante, seconda second form.
(1 − Q1 Z −1 ) · · · (1 − Qj Z −1 )
H(Z) =
(1 − P1 Z −1 ) · · · (1 − Pk Z −1 )
The frequency response of the resulting compound filter is the product of those
of the elementary ones. (One could also combine elementary filters by adding
8.2.
218 ELEMENTARY FILTERS 233
Capitolo 8. Filtri
IN
|P|=0.75
0.5
OUT
d=1
0
P
0 frequency 2
(a) (b)
otteniamo
n
A · H(Z) · Z n + A · H(Z) · Z
che, analizzandola, risulta un’altra sinusoide reale. Qui stiamo utilizzando due
proprietà dei coniugati complessi. Innanzitutto, possiamo sommarli e moltipli-
carli a piacere:
A+B =A+B
AB = A · B
e, in secondo luogo, se si somma qualcosa al suo coniugato complesso si ottiene
un numero reale, ed è infatti il doppio della sua parte reale:
A + A = 2re(A).
Questo risultato per due filtri coniugati si estende a qualsiasi filtro composto; in
generale, otteniamo sempre un output a valori reali da un input a valori reali se
ogni coefficiente Qi e Pi , nel filtro composto, è a valori reali, oppure se appare
in coppia con il suo coniugato complesso.
(nel secondo passaggio abbiamo usato il fatto che si può coniugare tutto o parte
di un’espressione, senza cambiare il risultato, se si vuole prendere solo la parte
reale. Il quarto passaggio fa la stessa cosa all’indietro). Confrontando l’input
e l’output, vediamo che l’effetto di passare un segnale reale attraverso un filtro
complesso a un polo, quindi prendere la parte reale, equivale a far passare il
segnale attraverso un filtro a due poli e uno zero, con funzione di trasferimento
uguale a
1 − re(P )Z −1
Hre (Z) = .
(1 − P Z −1 )(1 − P Z −1 )
220 Capitolo 8. Filtri
im(P )Z −1
Him (Z) = .
(1 − P Z −1 )(1 − P Z −1 )
Quindi, prendere la parte reale o quella immaginaria dell’output di un filtro a un
polo fornisce filtri con due poli coniugati. Le due parti possono essere combinate
per sintetizzare filtri con altri possibili numeratori; in altre parole, con un filtro
ricircolante complesso possiamo sintetizzare un filtro che agisce sui segnali reali
con due poli (complessi coniugati) ed uno zero (reale).
Questa tecnica, nota come partial fractions, può essere ripetuta per un qual-
siasi numero di iterazioni in serie finché calcoleremo l’appropriata combinazione
di parti reali e immaginarie dell’output di ciascuna iterazione per formare l’input
(reale) dell’iterazione successiva. Non esiste alcuna scorciatoia simile per i filtri
non-ricircolanti; per loro è necessario calcolare esplicitamente ciascun membro
di ciascuna coppia di coniugati complessi.
half-power
point
0 2
(b)
(a)
8.3.1
che One-pole
un filtro a pettinelow-pass
ricircolante filter
con lunghezza di ritardo d = 1 e si applica
l’analisi del paragrafo 7.4. Il guadagno massimo si verifica a frequenza zero,
The one-pole low-pass filter has a single pole located at a positive real number
corrispondente al punto sul cerchio più vicino al punto p. Qui il guadagno è
p, as pictured in Figure 8.12. This is just a recirculating comb filter with delay
1/(1 − p). Supponendo che p sia vicino a uno, se ci spostiamo ad una distanza
length d = 1, and the analysis of Section 7.4 applies. The maximum gain occurs
at 1a −
di p verso of
frequency l’alto
zero,o corresponding
verso il √bassotodall’asse
the pointrealeon the (orizzontale),
circle closestlatodistanza
the
aumenta di un fattore di circa 2 e quindi
point p. The gain there is 1/(1 − p). Assuming p is close to one,ci aspettiamo che ilif punto
we move di ametà
potenza
distance venga
of 1 − pottenuto
units upad or una
down frequenza angolare di circa 1 − p.
√ from the real (horizontal) axis, the distance
Questo calcolo è spesso
increases by a factor of about 2, and fatto in senso
so weinverso:
expect the se half-power
vogliamo che pointil to
punto
di metà potenza si trovi ad una
occur at an angular frequency of about 1 − p. determinata frequenza angolare ω, poniamo
p =This 1 −calculation
ω. Questa is approssimazione
often made in reverse: funzionaif webene
wish solo se il valore
the half-power pointdi ω è
ben
to liesotto
at a π/2,
givencome
angular spesso accadeω,inwepratica.
frequency set p = Si 1− è ω.
soliti
Thisnormalizzare
approximation il filtro
passa-basso
only works well a unifpolo, moltiplicandolo
the value of ω is well per underil fattore it often 1is−inp practice.
π/2, ascostante per ottenere
It isguadagno
un customarydito1 normalize
alla frequenza the one-pole low-pass filter,
zero; frequenze multiplying
non-nulle avranno it by the un
quindi
constant factor
guadagno 1 − ap uno.
inferiore in order to give a gain of 1 at zero frequency; nonzero
frequencies
La risposta will then get a gainè less
in frequenza than one. in Figura 8.12 (parte b). Le fre-
rappresentata
quenzeThe udibili
frequency response is
raggiungono graphed
solo la metà in del
Figure 8.12il(part
grafico; b). The
lato destro audible
della curva di
frequencies
risposta only reachsitotrova
in frequenza the middle of thedella
al di sopra graph; the right-hand
frequenza di Nyquist sideπ.
of the
frequency
Il filtroresponse
passa-basso curve all polo
a un lies above
vienethe Nyquist
spesso frequency
utilizzato π.
per cercare andamenti in
segnali rumorosi. Ad esempio, se si utilizza un controller fisico e signals.
The one-pole low-pass filter is often used to seek trends in noisy For
ci si preoccupa
instance, if you use a physical controller and only care
solo di modifiche nell’ordine di 1/10 di secondo, è possibile regolare i valori about changes on the con
order of 1/10 second or so, you can smooth the values with a low-pass filter
un filtro passa-basso, il cui punto a metà potenza è 20 o 30 cicli al secondo.
whose half-power point is 20 or 30 cycles per second.
(b)
(a)
Figure
Figura8.13:
8.13: One-pole, one-zeroad
Filtro passa-alto high-pass
un polo filter:
e uno (a)
zero:pole-zero diagram;polo-zero;
(a) diagramma (b)
frequency response
(b) risposta (from zero
in frequenza (datozero
Nyquist frequency).di Nyquist).
alla frequenza
distorsioni.
8.3.2 Un altro nome
One-pole, per una
one-zero componente
high-pass di segnale costante è “DC”, che
filter
significa “direct current”.
Un modo
Sometimes an semplice
audio signale pratico
carriesper
an rimuovere
unwanted la componente
constant offset, di
orfrequenza
in other zero
da un segnale audio è quello di utilizzare un filtro passa-basso
words, a zero-frequency component. For example, the waveshaping spectra ad un polo
of per
estrarla e quindi sottrarre il risultato dal segnale originale.
Section 5.3 almost always contain a constant component. This is inaudible, La funzione di
trasferimento
but, risultante
since it specifies è 1 meno
electrical power la funzione
that di your
is sent to trasferimento delpresence
speakers, its filtro passa-
basso: the level of loudness you can reach without distortion. Another name
reduces
for a constant signal component 1−p 1 − Z −1
H(Z) = 1is−“DC”, meaning = p “direct current”.
.
1 − pZ −1 1 − pZ −1
An easy and practical way to remove the zero-frequency component from an
Il fattore
audio −to
signal1 is p nel
use numeratore della funzione
a one-pole low-pass di trasferimento
filter to extract it, and thenpassa-basso
subtract è il
fattore
the di from
result normalizzazione necessario
the signal. The in modo
resulting chefunction
transfer il guadagno
is onesia 1 a frequenza
minus the
zero. function of the low-pass filter:
transfer
Esaminando il lato destro dell’equazione (confrontandolo con la formula ge-
nerale dei filtri composti), vediamo
1 −che
p c’è ancora un polo nel numero reale p,
1 − Z −1
e adesso c’è anche H(Z)
uno zero −
= 1 (one-zero) =
nel p
punto
1 − pZ −1 1 − pZ −1 Il diagramma polo-zero è
1.
mostrato in Figura 8.13 (parte a) e la risposta in frequenza in parte (b) (da qui
di seguito riportiamo solo le risposte in frequenza fino alla frequenza di Nyquist
The factor of 1 − p in the numerator of the low-pass transfer function is the
π; nell’esempio precedente avevamo tracciato la risposta in frequenza fino alla
normalization factor needed so that the gain is one at zero frequency.
frequenza di campionamento, 2π).
By examining the right-hand side of the equation (comparing it to the general
formula for compound filters), we see that there is still a pole at the real number
p,8.3.3
and thereFiltro
is now shelving
also a zero at the point 1. The pole-zero plot is shown in
Figure 8.13 (part a),
Generalizzando il filtro and the frequency
ad un polo e response
uno zeroin(one-pole
part (b). one-zero)
(Henceforth, wesopra,
visto
will only plot frequency responses to the Nyquist frequency π; in
supponiamo di mettere lo zero in un punto q, un numero reale vicino, ma in- the previous
example
feriore, we
a 1.plotted it all
Il polo, al the wayp,upè to
punto inthe sample rate,
posizione simile2π.)
e può essere maggiore o
minore di q, cioè rispettivamente a destra o a sinistra, ma con entrambi q e p
all’interno del cerchio unitario. Questa situazione è illustrata nella Figura 8.14.
Nei punti del cerchio lontani da p e q, gli effetti del polo e dello zero sono
quasi inversi (le distanze da essi sono quasi uguali), quindi il filtro passa quelle
frequenze quasi inalterate. In un intorno di p e q, d’altra parte, il filtro avrà un
guadagno maggiore o minore di uno a seconda di chi, tra p e q sia più vicino
8.3. Progettazione dei filtri 223
238 CHAPTER 8. FILTERS
imaginary
1-d
q p real
0 d
(b)
(a)
Figure 8.14: One-pole, one-zero shelving filter: (a) pole-zero diagram; (b) fre-
Figura 8.14: Filtro shelving ad un polo e uno zero: (a) diagramma polo-zero;
quency response.
(b) risposta in frequenza.
8.3.3 Shelving
al cerchio. filter
Questa configurazione, dunque, funge da filtro shelving a bassa
frequenza (per fare un filtro shelving ad alta frequenza, facciamo la stessa cosa,
Generalizing the one-zero, one-pole filter above, suppose we place the zero at a
solo posizionando p e q vicini a −1 invece di 1).
point q, a real number close to, but less than, one. The pole, at the point p, is
Per trovare
similarly situated,i parametri
and mightdibeuneither
filtrogreater
shelving, data
than una than
or less frequenza
q, i.e.,ditotransi-
the
zione desiderata ω (in unità angolari) e un guadagno per
right or left, respectively, but with both q and p within the unit circle. la bassa frequenzaThis g,
innanzitutto
situation scegliamo una
is diagrammed distanza
in Figure media d, come mostrato in figura, dal polo
8.14.
e dallo zero al bordo del cerchio. Per valori di d piccoli, la regione di influenza
At points of the circle far from p and q, the effects of the pole and the zero
è di circa d radianti, quindi impostiamo semplicemente d = ω per ottenere la
are nearly inverse (the distances to them are nearly equal), so the filter passes
frequenza di transizione desiderata.
those frequencies nearly unaltered. In the neighborhood of p and q, on the other
√ √
hand, Quindi mettiamo
the filter will haveil polo
a gainingreater
p = 1or − less
d/ thang e lo
onezero in q = on
depending 1− d g.of Il
which
pguadagno a frequenza
or q is closer zero This
to the circle. è allora
configuration therefore acts as a low-frequency
shelving filter. (To make a high-frequency 1 − q shelving filter we do the same thing,
only placing p and q close to -1 instead of = 1.)g
1−p
To find the parameters of a shelving filter given a desired transition frequency
ωcome desiderato.
(in angular units)Ad andesempio, in figura,
low-frequency gaindg,è first
0.25 we
radianti
chooseean g average
è 2. distance
d, as pictured in the figure, from the pole and the zero to the edge of the circle.
For
8.3.4 small Filtro
values ofpassa-banda
d, the region of influence is about d radians, so simply set
d = ω to get the desired transition frequency.
Partendo dai the
tre pole
tipi di √ √ poli e zeri a
Then put atfiltri
p = 1mostrati
− d/ g in andprecedenza,
the zero attutti
q = dotati
1 − d di g. The gain
valori reali, ora li trasformiamo per operare su bande situate al di fuori dell’asse
reale. I filtri passa-basso, passa-alto e shelving diventano quindi filtri passa-
banda, elimina-band e peaking. In primo luogo sviluppiamo il filtro passa-
banda. Supponiamo di volere una frequenza centrale a ω radianti e una larghezza
di banda pari a β. Prendiamo il filtro passa-basso con frequenza di taglio β; il
224
8.3. DESIGNING FILTERS
Capitolo 8. 239
Filtri
P
1
P
2
0
(b)
(a)
Figure 8.15:
Figura 8.15: Two-pole band-pass filter:
Filtro passa-banda a due(a) pole-zero
poli: diagram; (b)
(a) diagramma frequency
polo-zero; (b)
response.
risposta in frequenza.
at zero
suo polofrequency is then
si trova, per valori piccoli di β, approssimativamente su p = 1 − β. Ora
1−q
ruotiamo questo valore di ω radianti nel = piano
g complesso, cioè moltiplichiamolo
1 −p
per il numero complesso cos(ω) + i sin(ω). Il nuovo polo si trova in
as desired. For example, in the figure, d is 0.25 radians and g is 2.
P1 = (1 − β)(cos(ω) + i sin(ω)).
8.3.4
Per Band-pass
ottenere un output filter
a valori reali, questo deve essere associato ad un altro
polo:
Starting with the three filter types shown above, which all have real-valued poles
P2 = P1them
and zeros, we now transform − operate
= (1to on −
β)(cos(ω) i sin ω)).
bands located off the real axis.
IlThe low-pass, polo-zero
diagramma high-pass,risultante
and shelving filters will
è mostrato in then become
Figura 8.15. band-pass, stop-
band,
Il picco è approssimativamente (non esattamente) allafilter.
and peaking filters. First we develop the band-pass Suppose
frequenza we
centrale
want a center frequency at ω radians and a bandwidth of β. We
desiderata ω, e la risposta in frequenza scende di 3 decibel a circa β radianti altake the low-
pass
di filter
sopra e alwith cutoff
di sotto di frequency β; èitsauspicabile
essa. Spesso pole is located, for small
normalizzare values
il filtro perofavere
β,
roughly at p = 1 − β. Now rotate this value by ω radians in the complex
un guadagno di picco vicino all’unità; questo viene fatto moltiplicando l’input o plane,
i.e., multiply by the complex number cos ω + i sin ω. The new pole is at:
l’output per il prodotto delle distanze dei due poli dal picco sul cerchio o (molto
approssimativamente):
P1 = (1 − β)(cos ω + i sin ω)
β · (β + 2ω).
To get
Per a real-valued
alcune output,
applicazioni this must aggiungere
è auspicabile be paired with
unoanother
zero neipole:
punti 1 e −1, in
modo che il guadagno scenda a zero alle frequenze angolari 0 e π.
P2 = P1 = (1 − β)(cos ω − i sin ω)
8.3.5 Filtri
The resulting peaking
pole-zero plot ised elimina-banda
as shown in Figure 8.15.
The peak is approximately (not exactly) at the desired center frequency ω,
Allo stesso modo, un filtro peaking viene ottenuto da un filtro shelving ruotando
and the frequency response drops by 3 decibels approximately β radians above
il polo e lo zero e fornendo un polo e uno zero coniugati, come mostrato in Figura
and below it. It is often desirable to normalize the filter to have a peak gain
8.16. Se la frequenza centrale desiderata è ω, e i raggi del polo e dello zero (come
per il filtro shelving) sono p e q, allora collochiamo il polo e lo zero superiori in
P1 = p · (cos(ω) + i sin(ω)),
Q1 = q · (cos(ω) + i sin(ω)).
8.3. Progettazione dei filtri 225
240 CHAPTER 8. FILTERS
(b)
(a)
Figure 8.16:
Figura 8.16: Un
A peaking
filtro difilter:
picco:(a)(a)
pole-zero diagram;
diagramma (b) frequency
polo-zero; response.
(b) risposta in fre-
Here the filter is set to attenuate by 6 decibels at the center frequency.
quenza. Qui il filtro è impostato per attenuare di 6 decibel alla frequenza
centrale.
near unity; this is done by multiplying the input or output by the product of
the distances of the two poles to the peak on the circle, or (very approximately):
Come caso speciale, posizionando lo zero sulla circonferenza unitaria si ha un
filtro elimina-banda; in questo casoβ ∗il(βguadagno
+ 2ω) è zero sulla frequenza centrale.
Questo è analogo al filtro passa-alto ad un polo e uno zero visto sopra.
For some applications it is desirable to add a zero at the points 1 and −1, so
that the gain drops to zero at angular frequencies 0 and π.
8.3.6 Filtri di Butterworth
8.3.5 Peaking and stop-band filter
Un filtrosame
In the con way,
un polo reale e filter
a peaking uno zero reale può
is obtained essere
from configurato
a shelving filtercome un filtro
by rotating
shelving,
the pole and the zero, and by providing a conjugate pole and zero, as shown inun
come un filtro passa-alto (mettendo lo zero nel punto 1) o come
filtro
Figure passa-basso
8.16. If the(mettendo lo zero
desired center in −1).isLe
frequency ω, risposte in frequenza
and the radii di questi
of the pole and
filtri
zero sono
(as forabbastanza
the shelving smussate;
filter) areinpaltre parole,
and q, then wele regioni
place the di the
transizione
upper polesono
ampie.
and zeroSpesso
at è auspicabile ottenere un filtro più nitido, sia shelving, passa-
basso o passa-alto, in cui le due P1 =bande siano
p · (cos ω + più
i sinpiatte
ω) e separate da una regione
di transizione più ristretta.
Q1 = q · (cos ω + i sin ω)
Una procedura presa in prestito dal mondo dei filtraggio analogico trasforma
As a reali,
filtri specialadcase, placing
un polo thezero
e uno zero nei
on corrispondenti
the unit circle gives a stop-band
filtri di filter;
Butterworth, che
in this regioni
hanno case thedigain at the center
transizione frequency
più strette. is zero.
Questa This is èanalogous
procedura descrittatochiara-
the
one-pole,
mente one-zero
ed in maniera high-pass
elegantefilter above. capitolo di [Ste96]. Il modo di ottenerli
nell’ultimo
richiede un background matematico maggiore di quello che abbiamo sviluppato
qui
8.3.6e noi semplicemente
Butterworth mostreremo
filters il risultato senza ricavarlo.
Per fare un filtro di Butterworth a partire da un filtro passa-alto, da uno
A filter with one real pole and one real zero can be configured as a shelving
passa-basso o da uno shelving, supponiamo che sia il polo che lo zero siano dati
filter, as a high-pass filter (putting the zero at the point 1) or as a low-pass
dall’espressione
filter (putting the zero at −1). The frequency responses of these filters are quite
1 − r2
(1 + r)2
Quindi, per ragioni che resteranno misteriose, sostituiamo il punto (che sia
il polo o lo zero) con n punti dati da:
(1 − r2 ) − (2r sin(α))i
1 + r2 + 2r cos(α)
dove α varia sui valori:
π 1 π 3 π 2n − 1
( − 1), ( − 1), . . . , ( − 1).
2 n 2 n 2 n
In altri termini, α è uno degli n angoli equidistanti tra π/2 e π/2. I punti sono
disposti nel piano complesso come mostrato in Figura 8.17. Essi si trovano su un
cerchio che passa per il punto reale di partenza e che interseca la circonferenza
unitaria in angoli retti.
Una buona stima per la frequenza di taglio o di transizione definita da questi
insiemi circolari di poli o zeri è semplicemente il punto in cui il cerchio interseca
la circonferenza unitaria, corrispondente a α = π/2. Questo dà il punto
(1 − r2 ) − 2ri
1 + r2
che, dopo qualche calcolo algebrico, fornisce una frequenza angolare pari a
β = 2 arctan(r).
La Figura 8.18 (parte a) mostra un diagramma polo-zero e una risposta in
frequenza per un filtro passa-basso di Butterworth con tre poli e tre zeri. La
parte (b) mostra la risposta in frequenza del filtro passa-basso e di tre altri filtri
ottenuti scegliendo diversi valori di β (e quindi di r) per gli zeri, ma lasciando
i poli stazionari. Mentre gli zeri avanzano da β = π a β = 0, il filtro, che inizia
come filtro passa-basso, diventa un filtro shelving e infine un passa-alto.
r=1
r=2 r=0.5
242 CHAPTER 8. FILTERS
= 3 /8
r=1
r=2 r=0.5
= /8
= - /8
= 3 /8
= -3 /8
= /8
= - /8
= -3 /8
shelf 2
3
hi-pass
3
shelf 1
hi-pass
low-pass
shelf 1
0
low-pass
(b)
(a) 0
(b)
(a)
Figure 8.18: Butterworth low-pass filter with three poles and three zeros: (a)
pole-zero plot. The poles are chosen for a cutoff frequency β = π/4; (b) fre-
Figure 8.18: Butterworth low-pass filter with three poles and three zeros: (a)
Figura
quency
pole-zero8.18:
plot.Filtro
responses Thefor passa-basso
fourare
poles filters di for
with
chosen Butterworth
the conconfiguration,
same frequency
a cutoff pole tre βpoli e tre(b)
= π/4; zeri:
with (a) dia-
fre-different
gramma
placements polo-zero.
of zeros
quency responses I poli
(but
for four sono
leaving
filters scelti
the
with per fixed).
thepoles
same una
pole frequenza
configuration, di with
The low-pass taglio
filterβresults
= π/4;from
different (b)
setting
risposte
placementsβin=of πzeros
for (but
frequenza theper zeros;
leaving thepoles
quattro
the two shelving
filtrifixed).
con la The filters
stessa
low-passcorrespond
configurazione
filter resultstofrom
β =
di 3π/10
poli, con
and β=
diverse
setting 2π/10,
= π for and
βcollocazioni finally
the degli
zeros; zerithe
the (ma
twohigh-pass
lasciando
shelving filter iscorrespond
i poli
filters obtained
fissati). tosetting
Il βfiltro βpassa-basso
= 3π/10 = 0. The
high-pass
corrisponde filter
and β = 2π/10, ad andis normalized
impostare
finally the for unitglifilter
β =high-pass
π per gain
zeri;isatiobtained
the filtri
due Nyquist frequency,
shelving
setting 0. Theand the
β = corrispondono
high-pass
aothers forfilter
β = 3π/10 unite is normalized
βgain
= at DC.e for
2π/10 unitil gain
infine filtroatpassa-alto
the Nyquist frequency,
viene ottenuto andimpostando
the
βothers
= 0. forIl unit
filtrogain at DC. viene normalizzato per avere guadagno unitario alla
passa-alto
frequenza di Nyquist, mentre gli altri per avere guadagno unitario al DC.
228 Capitolo 8. Filtri
|H(cos(ω) + i sin(ω))|.
Supponiamo ora di poter trovare una funzione razionale, R(Z), che distorce
il cerchio unitario in qualche modo desiderabile. Richiedere che R sia una fun-
zione razionale significa che può essere scritta come un quoziente di due polinomi
(ad esempio, la funzione di trasferimento H è una funzione razionale). Richie-
dere che R mandi punti del cerchio unitario su altri punti del cerchio unitario
corrisponde alla condizione che |R(Z)| = 1 ogni volta che |Z| = 1. È possibile
verificare facilmente che qualsiasi funzione della forma
An Z n + An−1 Z n−1 + · · · + A0
R(Z) = U ·
A0 Z n + A1 Z n−1 + · · · + An
J(Z) = H(R(Z)).
1 · Z2 + 0 · Z + 0
R(Z) = −Z 2 = − .
0 · Z2 + 0 · Z + 1
Geometricamente, questa scelta di R allunga il cerchio unitario uniformemente
a due volte la sua circonferenza e lo avvolge due volte. I punti 1 e −1 vengono
entrambi inviati al punto −1 e i punti i e −i vengono inviati al punto 1. La
funzione di trasferimento risultante è
1 − Z −2 (1 − Z −1 )(1 + Z −1 )
J(Z) = −2
= √ √ .
1 + gZ (1 − i gZ −1 )(1 + i gZ −1 )
(a) (b)
Figure
Figura8.19:
8.19: One-pole, one-zeroalow-pass
Filtro passa-basso un polo filter:
ed uno(a) pole-zero
zero: plot; (b)polo-
(a) diagramma plot for
2
the filter after the transformation R(Z) = −Z
zero; (b) diagramma del filtro risultante dopo la trasformazione R(Z) = −Z 2band-
resulting . The result is a .
pass filter with
Il risultato è uncenter frequency π/2.
filtro passa-banda con frequenza centrale π/2.
8.3.8
and applyFiltro passa-banda di Butterworth
the function
Possiamo applicare la trasformazione R(Z) −Z02· Z
1 · Z=2 + per+ convertire
0 il filtro di
2
R(Z)
Butterworth in un filtro = −Z =
passa-banda di −
alta qualità con frequenza centrale π/2.
0 · Z 2 + 0 · Z per
È quindi possibile applicare un’ulteriore trasformazione + 1spostare la frequen-
za centrale su qualsiasi
Geometrically, valore
this choice of Rdesiderato
stretchesωthe tra unit
0 e π.circle
La trasformazione sarà its
uniformly to twice
della forma
circumference and wraps it around itself The points 1 and −1 are both
aZ twice.
+b
sent to the point −1, and theS(Z) = i and −i are sent to the point 1. The
points
bZ + a
resulting transfer function is
dove a e b sono numeri reali e non entrambi possono essere uguali a zero. Questo
è un caso particolare della 1− Z −2 generale (1
forma − Z −1
fornita sopra Z −1
per
)(1 + le funzioni
) razionali
J(Z) =
che preservano il cerchio unitario.
−2
= Si ha √
S(1) =−11 e √ =−1−1 e le metà
S(−1)
1 + gZ (1 − i gZ )(1 + i gZ )
superiore e inferiore del cerchio unitario vengono trasformate simmetricamente
(se Z
The va su Wplots
pole-zero , allora
of ZH va su JWare
and ). L’effetto
shown inqualitativo dellaFrom
Figure 8.19. trasformazione
a low-passSfilter
è quello di comprimere i punti del cerchio unitario verso 1 o −1.
we ended up with a band-pass filter. The points i and −i which R sends to 1
In particolare,
(where the originaldata unagain
filter’s frequenza centrale
is highest) desiderata
become pointsω,ofvogliamo
highest scegliere
gain for the
S in modo che:
new filter.
S(cos(ω) + i sin(ω)) = i.
2
Se consideriamo
8.3.8 R = −Z come
Butterworth prima, e siafilter
band-pass H la funzione di trasferimento per
un filtro passa-basso di Butterworth, allora il filtro combinato, con funzione di
We can applyH(R(S(Z))),
trasferimento the transformation R(Z)
sarà un filtro = −Z 2 to
passa-banda conconvert thecentrale
frequenza Butterworth
ω.
filter into a per
Risolvendo high-quality
a e b si haband-pass filter with center frequency π/2. A further
transformation can then be applied to shift the center frequency to any desired
π ω π ω
value ω between 0 andaπ. = The − ), b = sin( will
cos( transformation − be ). of the form,
4 2 4 2
La nuova funzione di trasferimento, aZ + b avrà 2n poli e 2n zeri (se n è
H(R(S(Z))),
S(Z) =
il grado del filtro di Butterworth H). bZ +a
230
246 CHAPTER 8.Capitolo
FILTERS8. Filtri
3 3
(a) (b)
Figure 8.20:
Figura Butterworth
8.20: band-pass di
Filtro passa-banda filter: (a) pole-zero
Butterworth: (a)diagram; (b) frequency
diagramma polo-zero; (b)
response.
risposta in frequenza. La frequenza centrale è π/4. La larghezza dionbanda
The center frequency is π/4. The bandwidth depends both centerdipen-
frequency and on the bandwidth of the original Butterworth low-pass filter used.
de sia dalla frequenza centrale che dalla larghezza di banda del filtro originario
passa-basso di Butterworth utilizzato.
amplitude envelope) the output will behave smoothly as well. But one subtlety
arises when trying to normalize a recursive filter’s output when the feedback
Conoscere
gain is la funzione
close to one. di trasferimento
For example, suppose we è una
havebuona cosa, ma
a one-pole è ancora
low-pass filtermeglio
with gain 0.99 (for a cutoff frequency of 0.01 radians, or 70 Hertz at the usualessere
conoscere le posizioni di tutti i poli e gli zeri del nuovo filtro, che dobbiamo
in grado
sample di To
rate). calcolare usando
normalize filtri
this for elementari.
unit DC gain we Semultiply
Z è un bypolo della
0.01. funzione di
Suppose
trasferimento
now we wish to J(Z)double=theH(R(S(Z))),
cutoff frequency cioè by
se changing
J(Z) = the ∞ allora R(S(Z))
gain slightly to deve
essere
0.98. un ispolo
This finediexcept
H. Lothatstesso
the vale per gli zeri.
normalizing factorPer trovaredoubles.
suddenly un polo oIf uno
we zero
di J, poniamo
multiply R(S(Z))
the filter’s output =by Wthe, dove W è unfactor,
normalizing polo the
o uno zero will
output di H e risolviamo
suddenly,
although
rispettoperhaps only momentarily,
a Z. Questo dà: jump by a factor of two.
The trick is to normalize at the input h of the i2 filter, not the output. Figure 8.21
aZ+b
−
(part a) shows a complex recirculatingbZ+a = Wfeedback gain P , normalized
filter, with
at the input by 1 − |P | so that the peak gain is one. Part (b) shows the wrong
√
way to do it, multiplying at the output. aZ+b
bZ+a = ± −W
Things get more complicated when several elementary recirculating filters
√
are put in series, since the correct normalizing factor is in general a function of
Z = ±a √ −W −b
∓b if−W
all the coefficients. One possible approach, such +aa filter is required to change
rapidly, is to normalize each input separately as if it were acting alone, then
(qui a e b the
multiplying sono definiti
output, comebysopra
finally, e abbiamo
whatever further usato il fatto
correction che a2 + b2 = 1).
is needed.
Nella figura 8.20 è mostrato un esempio di diagramma polo-zero e di risposta
in frequenza di J.
8.3.10 Impulse responses of recirculating filters
In Section 7.4 we analyzed the impulse response of a recirculating comb filter, of
8.3.9 Coefficienti temporalmente variabili
which the one-pole low-pass filter is a special case. Figure 8.22 shows the result
for two progettazione
Nella low-pass filtersdiand one filtri
alcuni complex one-pole
ricorsivi, resonant
cambiare filter. All del
i coefficienti are filtro
ele- può
mentary recirculating filters as introduced in Section 8.2.3. Each is normalized
inserire energia nel sistema. Un analogo fisico è un bambino su un’altalena.
Il bambino oscilla avanti e indietro alla frequenza di risonanza del sistema, e
spingendo o tirando il bambino si inserisce o si estrae l’energia senza problemi.
Tuttavia, se si decide di accorciare la catena o di spostare l’altalena stessa, è
possibile inserire una quantità imprevedibile di energia nel sistema. La stessa
cosa può accadere quando si cambiano i coefficienti in un filtro ricircolante
risonante.
8.3. Progettazione
8.3. DESIGNING dei filtri
FILTERS 231
247
IN
IN
1-|P|
1-|P|
OUT d=1
OUT
d=1
P
P
(a - right) (b - wrong)
Figure
Figura 8.21: Normalizzazione
Normalizing a recirculating elementaryricircolante:
di un filtro elementare filter: (a) correctly, by
(a) corretta-
multiplying in the normalization
mente, moltiplicando il fattore difactor at the input;all’input;
normalizzazione (b) incorrectly, multiplying
(b) erroneamente,
at the output. all’output.
moltiplicandolo
I filtri
to have semplici
unit maximum ad un polo e uno zero usati qui non hanno questa difficoltà;
gain.
se ilInguadagno
the case of a low-passo filter,
di feedback di feed-forward
the impulse viene modificato
response regolarmente
gets longer (and lower)(nel
senso di un inviluppo di ampiezza) anche l’output si
as the pole gets closer to one. Suppose the pole is at a point 1 − 1/n (so thatcomporterà in modo rego-
lare.cutoff
the Ma una sottigliezza
frequency is 1/n si radians).
presenta quando si cerca di factor
The normalizing normalizzare l’output
is also 1/n. di
After
un filtro ricorsivo quando il guadagno
n points, the output diminishes by a factor of di feedback è vicino a uno. Ad esempio,
supponiamo di avere un filtro passa-basso a un polo con guadagno 0.99 (per una
frequenza di taglio di 0.01 radianti, ! o 70 "n
1 Hertz 1 all’usuale frequenza di campio-
namento). Per normalizzarlo per il guadagno 1 − ≈ unitario di DC, moltiplichiamo
n e
per 0.01. Supponiamo ora di voler raddoppiare la frequenza di taglio cambian-
do leggermente
where e is Euler’silconstant,
guadagnoabout a 0.98.
2.718.Questo va bene,
The filter can be tranne
said to che il fattore
have di
a settling
normalizzazione improvvisamente raddoppia. Se si moltiplica
time of n samples. In the figure, n = 5 for part (a) and n = 10 for part (b). l’output del filtro
pergeneral,
In il fattore thedisettling
normalizzazione, l’output is
time (in samples) improvvisamente,
approximately one anche oversethe
forse solo
cutoff
temporaneamente,
frequency (in angular units).salta di un fattore di due.
Il trucco
The è quello
situation getsdimore
normalizzare
interesting l’input
when delwefiltro,
lookl’output. La Figura
at a resonant 8.21
one-pole
(parte a) mostra un filtro ricircolante complesso, con guadagno
filter, that is, one whose pole lies off the real axis. In part (c) of the figure, the di feedback P,
normalizzato all’input da 1 − |P | in modo che il guadagno
pole P has absolute value 0.9 (as in part b), but its argument is set to 2π/10 di picco sia uno. La
parte (b)We
radians. mostra
get theil modo
samesbagliato
settling timeper farlo,
as in moltiplicando
part (b), but the all’output.
output rings at
the Le cose diventano
resonant frequencypiù complicate
(and quandoofdiversi
so at a period 10 samples filtri elementari ricircolanti
in this example).
vengono messi in serie, poiché il fattore di normalizzazione corretto è, in gene-
A natural question to ask is, how many periods of ringing do we get before
rale, una funzione di tutti i coefficienti. Un possibile approccio, se è richiesto
the filter decays to strength 1/e? If the pole of a resonant filter has magnitude
che tale filtro cambi rapidamente, è quello di normalizzare ciascun input sepa-
1 − 1/n as above, we have seen in Section 8.2.3 that the bandwidth (call it b)
ratamente come se stesse agendo da solo, quindi moltiplicare l’output, alla fine,
is about 1/n, and we see here that the settling time is about n. The resonant
per qualsiasi ulteriore correzione sia necessaria.
frequency (call it ω) is the argument of the pole, and the period in samples of
the ringing is 2π/ω. The number of periods that make up the settling time is
8.3.10 Risposte agli impulsi dei filtri ricircolanti
Nel paragrafo 7.4 abbiamo analizzato la risposta all’impulso di un filtro a pettine
ricircolante, di cui il filtro passa-basso a un polo è un caso speciale. La Figura
248 CHAPTER 8. FILTERS
1/5
(a)
1/(5e)
5 n
1/10
(b)
1/(10e)
10
1/10
(c) 1/(10e)
10
Figura
Figure 8.22: La risposta
8.22: The impulse all’impulso
response of di tre elementary
three filtri elementari ricircolanti
recirculating (a un
(one-pole)
polo), normalizzati per guadagno di picco 1: (a) passa-basso con P =
filters, normalized for peak gain 1: (a) low-pass with P = 0.8; (b) low-pass with 0.8; (b)
passa-basso con P = 0.9; (c) passa-banda (mostrata solo la parte
P = 0.9; (c) band-pass (only the real part shown), with |P | = 0.9 and a centerreale), con
|P | = 0.9 e of
frequency una frequenza centrale di 2π/10.
2π/10.
8.22 mostra il risultato per due filtri passa-basso e un filtro risonante complesso
a un polo. Tutti sono filtri elementari ricircolanti come introdotti nel paragrafo
8.2.3. Ciascuno è normalizzato per avere guadagno massimo unitario.
Nel caso di un filtro passa-basso, la risposta all’impulso diventa più lunga
(e più bassa) quando il polo si avvicina a uno. Supponiamo che il polo sia nel
punto 1 − 1/n (in modo che la frequenza di taglio sia 1/n radianti). Anche
il fattore di normalizzazione è 1/n. Dopo n punti, l’output diminuisce di un
fattore pari a
n
1 1
1− ≈
n e
dove e è la costante di Eulero, pari a circa 2.718. Si può dire che il filtro abbia
un tempo di stabilizzazione (settling time) di n campioni. Nella figura, n = 5 per
la parte (a) e n = 10 per la parte (b). In generale, il tempo di stabilizzazione
(in campioni) è di circa l’inverso della frequenza di taglio (in unità angolari).
8.3. Progettazione dei filtri 233
0.4
p=0.8
0
-0.8
0
0 2
Figura 8.23: Negativo della risposta di fase dei filtri all-pass con diverse posizioni
Figure 8.23: Phase response of all-pass filters with different pole locations p.
p del polo. Quando il polo si trova a zero, il filtro si riduce a un ritardo di un
When
campione. pole is located at zero, the filter reduces to a one-sample delay.
the
per quattrosample
crossovers, scelte p, a valori
rate reali, del
converters, andcoefficiente.
DC removalA(which
frequenze
we pari
have aalready
0, π e
2π, lain risposta
used di fase è proprio
earlier chapters). quella we’ll
Here, though, di unberitardo di unwith
concerned campione; ma per
the specifically
le frequenze
musical tra questi valori, la risposta di fase è piegata verso l’alto o verso il
applications.
basso a seconda del coefficiente.
I coefficienti complessi forniscono curve di risposta di fase simili, ma le fre-
quenze alle quali attraversano la linea diagonale nella figura vengono spostate
a secondaSubtractive
8.4.1 dell’argomento synthesis
del coefficiente P .
Subtractive synthesis is the technique of using filters to shape the spectral en-
8.4 Applicazioni
velope of a sound, forming another sound, usually preserving qualities of the
original sound such as pitch, roughness, noisiness, or graniness. The spectral
I filtri vengono utilizzati in un’ampia gamma di applicazioni sia in ingegneria
envelope of the resulting sound is the product of the spectral envelope of the
audio che in musica elettronica. Le prime includono, ad esempio, equalizzatori,
original sound with the frequency response of the filter. Figure 8.24 shows a
speaker crossover, convertitori di frequenza di campionamento e rimozione DC
possible configuration of source, filter, and result.
(che abbiamo già utilizzato nei capitoli precedenti). Qui, però, ci preoccuperemo
The
delle filter mayspecificatamente
applicazioni be constant or musicali.
time-varying. Already in wide use by the
mid 1950s, subtractive synthesis boomed with the introduction of the voltage-
controlled filter (VCF), which became widely available in the mid 1960s with
8.4.1
the Sintesi
appearance sottrattiva
of modular synthesizers. A typical VCF has two inputs: one for
the sound to filter, and one
La sintesi sottrattiva è la tecnica to vary the center
di usare or modellare
filtri per cutoff frequency of the
l’inviluppo filter.
spettrale
di un suono, use
A popular formando
of a VCF un isaltro suono,the
to control checenter
normalmente
frequencyconserva le qualità
of a resonant filter
del suono
from the sameoriginale,
ADSRcome il tono,
generator thatla rugosità,
controls thela rumorosità
amplitude; oa la granularità.
possible block
L’inviluppo
diagram spettrale
is shown del suono
in Figure 8.25.risultante è il prodotto dell’inviluppo
In this configuration, spettrale
the louder portion of a
del suono
note originale
(loudness con controlled
roughly la risposta by in frequenza del filtro.
the multiplier at theLa Figura may
bottom) 8.24 mostra
also be
una possibile
made to soundconfigurazione
brighter, usingdithe sorgente, filtro the
filter, than e risultato.
quieter parts; this can mimic
the Il filtro può
spectral essereofcostante
evolution strings oro variabile nel tempo.over
brass instruments Già
theinlife
largo
of auso
note.dalla
metà degli anni ‘50, la sintesi sottrattiva è emersa con l’introduzione del filtro
controllato dalla tensione (VCF, da voltage-controlled filter), che è diventato
ampiamente disponibile alla metà degli anni ‘60 con la comparsa dei sintetiz-
zatori modulari. Un VCF tipico ha due ingressi: uno per il suono da filtrare e
uno per variare la frequenza centrale, o di taglio, del filtro.
8.4. Applicazioni 235
(a)
amplitude
frequency
(b)
(c)
Figure
Figura 8.24:
8.24: Subtractive synthesis:
Sintesi sottrattiva: (a)(a) spectrum
spettro of input
del suono sound; (b)
in ingresso; (b)filter fre-
risposta
quency response;
in frequenza (c) spectrum
del filtro; of output
(c) spettro sound.
del suono in uscita.
frequency
center
frequency
OUT
IN
OUT
Figure 8.26: Envelope follower. The output is the average power of the input
Figura 8.26: Envelope follower. L’output è la potenza media del segnale di
signal.
ingresso.
For more insight into the design of a suitable low-pass filter for an envelope
basso normalizzato a un polo con coefficiente p, come in Figura 8.21, a un segnale
follower, we analyze it from the point of view of signal spectra. If, for instance,
in ingresso x[n]. L’output (denominato y[n]) è la somma dell’output del ritardo
we put in a real-valued sinusoid:
moltiplicato per p, con l’input moltiplicato per 1 − p:
x[n] = a · cos(αn)
y[n] = p · y[n − 1] + (1 − p) · x[n]
the result of squaring is:
cosı̀ ogni input viene ponderato, con peso 1 − p, nell’output precedente per
produrre un nuovo output. Quindi possiamo a2 fare una media mobile del quadrato
2
di un segnale audio utilizzando x[n] =il diagramma
(cos(2αn)di+ Figura
1) 8.26. L’output è una
2
media variabile nel tempo della potenza istantanea x[n]2 e la struttura del filtro
and so if thecontrolla,
passa-basso low-passtrafilter effectively
l’altro, il tempostops the component
di stabilizzazione of media
della frequency 2α
mobile.
we will
Per get
una out approximately
maggiore the constant
comprensione a2 /2, whichdiisun
nella progettazione indeed
filtro the average
passa-basso
power.
adatto per un envelope follower, lo analizziamo dal punto di vista degli spettri
The situation
di segnale. Se, perforesempio,
a signalviwith severaluna
inseriamo components
sinusoide is similar.
a valori Suppose the
reali
input signal is now,
x[n] = x[n] = a · cos(αn)
a · cos(αn) + b · cos(βn)
whose spectrum
il risultato is plotted
di elevare in Figure
al quadrato è: 8.27 (part a). (We have omitted the two
phase terms but they will have no effect on the outcome.) Squaring the signal
produces the spectrum shown 2in part a2 (b) (see Section 5.2).) We can get the
2 2x[n] = (cos(2αn) + 1)
desired fixed value of (a +b )/2 simply 2 by filtering out all the other components;
ideally the result will be a constant (DC) signal. As long as we filter out all the
e quindi se il filtro passa-basso blocca in modo efficace la componente alla fre-
partials, and also all the difference tones, we end up with a stable output that
quenza 2α otterremo approssimativamente la costante a2 /2, che è effettivamente
correctly estimates the average power.
la potenza media.
Envelope followers may also be used on noisy signals, which may be thought
La situazione per un segnale con diverse componenti è simile. Supponiamo
of as signals with dense spectra. In this situation there will be difference frequen-
che il segnale in ingresso sia ora,
cies arbitrarily close to zero, and filtering them out entirely will be impossible;
x[n] = a · cos(αn) + b · cos(βn).
amplitude
(a) b/2
a/2
frequency
2 2
a +b
2
(b)
0 2 + 2
-
Figure
Figura8.27:
8.27:Envelope
Envelopefollowing
followingfrom
dal the spectral
punto point
di vista of view:(a)
spettrale: (a)un
ansegnale
incoming
in
signal with two components; (b) the result of squaring it.
entrata con due componenti; (b) il risultato dell’elevamento al quadrato.
wedelwill always
segnale get fluctuations
produce lo spettroinindicato
the output, but they
in parte will
(b) (si decrease
veda proportion-
il paragrafo 5.2).
ally as the ottenere
Possiamo filter’s passband
il valore isfisso
narrowed.
desiderato (a2 + b2 )/2 semplicemente filtran-
do Although
tutte le altrea narrower passband
componenti; will always
idealmente give a sarà
il risultato cleaner
un output, whether
segnale costante
for discrete
(DC). or continuous
Finché filtriamo tuttispectra, the filter’s
le parziali settling
e tutti i toni time will lengthen
di differenza, propor-
finiremo con
tionally
un’output as the passband
stabile is narrowed.
che calcola There lais potenza
correttamente thus a tradeoff
media. between getting
a quick
Gli response
envelope and a smooth
followers possono result.
anche essere usati su segnali rumorosi, che
possono essere pensati come segnali con spettri densi. In questa situazione
ci saranno frequenze di differenza arbitrariamente vicine a zero e filtrarle via
8.4.3
interamenteSingle Sidebandotterremo
sarà impossibile; Modulation sempre delle fluttuazioni in output, ma
diminuiranno proporzionalmente alla riduzione della banda passante.
As we saw in Chapter 5, multiplying two real sinusoids together results in a sig-
Sebbene
nal with two unanew banda passante
components più sum
at the stretta
andfornisca sempre
difference unoriginal
of the output più puli-
frequen-
to, sia per gli spettri discreti che per quelli continui, il tempo
cies. If we carry out the same operation with complex sinusoids, we get only one di stabilizzazione
del filtro si prolungherà proporzionalmente in funzione di quanto la banda pas-
new resultant frequency; this is one result of the greater mathematical simplicity
sante venga ridotta. C’è quindi un compromesso tra una risposta rapida e un
of complex sinusoids as compared to real ones. If we multiply a complex sinu-
risultato regolare. 2
soid 1, Z, Z 2 , . . . with another one, 1, W, W 2 , . . . the result is 1, W Z, (W Z) , . . .,
which is another complex sinusoid whose frequency, ̸ (ZW ), is the sum of the
two
8.4.3original frequencies.
Modulazione a banda laterale singola
In general, since complex sinusoids have simpler properties than real ones,
itCome abbiamo
is often usefulvistoto benel Capitolo
able to convert5, moltiplicando insieme due
from real sinusoids sinusoidiones.
to complex reali,In
si
ottiene
other un segnale
words, from thecon real
due nuove
sinusoid:componenti date dalla somma e dalla differenza
delle frequenze originali. Se eseguiamo la stessa operazione con sinuosoidi com-
plesse, otteniamo solamente una nuova
x[n] = a frequenza
· cos(ωn) risultante; questo è il risultato
della maggiore semplicità matematica delle sinusoidi complesse rispetto a quel-
le reali. Se moltiplichiamo una sinusoide complessa 1, Z, Z 2 , . . . con un’altra,
1, W, W 2 , . . . il risultato è 1, W Z, (W Z)2 , . . . , che è un’altra sinusoide complessa
la cui frequenza, ∠(ZW ), è la somma delle due frequenze originali.
8.5. Esempi 239
x[n] = a · cos(ωn)
cosı̀ che
x[n] = re(X[n]).
Ci piacerebbe avere un processo lineare per farlo, in modo che le sovrapposizio-
ni di sinusoidi vengano trattate come se le loro componenti venissero trattate
separatamente.
Naturalmente potremmo scegliere, altrettanto bene, la sinusoide complessa
con frequenza −ω:
X 0 [n] = a(cos(ωn) − i sin(ωn))
e infatti x[n] è proprio la metà della somma delle due. In sostanza abbiamo
bisogno di un filtro che passa attraverso le frequenze positive (praticamente le
frequenze tra 0 e π, corrispondenti ai valori di Z sulla metà superiore del cerchio
unitario complesso) dai valori negativi (da −π a 0 o, equivalentemente, da π a
2π – la metà inferiore del cerchio unitario).
Si può progettare un tale filtro progettando un filtro passa-basso con fre-
quenza di taglio π/2 e quindi, eseguire una rotazione di π/2 radianti utilizzando
la tecnica del paragrafo 8.3.4. Tuttavia, risulta più facile farlo usando due reti,
progettate appositamente, di filtri all-pass con coefficienti reali.
Chiamiamo H1 e H2 le funzioni di trasferimento dei due filtri, progettiamo
i filtri in modo che
(
π/2 0 < ∠(Z) < π
∠(H1 (Z)) − ∠(H2 (Z)) ≈
−π/2 −π < ∠(Z) < 0
o, in altri termini,
Quindi per ogni segnale, a valori reali, x[n] in entrata, creiamo semplicemente un
numero complesso a[n]+ib[n] dove a[n] è l’output del primo filtro e b[n] è l’output
del secondo. Ogni componente sinusoidale complessa di x[n] (chiamiamola Z n )
verrà trasformata in
(
2H1 (Z) 0 < ∠(Z) < π
H1 (Z) + iH2 (Z) ≈ .
0 altrimenti
Avendo iniziato con un segnale a valori reali, la cui energia è suddivisa equa-
mente nelle frequenza positive e negative, otteniamo, alla fine, un segnale, a
valori complessi, con solo frequenze positive.
256 CHAPTER 8. FILTERS
240 Capitolo 8. Filtri
sinusoidal
osc~ 220
noise~ white noise, test signal
test signal +~ 1 add "DC"
0 <-- cutoff 0
lop~ low-pass filter hip~ 5 high-pass filter
| |
(OUT) (OUT)
(a) (b)
0 pitch
mtof
sawtooth
phasor~ oscillator
0 sweep speed
phasor~ LFO for sweep
0 sweep depth
*~
0 base center frequency
+~ add base to sweep
tabread4~ mtof convert to Hz.
0 Q (selectivity)
vcf~
|
(OUT)
Figure
Figura 8.29:
8.29: The vcf~
Il filtro band-passvcf∼,
passa-banda filter, con
withlaits
suacenter frequency
frequenza controlled
centrale by
controllata
an audio signal (as compared to bp~ which takes only control messages
da un segnale audio (rispetto a bp∼ che accetta solo messaggi di controllo per to set
its center frequency.
impostare la frequenza centrale).
inlet to control center frequency. Both bp~ and vcf~ are one-pole resonant filters
Filtro
as prefabbricato
developed in Section 8.3.4; passa-banda
bp~ outputs only variabile
the real nel
part tempo
of the resulting
signal, while vcf~ outputs the real and imaginary parts separately.
Il filtraggio
Examplepassa-banda variabile(Figure
H04.filter.sweep.pd nel tempo,
8.29)come utilizzato using
demonstrates spessothenella sintesi
vcf~ ob-
sottrattiva classica (paragrafo 8.4.1), può essere eseguito utilizzando
ject for a simple and characteristic subtractive synthesis task. A phasor~ object l’oggetto
vcf∼,
(at top)introdotto
creates a qui:
sawtooth wave to filter. (This is not especially good practice
as we are not controlling the possibility of foldover; a better sawtooth generator
vcf∼
for : un filtro
this purpose willpassa-banda
be developed “voltage-controlled”,
in Chapter 10.) The simile
seconda bp∼, ma con
phasor~ un
object
entrata di segnale per controllare la frequenza centrale.
(labeled “LFO for sweep”) controls the time-varying center frequency. AfterSia bp∼ che vcf∼ sono
filtri risonanti
adjusting to setadthe
un depth
polo, come
and adescritto
base centernel paragrafo
frequency8.3.4; bp∼
(given in emette solo la
MIDI units),
parte reale del segnale risultante, mentre vcf∼ emette
the result is converted into Hertz (using the tabread4~ object) and passed separatamente la parte
to
reale e quella immaginaria.
vcf~ to set its center frequency. Another example of using a vcf~ object for
L’esempio
subtractive H04.filter.sweep.pd
synthesis is demonstrated (Figura 8.29) mostra
in example l’utilizzo dell’oggetto
H05.filter.floyd.pd.
vcf∼ per un compito semplice e caratteristico della sintesi sottrattiva. Un
oggetto phasor∼ (in alto) crea un’onda a dente di sega da filtrare (questa non è
Envelope followers
una pratica particolarmente buona poiché non stiamo controllando la possibilità
di foldover:
Example nel Capitolo 10 verrà shows
H06.envelope.follower.pd sviluppato, per and
a simple questo scopo, un generatore
self-explanatory realiza-
a dente
tion di sega
of the migliore).
envelope Il secondo
follower described oggetto phasor∼
in Section (denominato
8.4.2. “LFO ap-
An interesting for
sweep”) controlla
plication la frequenza
of envelope following centrale
is shownche invaria
Examplenel tempo. Dopo alcune regola-
H07.measure.spectrum.pd
zioni per8.30,
(Figure impostare
part a).la profondità
A famous belle una frequenza
sample centrale
is looped as di basesound.
a test (data inRather
unità
MIDI), il risultato viene convertito in Hertz (utilizzando l’oggetto tabread4∼)
e passato a vcf∼ per impostare la sua frequenza centrale. Un altro esempio
di utilizzo di un oggetto vcf∼ per la sintesi sottrattiva è mostrato nell’esempio
H05.filter.floyd.pd.
258
242 CHAPTER 8. FILTERS
Capitolo 8. Filtri
0 Q *~ *~ 0 responsiveness
bp~
lop~ lop~ low-pass filter
bp~
r $0-tick
|
env~ 4096
(OUT)
0 snapshot~ snapshot~
measured strength 0 0
real part imaginary part
(a) (b)
Figura 8.30: Analisi dello spettro di un suono: (a) passa-banda che filtra un
Figure 8.30: Analyzing the spectrum of a sound: (a) band-pass filtering a sam-
suono campionato di campana e fa l’envelope following del risultato; (b) spo-
pled bell sound and envelope-following the result; (b) frequency-shifting a partial
stamento di frequenza da una parziale a DC e lettura della sua parte reale e
to DC and reading off its real and imaginary part.
immaginaria.
Figura
Figure8.31:
8.31:Utilizzo
Using andi una retefilter
all-pass di filtri all-pass
network to per
makeeffettuare uno shifter
a frequency shifter.di
frequenza.
all the partials except for the DC one, which we then harvest. This technique
isaltre
the vanno altrove.
basis of Fourier Applichiamo
analysis, the quindi un filtro
subject passa-basso
of Chapter 9. al segnale comples-
so risultante (possiamo usare un filtro passa-basso a valore reale separatamente
sulle parti reale e immaginaria). Questo rimuove essenzialmente tutte le parziali
Single sideband
tranne quella a DC, che modulation
poi raccogliamo. Questa tecnica è la base dell’analisi
di Fourier, argomento
As described in Section 8.4.3,del Capitolo 9. of all-pass filters can be constructed to
a pair
give roughly π/2 phase difference for positive frequencies and −π/2 for negative
ones. The design of
Modulazione a these
banda pairs is beyond
laterale the scope of this discussion (see, for
singola
instance, [Reg93]) but Pd does provide an abstraction, hilbert~, to do this.
Come descritto
Example nel paragrafo 8.4.3,shown
H09.ssb.modulation.pd, una coppia di filtri
in Figure 8.31,all-pass può essere
demonstrates howco-to
struita
use per fornire,abstraction
the hilbert~ approsimativamente,
to do signal una differenza
sideband di fase di π/2
modulation. The per le
Hilbert
frequenze dates
transform positiveto the −π/2 era
e dianalog per [Str95,
quelle pp.129-132].
negative. La progettazione di que-
steThe
coppie
two èoutputs
al di làof degli scopi di
hilbert~, questa discussione
considered as the real (siandveda, ad esempio,
imaginary parts of
a[Reg93]), tuttavia signal,
complex-valued Pd fornisce un’abstraction,
are multiplied hilbert∼,
by a complex per farlo.
sinusoid L’esempio
(at right in the
H09.ssb.modulation.pd, mostrato in Figura 8.31, mostra come
figure), and the real part is output. The components of the resulting signal are utilizzare l’ab-
straction
those hilbert∼
of the per effettuare
input shifted la modulazione
by a (positive or negative)a banda laterale
frequency del segnale.
specified in the
La trasformata
number box. di Hilbert risale all’era analogica [Str95, pp.129-132].
I due outputs di hilbert∼, considerati come parte reale e immaginaria di
un segnale a valori complessi, sono moltiplicati per una sinusoide complessa (a
Using elementary
destra nella figura) e la filters directly:
parte reale shelving
viene emessa. and peaking
Le componenti del segnale
No finite set of prefabricated filters could fill every possible need, negativa)
risultante sono quelle dell’input spostate di una frequenza (positiva o and so Pd
specificata
provides thenella casella numerica.
elementary filters of Sections 8.2.1-8.2.3 in raw form, so that the
user can supply the filter coefficients explicitly. In this section we will describe
patches that realize
Utilizzare filtri the shelving and
elementari peaking filters ofshelving
direttamente: Sections 8.3.3 and 8.3.5
e peaking
directly from elementary filters. First we introduce the six Pd objects that
Nessunelementary
realize insieme finito di filtri prefabbricati potrebbe soddisfare ad ogni possibile
filters:
esigenza, e quindi Pd fornisce i filtri elementari dei paragrafi 8.2.1–8.2.3 in forma
grezza, in modo che l’utente possa fornire i coefficienti di filtro in modo esplicito.
In questa sezione descriveremo le patches che realizzano i filtri shelving e pea-
244 Capitolo 8. Filtri
260 CHAPTER 8. FILTERS
0 angle (degrees)
zero and pole * 3.14159
radii (%)
/ 180
0 0
sin
zero pole (%) / 100 / 100 cos
t b f t b f
0 0
(IN) / 100 / 100
| (IN) * *
| * *
rzero~
czero~
rpole~ cpole~
| |
(OUT) (OUT)
(a) (b)
Figura 8.32:
Figure 8.32:Building
Costruire filtrifrom
filters a partire da quelli
elementary, raw elementari grezzi: (b)
ones: (a) shelving; (a) peak-
shelving;
(b) peaking.
ing.
rzero~
king , rzero rev~
dei paragrafi 8.3.3 ,e 8.3.5
rpole~ : elementary
direttamente daifilters
filtriwith real-valued
elementari. coeffi-
Innanzitutto
introduciamo i sei oggetti Pd che realizzano filtri elementari:
cients operating on real-valued signals. The three implement non-recirculating
filters
rzero∼ of the first and
, rzero rev∼second types, and
, rpole∼ the recirculating
: filtri elementari con filter.coefficienti
They all have
a valori
one
reali che operano su segnali a valori reali. I tre oggetti implementano filtriornon-
inlet, at right, to supply the coefficient that sets the location of the zero
pole. The inlet
ricircolanti delfor the coefficient
primo e secondo(as welleasilthe
tipo, leftricircolante.
filtro inlet for the signal
Tuttitohanno
filter)una
take audio signals. No stability check is performed.
sola entrata, a destra, per fornire il coefficiente che determina la posizione dello
zero o del, polo.
czero~ czeroL’ingresso
rev~ , cpole~per il coefficiente
: elementary (cosı̀ come
filters withl’ingresso sinistro per
complex-valued
il segnale da filtrare) accetta segnali audio. Non viene eseguito alcun controllo
coefficients,
sulla stabilità.operating on complex-valued signals, corresponding to the real-
valued ones above. Instead of two inlets and one outlet, each of these filters has
four inlets ,(real
czero∼ and rev∼
czero imaginary part of the
, cpole∼ signalelementari
: filtri to filter, and conreal and imaginary
coefficienti a valori
part of the coefficient) and two outlets for the complex-valued
complessi, che operano su segnali a valori complessi, corrispondenti ai filtri output.
Theaexample
sopra, patches
valori reali. use a avere
Anziché pair ofdueabstractions
ingressi e to unagraph the ciascuno
uscita, frequencydiand questi
phase responses of filters as explained in Example H10.measurement.pd.
filtri ha quattro ingressi (parte reale e immaginaria del segnale da filtrare, Exam- parte
ple
realeH11.shelving.pd
e immaginaria(Figure 8.32, parte a)
del coefficiente) due shows
uscite how
pertol’output
make a ashelving filter.
valori complessi.
One elementary non-recirculating filter (rzero~) and one elementary recircu-
Le patches di esempio utilizzano una coppia di abstractions per tracciare le
lating one (rpole~) are put in series. As the analysis of Section 8.3.9 might
risposte in frequenza e di fase come spiegato nell’esempio H10.measurement.pd.
suggest, the rzero~ object is placed first.
L’esempio H11.shelving.pd (Figura 8.32, parte a) mostra come creare un fil-
Example H12.peaking.pd (part (b) of the figure) implements a peaking filter.
tro shelving. Un filtro elementare non-ricircolante (rzero∼) ed uno elementa-
Here the pole and the zero are rotated by an angle ω to control the center
re ricircolante (rpole∼) vengono messi in serie. Come suggerisce l’analisi del
frequency of the filter. The bandwidth and center frequency gain are equal to
paragrafo 8.3.9, l’oggetto
the shelf frequency DC gainviene
and therzero∼ of theper primo.
corresponding shelving filter.
Example H13.butterworth.pd demonstrates afigura)
L’esempio H12.peaking.pd (parte (b) della implementa
three-pole, three-zerounButter-
filtro pea-
worth shelving filter. The filter itself is an abstraction, butterworth3~, for easy la
king. Qui il polo e lo zero sono ruotati di un angolo di ω per controllare
frequenza centrale del filtro. La larghezza di banda ed il guadagno della fre-
quenza centrale sono uguali alla frequenza shelf e al guadagno DC del relativo
filtro shelving.
L’esempio H13.butterworth.pd mostra un filtro shelving di Butterworth a tre
poli e tre zeri. Il filtro stesso è un’abstraction, butterworth3∼, per un facile
ri-utilizzo.
8.5. Esempi 245
phasor~ 0.3
expr~ abs($v1-0.5)
rzero_rev~
rpole~
rzero_rev~
pole (%)
rpole~
0
rzero_rev~
/ 100
rpole~
rzero_rev~
rzero_rev~
rpole~
| rpole~
(OUT)
+~
(a) | (b)
(OUT)
Figura8.33:
Figure 8.33:All-pass
Filtri filters:
all-pass: (a) (a) realizzazione
making an all-passdifilter
un from
filtro elementary
all-pass dafilters;
filtri
elementari;
(b) (b)all-pass
using four utilizzofilters
di quattro filtri
to build all-pass per costruire un phaser.
a phaser.
reuse.
Esercizi
1. Un filtro elementare ricircolante ha un polo a i/2. A quale frequenza
angolare il suo guadagno è maggiore e qual è tale guadagno? A quale
frequenza angolare il suo guadagno è minimo e qual è tale guadagno?
Tra le applicazioni dei filtri discusse nel Capitolo 8, abbiamo visto come usa-
re l’eterodina combinata con un filtro passa-basso per trovare l’ampiezza e la
fase di una componente sinusoidale di un segnale (pagina 242). In questo ca-
pitolo rifiniremo questa tecnica in quella che viene chiamata analisi di Fourier.
Nella sua forma più semplice, l’analisi di Fourier prende in input un qualsia-
si segnale periodico (di periodo N ) e fornisce in output le ampiezze, a valori
complessi, delle sue N possibili componenti sinusoidali. Queste N ampiezze
complesse possono essere teoricamente utilizzate per ricostruire esattamente il
segnale originale. Questa ricostruzione prende il nome di risintesi di Fourier.
In questo capitolo inizieremo sviluppando la teoria dell’analisi e della risintesi
di Fourier di segnali periodici campionati. Poi continueremo mostrando come
applicare le stesse tecniche a segnali arbitrari, sia periodici che non. Infine,
svilupperemo alcune applicazioni standard come il vocoder di fase.
247
248 Capitolo 9. Analisi e risintesi di Fourier
si ripete ogni N campioni, questa media enorme è la stessa della media dei
primi N campioni. In breve, per misurare una componente sinusoidale di un
segnale periodico, lo moduliamo fino al DC e quindi calcoliamo la media lungo
un periodo.
Sia ω = 2π/N la frequenza fondamentale per il periodo N , e sia U il numero
complesso di modulo unitario e argomento ω:
U = cos(ω) + i sin(ω).
La k−esima parziale del segnale X[n] è del tipo:
n
Pk [n] = Ak U k
dove Ak è l’ampiezza complessa della parziale, e la frequenza della parziale è:
∠(U k ) = k∠(U ) = kω.
Stiamo assumendo, per il momento, che il segnale X[n] possa essere effettiva-
mente scritto come una somma di N parziali, cioè:
n n n
X[n] = A0 U 0 + A1 U 1 + · · · + AN −1 U N −1 .
Per l’operazione di filtraggio-eterodina vista sopra, ci aspettiamo di essere in
grado di misurare ogni Ak moltiplicando per una sinusoide alla frequenza −kω
e facendo la media lungo un periodo:
1 −k 0 1 N −1
Ak = U X[0] + U −k X[1] + · · · + U −k X[N − 1] .
N
Questa è una formula talmente utile da avere la propria notazione. La trasfor-
mata di Fourier di un segnale X[n], su N campioni, è definita come:
FT {X[n]} (k) = V 0 X[0] + V 1 X[1] + · · · + V N −1 X[N − 1]
dove V = U −k . La trasformata di Fourier è una funzione della variabile k,
pari a N volte l’ampiezza della k−esima parziale del segnale in input. Finora k
ha assunto solo valori interi, ma la formula ha senso per ogni valore di k se si
definisce V in modo più generale come:
V = cos(−kω) + i sin(−kω)
dove, come prima, ω = 2π/N è la frequenza fondamentale (angolare) associata
al periodo N .
Ciò dimostra che ogni X[n] periodico può essere effettivamente ottenuto come
somma di sinusoidi. Inoltre, la formula mostra esplicitamente come ricostruire
X[n] dalla sua trasformata di Fourier Y [k], se conosciamo il suo valore per gli
interi k = 0, . . . , N − 1.
Spesso dovremo conoscere la risposta per valori non interi di k, e per questo non
c’è niente di meglio da fare che calcolare direttamente il valore:
FT {X[n]} (k) = V 0 X[0] + V 1 X[1] + · · · + V N −1 X[N − 1]
dove V è, come prima, il numero complesso di modulo 1 e argomento −kω.
Questa è una serie geometrica; finché V 6= 1 otterremo:
VN −1
FT {X[n]} (k) = .
V −1
Simmetriziamo la parte superiore e quella inferiore nello stesso modo che abbia-
mo fatto prima nel paragrafo 7.3. Per fare ciò sia
ξ = cos(πk/N ) − i sin(πk/N )
in modo che ξ 2 = V . Quindi, mettendo a fattor comune potenze appropriate di
ξ al numeratore e al denominatore si ha:
ξ N − ξ −N
FT {X[n]} (k) = ξ N −1 .
ξ − ξ −1
Ora è facile semplificare il numeratore:
ξ N − ξ −N = (cos(πk) − i sin(πk)) − (cos(πk) + i sin(πk)) = −2i sin(πk)
e similmente per il denominatore, ottenendo
sin(πk)
FT {X[n]} (k) = cos(πk(N − 1)/N ) − i sin(πk(N − 1)/N ) .
sin(πk/N )
Indipendentemente se V = 1 oppure no, abbiamo
FT {X[n]} (k) = cos(πk(N − 1)/N ) − i sin(πk(N − 1)/N ) DN (k)
real
-5 0 5
k
imagi-
nary
Figure 9.1:
Figura 9.1: The Fourier transform
La trasformata of a signal
di Fourier di un consisting of all ones.
segnale costituito da Here
tutti N=100,
1. Qui
and values are shown for k ranging from -5 to 10. The result is complex-valued
N = 100 e sono mostrati valori per k che va da −5 a 10. Il risultato è a valori
and showne as
complessi a projection,
viene with una
mostrato come the proiezione,
real axis pointing up reale
con l’asse the page and the
che punta in
imaginary axis pointing away from it.
su nella pagina e l’asse immaginario che punta fuori da essa.
and so on. The figure endeavors to show both the magnitude and phase behavior
using a 3-dimensional graph projected onto the page. The phase term
-5 0 5
9.2.2 Shifts and phase changes frequency (bins)
Section 7.2 showed how time-shifting a signal changes the phases of its sinusoidal
components, and Section 8.4.3 showed how multiplying a signal by a complex
Figura 9.2: Il kernel di Dirichlet, per N = 100.
sinusoid shifts its Figure
component
9.2:frequencies. These
The Dirichlet two effects
kernel, for Nhave corresponding
= 100.
identities involving the Fourier transform.
First we consider a time shift. If X[n], as usual, is a complex-valued signal
that repeats every N samples, let Y [n] be X[n] delayed d samples:
Y [n] = X[n − d]
which also repeats every N samples since X does. We can reduce the Fourier
transform of Y [n] this way:
= V d FT {X[n]} (k)
(la terza riga è solo la seconda con i termini sommati in un ordine diverso).
Otteniamo quindi la formula di spostamento temporale per le trasformate di
Fourier:
FT {X[n − d]} (k) = cos(−dkω) + i sin(−dkω) FT {X[n]} (k).
Z = cos(α) + i sin(α).
La trasformata di Fourier è:
FT {Y [n]} (k) = V 0 Y [0] + V 1 Y [1] + · · · + V N −1 Y [N − 1]
= FT {X[n]} (k − ωα ).
Si ottiene quindi la formula di spostamento della fase per le trasformate di
Fourier:
αN
FT {(cos(α) + i sin(α))X[n]}(k) = FT {X[n]}(k − ).
2π
270 CHAPTER 9. FOURIER ANALYSIS AND RESYNTHESIS
9.2. Proprietà delle trasformate di Fourier 253
amplitude
(a)
-5 0 5
k->
(b)
0 5
-5
FT {Z n } (k) = FT {1} (k − ωα )
α
0 = [cos(Φ(k))
100 200N (k − ω )
+ i sin(Φ(k))]D
dove DN è il kernel di Dirichlet e Φ è un “brutto” termine di fase:
α
Φ(k) = −π · (k − ) · (N − 1)/N.
ω
Se la frequenza
Figure della sinusoide
9.4: A complex α èwith
sinusoid un multiplo
frequencyintero
α =della
1.5ωfrequenza
= 3π/N ,fondamen-
forced to
repeat every N samples. (N is arbitrarily set to 100; only the direal
tale ω, il kernel di Dirichlet viene spostato a sinistra o a destra un part
intero.
is
In questo
shown.) caso gli zero-crossings del kernel di Dirichlet si allineano con valori
interi di k, in modo che solo una parziale non sia nulla. Questo è illustrato nella
Figura 9.3 (parte a).
La parte (b) mostra il risultato quando la frequenza α cade a metà tra due
interi. Le parziali hanno ampiezze che decadono approssimativamente come
1/k in entrambe le direzioni, misurate dalla frequenza effettiva α. Che l’energia
debba diffondersi su molte parziali, quando dopotutto abbiamo iniziato con
-5
Figure 9.3: Fourier transforms of complex sinusoids, with N = 100: (a) with
frequency 2ω ; (b) with frequency 1.5ω. (The effect of the phase winding term
is not shown.)
0 100 200
Figura 9.4: Una sinusoide complessa con frequenza α = 1.5ω = 3π/N , costretta
Figure 9.4: A complex sinusoid with frequency α = 1.5ω = 3π/N , forced to
a ripetersi ogni N campioni (N è arbitrariamente impostato su 100, solo la parte
repeat every N samples. (N is arbitrarily set to 100; only the real part is
reale è mostrata).
shown.)
1 1
w[n] = − cos(2πn/N ).
2 2
9.3. Analisi di Fourier
272 di segnali
CHAPTER non periodici
9. FOURIER 255
ANALYSIS AND RESYNTHESIS
amplitude
M(k)
D (k)
N
D (k-1)
N
0 1 2 k->
-1
real
0 5 10 k
imagi-
nary
ci dà una misura dello spettro momentaneo del segnale X[n]. D’altra parte,
fissando una frequenza k possiamo guardarla come il canale k−esimo di un
segnale N −canali:
C[m] = S[m, k].
258 Capitolo 9. Analisi e risintesi di Fourier
INPUT
extract ...
windows
shape
windows
Fourier
FT FT
analysis
modifi-
cation ANYTHING ANYTHING
Fourier
resynth- iFT iFT
esis
shape
windows
again
overlap-
add
...
OUTPUT
IN
extract and
shape windows
NOISE
FT FLOOR
|Z|
threshold
function
iFT
overlap
and add
OUT
ora come g[m, k], e alla trasformata di Fourier su finestra S[m, k] = C[m]. Il
guadagno è dato da:
(
1 − f [k]/|S[m, k]| |S[m, k]| > f [k]
g[m, k] = .
0 altrimenti
Ogni volta che la magnitudine S[m, k] è inferiore alla soglia f [k] il guadagno è ze-
ro e quindi l’ampiezza S[m, k] viene sostituita da zero. Altrimenti, moltiplicando
l’ampiezza per g[m, k] si riduce la magnitudine verso il basso a |S[m, k]| − f [k].
Poiché il guadagno è un numero reale non-negativo, la fase è conservata.
Nella figura, il guadagno è calcolato come funzione di soglia del rapporto
x = |S[m, k]|/f [k] dell’ampiezza del segnale rispetto al livello di rumore; la
soglia è g(x) = 1 − 1/x quando x < 1 e zero altrimenti, anche se si potrebbe
sostituire facilmente con altre funzioni di soglia.
Questa tecnica è utile per rimuovere il rumore da un suono registrato. Mi-
suriamo o forniamo a caso i valori del livello di rumore f [k]. A causa della
progettazione della funzione di guadagno g[m, k], solo le ampiezze superiori al
livello di rumore raggiungono l’uscita. Poiché questo è fatto su bande strette
di frequenze, a volte è possibile rimuovere la maggior parte del rumore anche
quando il segnale stesso, nelle frequenze in cui è più forte del livello di rumore,
è maggiormente conservato.
La tecnica è utile anche come preparazione prima di applicare un’operazione
non-lineare ad un suono, come la distorsione. Spesso è meglio distorcere solo
le frequenze più salienti del suono. Sottrarre il suono con rumore soppresso
dall’originale dà un segnale residuo che può essere passato non distorto.
FILTER CONTROL
INPUT INPUT
window
FT
|Z| |Z|
limiting
function
iFT
overlap
and add
OUT
g(x) = 1 − 1/x when x < 1 and zero otherwise, although other thresholding
functions could easily be substituted.
This technique is useful for removing noise from a recorded sound. We either
measure or guess values of the noise floor f [k]. Because of the design of the gain
function g[m, k], only amplitudes which are above the noise floor reach the
output. Since this is done on narrow frequency bands, it is sometimes possible
to remove most of the noise even while the signal itself, in the frequency ranges
where it is louder than the noise floor, is mostly preserved.
The technique is also useful as preparation before applying a non-linear
operation, such as distortion, to a sound. It is often best to distort only the
most salient frequencies of the sound. Subtracting the noise-gated sound from
the original then gives a residual signal which can be passed through undistorted.
9.5 Fase
Finora abbiamo operato su segnali alterando le ampiezze delle loro trasformate
di Fourier su finestra, ma lasciando intatte le fasi. Le ampiezze codificano
l’inviluppo spettrale del suono. Le fasi, d’altra parte, codificano la frequenza e
il tempo, nel senso che la variazione di fase, da una finestra ad una diversa, si
accumula, nel tempo, secondo la frequenza. Per effettuare una trasformazione
che consenta un controllo indipendente dalla frequenza e dal tempo richiede
l’analisi e la ricostruzione della fase.
Negli esempi di analisi/sintesi del paragrafo precedente, la fase dell’output
viene copiata direttamente dalla fase dell’input. Ciò è appropriato quando il
segnale di output corrisponde in tempo con il segnale di input. A volte si
desiderano modifiche di tempo, ad esempio per fare stretching o contrazione del
tempo. Alternativamente la fase di output potrebbe dipendere da più di un
input, per esempio per fare morphing tra un suono e un altro.
La Figura 9.10 mostra come, data una sinusoide complessa come input, la
fase della trasformata di Fourier cambia da finestra a finestra. La frequenza
della sinusoide è α = 3ω, in modo che il picco nella trasformata di Fourier sia
centrato su k = 3. Se la fase iniziale è φ, le fasi vicine possono essere definite
come:
∠S[0, 2] = φ + π ∠S[0, 3] = φ ∠S[0, 4] = φ + π
∠S[1, 2] = φ + Hα + π ∠S[1, 3] = φ + Hα ∠S[1, 4] = φ + Hα + π .
∠S[2, 2] = φ + 2Hα + π ∠S[2, 3] = φ + 2Hα ∠S[2, 4] = φ + 2Hα + π
Questo dà un ottimo modo per stimare la frequenza α: scegliere un qualsiasi
canale la cui ampiezza sia dominata dalla sinusoide e sottrarre due fasi successive
per ottenere Hα:
Hα = ∠S[1, 3] − ∠S[0, 3]
∠S[1,3]−∠S[0,3]+2pπ
α= H
dove p è un intero. Ci sono H frequenze possibili, distanziate di 2π/H. Se si
utilizza una sovrapposizione di 4, cioè H = N/4, le frequenze sono distanziate
di 8π/N = 4ω. Fortunatamente, questa è la larghezza del lobo principale per
la finestra di Hann, quindi non più di un possibile valore di α può spiegare
qualsiasi differenza di fase misurata all’interno del lobo principale di un picco.
Il valore corretto di p da scegliere è quello che fornisce una frequenza più vicina
alla frequenza nominale del canale, kω.
Quando si calcolano le fasi per sintetizzare un segnale nuovo o modificato,
vogliamo mantenere le opportune relazioni di fase tra le finestre successive di
risintesi e contemporaneamente anche tra i canali adiacenti. Tuttavia, questi due
insiemi di relazioni non sono sempre compatibili. Il nostro primo obbligo sarà
quello di onorare i rapporti tra le finestre successive di risintesi e preoccuparci
delle relazioni di fase tra i canali solo successivamente.
Supponiamo di voler costruire l’m−esimo spettro S[m, k] per la risintesi
(avendo già costruito il precedente, l’(m − 1)−esimo). Supponiamo di volere che
264 Capitolo 9. Analisi e risintesi di Fourier
(a)
real
incoming sinusoid
imaginary ...
(b)
imaginary
real
S[0, 3]
H
S[1, 3]
S[2, 3]
Figura 9.10: Fase nell’analisi di Fourier su finestra: (a) una sinusoide complessa
Figure 9.10:
analizzata Phase
in tre in windowed
finestre Fourier
successive; analysis:per
(b) il risultato (a)una singolo
complex sinusoid
canale (k =ana-
3),
lyzed on three successive
per le tre finestre. windows; (b) the result for a single channel (k=3), for
the three windows.
9.5. Fase 265
THIS INPUT
ANOTHER INPUT
T[k] T'[k]
...
...
OUTPUT
Figura 9.11: Propagazione delle fasi nella risintesi. Ciascuna fase, come quella
Figure
di S[m,9.11: Propagating
k] qui, phases
dipende dalla in resynthesis.
precedente Each phase,
fase di output e dalla such as that
differenza of
delle
S[m, k] input.
fasi di here, depends on the previous output phase and the difference of the
input phases.
le relazioni di fase tra le finestre m − 1 e m siano quelle di un segnale x[n], ma
che le fasi del numero di finestra m − 1 possano provenire da qualche altra parte
e non si possa supporre che siano in linea con i nostri desideri.
Per scoprire quanto la fase di ciascun canale debba essere diversa da quella
precedente, eseguiamo due analisi del segnale x[n], separate dalla stessa hop size
H che stiamo usando per la risintesi:
T [k] = FT {w[n]X[n]}(k),
Qui abbiamo usato il fatto che moltiplicare o dividere due numeri complessi dà
la somma o la differenza dei loro argomenti.
9.5. PHASE 283
266 Capitolo 9. Analisi e risintesi di Fourier
imaginary
T'[k]
real
S[m-1, k] T[k]
S[m, k]
Figura 9.12:
Figure 9.12: Phases
Fasi di of
unone
canale delleoffinestre
channel di analisi
the analysis e due and
windows successive finestre
two successive
di risintesi.
resynthesis windows.
In the scheme above, the phase of each S[m, k] depends only on the previ-
9.5.1 Rapporti di fase tra i canali
ous value for the same channel. The phase relationships between neighboring
channels
Nello schema are left to chance.
sopra, la fase diThisognisometimes works fine,
S[m, k] dipende solo butdal sometimes the in-
valore precedente
coherence
per lo stesso of neighboring
canale. Lechannels
relazionigives rise tra
di fase to an unintended
i canali vicinichorus effect. We
sono lasciati al
would ideally awish
caso. Questo voltefor S[m, k]bene,
funziona and S[m,
ma a kvolte
+ 1]l’incertezza
to have the deisamecanaliphase
vicinirela-
dà
tionship
origine ad as un T ′ [k] and
for effetto T ′ [k + 1],dibut
involontario also for
chorus. the phase
Vorremmo relationship
idealmente che between
S[m, k]
S[m,
e S[m, k] kand
+ 1]S[m − 1, k]latostessa
abbiano be the same asdibetween
relazione fase come T ′ [k] T 0 [k]
perand T [k].
e T [k + 1], ma
anche che2N
These la equations
relazione di forfase tra S[m,
N phases k] e S[m
in general − 1,
will k] sia
have uguale a but
no solution, quella
we tra
can
0
T [k] e T [k].
alter the equation for S[m, k] above so that whenever there happens to be a so-
lutionQueste
to the2N equazioni per system
over-constrained le N fasi, in generale,
of equations, thenon avranno alcuna
reconstruction solu-
algorithm
zione, ma possiamo alterare l’equazione per S[m, k] in modo
homes in on the solution. This approach is called phase locking [Puc95b], and che ogni qualvolta
ci sia
has theuna soluzione
virtue al sistema
of simplicity sovra-vincolato
although di equazioni,
more sophisticated l’algoritmo
techniques di rico-
are available
struzione
[DL97]). porti a quella soluzione. Questo approccio è chiamato phase locking
[Puc95b] e ha la virtù della semplicità (anche se sono disponibili tecniche più
sofisticate [DL97]).
La relazione di fase in output desiderata, al frame m − 1, è
∠T [k + 1] − ∠T [k] = ∠S[m − 1, k + 1] − ∠S[m − 1, k]
9.6. Phase bashing 267
o, riarrangiando i termini:
S[m − 1, k + 1] S[m − 1, k]
∠ =∠ .
T [k + 1] T [k]
In altre parole, la fase del quoziente S/T non dovrebbe dipendere da k. Con
questo in mente, possiamo riscrivere la formula di ricorsione per S[m, k]:
con
T [k] · S[m − 1, k]
R[k] =
|S[m − 1, k]|
e a causa della precedente equazione, gli R[k] dovrebbero essere tutti in fase. Il
trucco è ora quello di sostituire R[k], per ogni k, con la somma dei tre vicini. Il
calcolo è quindi:
S[m, k] = |R0 [k]|−1 · R0 [k]T 0 [k]
con
R0 [k] = R[k + 1] + R[k] + R[k − 1].
Se i canali sono già nella relazione di fase corretta, questo non ha alcun effetto
(la fase risultante sarà uguale a quella nel caso in cui solo R[k] fosse usato).
Ma in generale la somma condividerà due termini in comune con il suo vicino a
k + 1:
R0 [k + 1] = R[k + 2] + R[k + 1] + R[k]
in modo che il R0 tenderà a puntare maggiormente nella stessa direzione rispet-
to a quanto faccia R. Applicando questo iterativamente, tutti gli R0 saranno
eventualmente allineati alla stessa fase, fintanto che le relazioni di fase tra gli
spettri misurati T e T 0 lo consentano.
INPUT
...
FT
MAGNITUDE
k
(-1)
iFT
...
PHASE-BASHED INPUT
(a) (c)
osc~
Figure
Figura 9.14:
9.14: Fourier
Analisianalysis
di Fourierin Pd: (a) the
in Pd: (a) fft ∼ object;
l’oggetto (b) using
fft∼; a subwindow
(b) utilizzo di una
to control block
sotto-patch size of the la
per controllare Fourier transform;
dimensione (c) the
del blocco subwindow,
della using
trasformata a real
di Fourier;
Fourier transform (the
(c) la sotto-patch, fft~object)
che usa and the di
una trasformata Hann windowing
Fourier function.rfft∼) e
reale (l’oggetto
la funzione finestra di Hann.
Figure 9.13 shows a simple way to use Fourier analysis to align phases in a
series of windows in a recording. We simply take the FFT of the window and
then set each phase to zero for even values of k and π for odd ones. The phase
at the center of the window is thus zero for both even and odd values of k. To
set the phases (the arguments of the complex amplitudes in the spectrum) in
the desired way, first we find the magnitude, which can be considered a complex
number with argument zero. Then multiplying by (−1)k adjusts the amplitude
so that it is positive and negative in alternation. Then we take the inverse
Fourier transform, without even bothering to window again on the way back;
we will probably want to apply a windowing envelope later anyway as was shown
9.7. Esempi 269
9.7 Esempi
Analisi e risintesi di Fourier in Pd
L’esempio I01.Fourier.analysis.pd (Figura 9.14, parte a) mostra come calcolare
la trasformata Fourier di un segnale audio usando l’oggetto fft∼:
fft∼ : trasformata di Fourier veloce (Fast Fourier Transform). I due ingressi
accettano segnali audio che rappresentano la parte reale e la parte immaginaria
di un segnale a valori complessi. La dimensione della finestra N è data dalla
dimensione di blocco di Pd. Una trasformata di Fourier viene eseguita su ogni
blocco.
La trasformata di Fourier veloce [Sl03] riduce, in Pd, il costo computazionale
dell’analisi di Fourier a solo quello di un numero di oggetti osc∼ tra 5 e 15, in
configurazioni tipiche. L’algoritmo FFT nella sua forma più semplice considera
il caso in cui N sia una potenza di due, che è anche (normalmente) un vincolo
sulle dimensioni dei blocchi in Pd.
L’esempio I02.Hann.window.pd (Figura 9.14, parti b e c) mostra come con-
trollare la dimensione del blocco usando un oggetto block∼, come applicare
una finestra di Hann e una versione diversa della trasformata di Fourier. La
parte (b) mostra la chiamata a un sotto-patch che, a sua volta, è mostrata nella
parte (c). I nuovi oggetti sono:
rfft∼ : trasformata di Fourier veloce reale. La parte immaginaria dell’input
viene considerata pari a zero. Solo i primi N/2+1 canali di output sono calcolati
(gli altri sono determinati per simmetria). Questo richiede metà del tempo di
calcolo dell’oggetto (più generale) fft∼.
tabreceive∼ : riproduce ripetutamente il contenuto di una wavetable. Ogni
blocco di calcolo emette gli stessi N primi campioni della tabella.
In questo esempio, la tabella “$0-hann” contiene una funzione finestra di
Hann di lunghezza 512, in accordo con la dimensione del blocco specificato. Il
segnale da analizzare appare (dalla patch genitore) tramite l’oggetto inlet∼. Le
ampiezze del canale (l’output dell’oggetto rfft∼) vengono ridotte ad ampiezze
reali: le parti reale e immaginaria sono elevate al quadrato separatamente, i due
quadrati vengono sommati e il risultato è passato all’oggetto sqrt∼. Infine,
la magnitudine viene scritta (controllata da una connessione non mostrata in
figura) tramite tabwrite∼ in un’altra tabella, “$0-magnitude”, per visualizzarla
graficamente.
L’esempio I03.resynthesis.pd (Figura 9.15) mostra come analizzare e risin-
tetizzare un segnale audio seguendo la strategia di Figura 9.7. Come prima c’è
una sotto-finestra per eseguire il lavoro ad una dimensione di blocco adeguata al
288 CHAPTER 9. FOURIER ANALYSIS AND RESYNTHESIS
Figure 9.15: Fourier analysis and resynthesis, using block~ to specify an overlap
Figura 9.15: Analisi e risintesi di Fourier, utilizzando block∼ per specificare
of 4, and rifft~ to reconstruct the signal after modification.
una sovrapposizione di 4, e rifft∼ per ricostruire il segnale dopo la modifica.
Figure
Figura9.16: NoiseSoppressione
9.16: suppression as andel
example
rumore of narrow-band companding:
come esempio (a)
di companding
a banda
analysis and reconstruction of the signal; (b) computation of the “mask”.
stretta: (a) analisi e ricostruzione del segnale; (b) calcolo della “maschera”.
il mouse nella finestra grafica per questa tabella, è possibile progettare curve
guadagno-frequenza.
real-valued) gain. The complex-valued amplitude for each channel is scaled
by separately multiplying the real and imaginary parts by the gain. The gain
(whichVidepends
è un ritardo intrinseco
on the channel) comesintrodotto
from anotherdall’uso di block∼
table, named “$0-gain”.per aumentare la
dimensione del blocco (ma nessun ritardo se viene utilizzato, come mostrato nel
The result is a graphical equalization filter; by mousing in the graphical window
for this table,7,you
Capitolo percanridurre
design gain-frequency
la dimensione curves.
del blocco rispetto alla finestra genitore).
Il ritardo può essere misurato dall’input all’output della sotto-patch ed è uguale
There
alla is an inherent
differenza delledelay introduceddei
dimensioni by using
due block~
blocchi.to increase the block
In questo esempio il ritardo di
size (but none if it is used, as shown in Chapter 7, to reduce block size relative
buffering è 512 − 64 = 448 campioni. Il ritardo di blocco
to the parent window.) The delay can be measured from the inlet to the outlet non dipende dalla
sovrapposizione, solo dalle dimensioni dei blocchi.
of the sub-patch, and is equal to the difference of the two block sizes. In this
example the buffering delay is 512-64=448 samples. Blocking delay does not
depend on overlap, only on block sizes.
Companding a banda stretta: soppressione del rumore
L’esempio I04.noisegate.pd (Figura 9.16) mostra un esempio di companding a
banda stretta usando l’analisi/risintesi di Fourier (questa è una realizzazione
del diagramma a blocchi della Figura 9.8). La parte (a) della figura mostra una
configurazione del filtro simile a quella dell’esempio precedente, ad eccezione del
fatto che il guadagno per ogni canale è ora in funzione della magnitudine del
canale.
Per ciascun k, se indichiamo con s[k] la potenza nel canale k e con m[k] un
livello di mascheratura (un livello presumibilmente un po’ più alto della potenza
del rumore per il canale k), allora il guadagno nel canale k è dato da
(q
s[k]−m[k]
s[k] s[k] > m[k]
.
0 altrimenti
272 Capitolo 9. Analisi e risintesi di Fourier
*~ *~
reciprocal
+~ modulus of inlet~ control source
+~ 1e-20 filter input
*~ tabreceive~ $0-hann
amplitude
q8_rsqrt~
rfft~
r squelch
*~ *~
expr 0.01*$f1*$f1 modulus
limit gain to +~
of control
clip~ squelch*squelch/100 q8_sqrt~ amplitude
*~ multiply the two amplitude
factors (for compression
and to apply new timbre)
/~ 1536
*~ *~
rifft~
*~ tabreceive~ $0-hann
outlet~
Figura
Figure 9.17: 9.17:
TimbreTimbre
stamp. stamp.
Figura 9.18:
Figure Phase
9.18: vocoder
Phase vocoderper
for l’allungamento e lacontraction.
time stretching and contrazione del tempo.
276 Capitolo 9. Analisi e risintesi di Fourier
Esercizi
1. Un segnale x[n] è 1 per n = 0 e 0 altrimenti (un impulso). Qual è la sua
trasformata di Fourier (a N −punti) in funzione di k?
4. Per analizzare con Fourier un tono periodico di 100 Hz (ad una frequenza
di campionamento di 44100 Hertz), utilizzando una finestra di Hann, quale
valore di N sarebbe necessario per risolvere completamente tutte le parziali
del tono (nel senso di avere picchi non sovrapposti nello spettro)?
5. Supponiamo che una trasformata di Fourier a N −punti sia fatta su una
sinusoide complessa di frequenza 2.5ω dove ω = 2π/N è la frequenza
fondamentale. Quale percentuale dell’energia di segnale si trova nel lobo
principale e nei canali k = 2 e k = 3? Se il segnale viene ristretto a una
finestra di Hann, quale percentuale dell’energia è ora nel lobo principale
(che sono adesso i canali da 1 a 4)?
Capitolo 10
Fino ad ora abbiamo praticato tre approcci per sintetizzare forme d’onda ripeti-
tive: sintesi additiva (Capitolo 1), sintesi wavetable (Capitolo 2) e waveshaping
(Capitoli 5 e 6). Questo capitolo introduce un quarto approccio, in cui le for-
me d’onda vengono costruite esplicitamente da segmenti di retta con estremi
controllabili. Questo approccio è, storicamente, tanto importante quanto gli
altri, ed era dominante durante il periodo di sintesi analogica, nel periodo 1965-
1985 circa. Per mancanza di un nome migliore, usiamo il termine forme d’onda
classiche per indicare le forme d’onda composte da segmenti di retta.
Queste includono, tra molte altre possibilità, le onde a dente di sega, trian-
golare e rettangolare rappresentate in Figura 10.1. Le caratteristiche salienti
delle forme d’onda classiche sono sia i salti discontinui (variazioni di valore) sia
gli angoli (variazioni di pendenza). Nella figura, le onde a dente di sega e ret-
tangolare hanno salti (una volta per ciclo per la dente di sega e due volte per la
rettangolare) e pendenza costante altrove (negativo per l’onda a dente di sega,
zero per l’onda rettangolare). L’onda triangolare non presenta salti discontinui,
ma la pendenza cambia in modo discontinuo due volte per ciclo.
Per utilizzare efficacemente le forme d’onda classiche, è utile capire come
la forma dell’onda si rifletta nella sua serie di Fourier (per calcolarla, abbiamo
bisogno del background dal Capitolo 9, ecco perché questo capitolo appare qui
e non prima). Saranno necessarie anche strategie per sintetizzare digitalmente
le forme d’onda classiche. Queste forme d’onda risultano molto più suscettibili
ai problemi di foldover rispetto a quelle che abbiamo trattato prima, per cui
dovremo prestare particolare attenzione al suo controllo.
In generale, la nostra strategia per la previsione e il controllo del foldover
sarà quella di prendere in considerazione innanzitutto quelle forme d’onda cam-
pionate il cui periodo è un intero N . Poi, se vogliamo ottenere una forma d’onda
di un periodo non integrale (chiamiamolo τ , per esempio), approssimiamo τ co-
me un quoziente N/R di due interi. Almeno concettualmente, possiamo allora
sintetizzare la forma d’onda desiderata con il periodo N e quindi prendere solo
uno ogni R campione dell’output. Quest’ultima fase di sotto-campionamento è
quella in cui viene prodotto il foldover ed una sua attenta gestione ci aiuterà a
controllarlo.
277
278 Capitolo 10. Forme d’onda classiche
(a)
(b)
(c)
Figura10.1:
Figure 10.1:Classical
Forme waveforms:
d’onda classiche:
(a) the (a) dente (b)
sawtooth, di sega, (b) triangolare
the triangle, and (c)
e (c) rettangolare, mostrate come funzione di una variabile continua (non
the rectangle wave, shown as functions of a continuous variable (not sampled).
campionata).
o equivalentemente
(a)
(b)
(c)
(d)
Figura10.2:
Figure 10.2:Using
Utilizzo di una relazione
a symmetry relationdi
tosimmetria perand
extract even estrarre armonici pari
odd harmonics from
ae sawtooth
dispari dawave:
un’onda
(a) athe
dente di sega:
original (a) l’onda
sawtooth wave;a (b)
dente di sega
shifted by originale;
1/2 cycle;(b)
(c)
spostata di mezzo ciclo; (c) la loro somma (un’altra onda a dente
their sum (another sawtooth wave at twice the frequency); (d) their difference di sega al
(adoppio
squaredella frequenza); (d) la loro differenza (un’onda quadra).
wave).
(a)
L L
1 2 N
(b)
(c)
Figura 10.3: Dissezione di una forma d’onda: (a) forma d’onda originale con
Figure 10.3: Dissecting a waveform: (a) the original waveform with two discon-
due discontinuità; (b e c) le due componenti a dente di sega.
tinuities; (b and c) the two component sawtooth waves.
1/12
N
(N/2, -1/24)
due onde a dente di sega ricostruisce la forma d’onda della parte (a), ad eccezione
The sawtooth wave with a jump of one unit at the point zero is given by
di un possibile offset costante (DC).
L’onda a dente di sega con s[n]
un salto
= n/N di −
un’unità
1/2 nel punto zero è data da
over the period 0 ≤ n ≤ N − 1,s[n] and=repeats
n/N − 1/2 for other values of n. A sawtooth
wave with a jump (L, d) is given by s′ [n] = ds[n − L]. The sum of all the
nel periodo 0 ≤ n ≤ N − 1, e si ripete per gli altri valori di n. Un’onda a dente
component sawtooth waves is:
di sega con un salto (L, d) è data da s0 [n] = ds[n − L]. La somma di tutte le
componenti a dente x[n] = dè1 s[n − L1 ] + · · · + dj s[n − Lj ]
di sega
The slopes of thex[n] segments= d1 s[n of −the
L1waveform
] + · · · + djofs[n part− L(a)
j ]. of the figure are all
the same, equal to the sum of the slopes of the component sawtooth waves:
Le pendenze dei segmenti della forma d’onda della parte (a) della figura sono
tutte la stessa, uguale alla somma d1 + · · · + d j
− delle pendenze delle componenti a dente di
sega: N
Square and rectangle waves have−horizontal d + · ·· + d line . segments (slope zero); for this
1 j
to happen in general the jumps must add to zero: d1 + · · · + dj = 0. N
Onde To quadrate
decompose e rettangolari
classical waveforms hanno segmentiwith corners orizzontali
we use(pendenza
the parabolic zero); per
wave,
fare ciò in genere i salti devono
which, over a single period from 0 to N , is equal to 1 avere somma zero: d + · · · + d j = 0.
Per decomporre le forme d’onda classiche 2con gli angoli usiamo l’onda para-
1 n 1 1
bolica che, in un solo periodo p[n]da=0 a( N ,−è uguale ) − a
2N 2 24
2
as shown in Figure 10.4. It p[n] is =a 1second-degree
n
−
1 1
−(quadratic) polynomial in the
2 N 2
variable n, arranged so that it reaches a maximum halfway through the cycle at 24
ncome
= N/2, the DC
mostrato component
in Figura 10.4. isSizero
tratta (oruninpolinomio
other words, the average
quadratico (cioè divalue over
secondo
one cycle of the waveform is zero), and so that
grado) nella variabile n, disposto in modo che raggiunga un massimo a metà the slope changes discontinuously
by −1/N del
percorso at the beginning
ciclo a n = N/2, of thelacycle.componente DC è zero (in altri termini, il
valore medio dell’onda su unwith
To construct a waveform cicloany desired
è pari a zero)number e inofmodo
corners che(suppose
la pendenzathey
are at the points M , . . . , M ,
cambi discontinuamente di −1/N all’inizio del ciclo.
i l with slope changes equal to c 1 , . . . , c l ), we sum up
the necessary parabolic waves:
Per costruire una forma d’onda con un qualsiasi numero desiderato di angoli
(supponiamo chex[n] siano = nei−N punti
c1 p[n − MM 1 , . .] .−
,M· · l·, −con
N ccambi di pendenza uguali a
1 l p[n − Ml ]
c1 , . . . , cl ), sommiamo le necessarie onde paraboliche:
An example is shown graphically in Figure 10.5.
If the sum x[n]x[n] is to = −N contain −M
c1 p[nline 1] − · · · −
segments p[n − Ml ].of curves), the n 2
N clsegments
(not
terms
Un esempio in the èsum must graficamente
mostrato sum to zero. inFrom Figura the10.5.
expansion of x[n] above, this
implies that c + · · · + c = 0. Sums
Se la somma x[n] deve contenere segmenti di retta
1 l obtained from existing
(non classical
segmentiwaveformsdi curve),
(as in the figure) will
2 always satisfy this
la somma degli n termini deve essere pari a zero. Dall’espansione condition because the changesdi x[n]in sopra,
slope,
over a cycle, must all add to zero for the waveform
ciò implica che c1 + · · · + cl = 0. Le somme ottenute dalle forme d’onda classiche to connect with itself.
esistenti (come nella figura) soddisfano sempre questa condizione perché le va-
riazioni della pendenza, lungo un ciclo, devono avere tutte somma zero affinché
la forma d’onda si riconnetta con se stessa.
10.3.
302 Serie di Fourier delle forme CHAPTER
d’onda elementari 283
10. CLASSICAL WAVEFORMS
(a)
(b)
(c)
10.3 Serie
Fourier di series
Fourier ofdelle forme d’onda
the elementary elemen-
waveforms
tari
In general, given a repeating waveform X[n], we can evaluate its Fourier series
coefficients
In generale,A[k]
databyuna
directly
formaevaluating
d’onda X[n]the Fourier
che si transform:
ripete, possiamo valutare i
coefficienti A[k] della sua serie di Fourier
1 valutando direttamente la trasformata
di Fourier: A[k] = FT {X[n]}(k)
N
1 ! A[k] = 1
N FT {X[n]}(k)
"
= X[0] + U −k X[1] + · · · + U −(N −1)k X[N − 1]
N
1 −k
but doing this=directly
N X[0]for+U X[1] +
sawtooth and + U −(N −1)k
· · · parabolic − 1]require pages of
X[Nwill
waves
algebra (somewhat less if we were willing resort to differential calculus). Instead,
ma farlo direttamente per le onde paraboliche e le onde a dente di sega richie-
we rely on properties of the Fourier transform to relate the transform of a signal
derebbe pagine e pagine di algebra (un po’ meno se siamo disposti a ricorrere
x[n] with its first difference, defined as x[n] − x[n − 1]. The first difference of the
al calcolo differenziale). Invece, ci basiamo sulle proprietà della trasformata di
parabolic wave will turn out to be a sawtooth, and that of a sawtooth will be
Fourier per correlare la trasformata di un segnale x[n] con la sua prima diffe-
simple enough to evaluate directly, and thus we’ll get the desired Fourier series.
renza, definita come x[n] − x[n − 1]. La prima differenza dell’onda parabolica
In general, to evaluate the strength of the kth harmonic, we’ll make the
risulterà essere un’onda a dente di sega, e quella di un’onda a dente di sega
assumption that N is much larger than k, or equivalently, that k/N is negligible.
sarà abbastanza semplice da valutare direttamente e quindi otterremo la serie
We start from the Time Shift Formula for Fourier Transforms (Page 267)
di Fourier desiderata.
setting the time shift to one sample:
In generale, per valutare la forza del k−esimo armonico, faremo l’ipotesi che
N sia molto piùFT grande
{x[n di
− k,
1]}o=equivalente,
[cos(kω) − iche k/N sia
sin(kω)] FTtrascurabile.
{x[n]}
Cominciamo dalla formula di spostamento temporale per le trasformate di
Fourier (pagina 252) impostando ≈ (1 lo
− iωk)FT
spostamento {x[n]}temporale ad un campione:
Here we’re using the assumption that, because N is much larger than k, kω =
2πk/N is much FT {x[n than
smaller − 1]}unity and we−can
= [cos(kω) i sin(kω)]FT {x[n]}
make approximations:
≈ (1 −≈iωk)FT
cos(kω) 1 , sin(kω) ≈ kω
{x[n]}.
Qui usiamo l’ipotesi che, poiché N è molto più grande di k, kω = 2πk/N è
molto più piccolo dell’unità e possiamo fare le approssimazioni
cos(kω) ≈ 1, sin(kω) ≈ kω
284 Capitolo 10. Forme d’onda classiche
che sono buone a meno di un piccolo errore, nell’ordine di (k/N )2 . Ora usiamo
questo risultato per valutare:
1 −iN
FT {s[n]}(k) ≈ =
iωk 2πk
1
N [FT {s[n]}(1) · U n + FT {s[n]}(−1) · U −n ]
−i
≈ 2π [U n − U −n ]
sin(ωn)
= π
sin(kωn)
kπ
2 −2 2
( Nn − 2N
N
) −( N
n
− N2N )
= 2
2n 1
N2
−N − N12
2
≈ −s[n]/N.
Quindi (ancora per k 6= 0, piccolo rispetto a N ) otteniamo:
−1 −iN
FT {p[n]}[k] ≈ N · 2πk · F T {s[n]}[k]
−1 −iN −iN
≈ N · 2πk · 2πk
N
= 4π 2 k2
(0,1)
N
(N/2, -1)
10.3.4
10.3.2 Onda triangolare
Parabolic wave generale (non-simmetrica)
Nella Figura
The same 10.7 viene
analysis, with visualizzata
some differences un’onda triangolare
in sign generale, non
and normalization, simme-
works for
trica. Qui abbiamo disposto il ciclo in
parabolic waves. First we compute the difference:modo che, in primo luogo, la componente
DC sia zero (in modo che i due angoli abbiano altezze uguali e opposte) e in se-
condo luogo, in modo che il punto medio n del 2 2
(N − 12 )segmento
− ( n−1
N − 2)
più1 corto passi attraverso
il punto (0, 0). p[n] − p[n − 1] =
2
I due segmenti hanno pendenze pari a 1/M e −2/(N − 2M ), quindi la
2 N −2 2 è data da:
decomposizione nelle componenti n
− 2NaN onde
) − (paraboliche
n
(N N − 2N )
=
2
N2
x[n] = 2n (p[n 1 −M 1 ] − p[n + M ])
MN − N 2 2− N + N 2
= 2M
2
(qui usiamo la periodicità di p[n] per sostituire p[n − (N − M )] con p[n + M ]).
≈ −s[n]/N.
Il modo più generale di trattare le combinazioni lineari di onde elementari
(paraboliche k ̸=dente
So (again for e/o 0, small compared
di sega) to N )alla
è tornare we serie
get: di Fourier complessa, come
abbiamo fatto per trovare la serie per le onde elementari stesse. Ma in questo
caso particolare possiamo usare ≈ −1 −iNtrigonometrica per evitare il lavo-
un’identità
FT {p[n]}(k) · · FT {s[n]}(k)
ro extra di conversione avanti e indietro. N 2πk Innanzitutto sostituiamo la serie di
Fourier a valori reali: −1 −iN −iN
≈ h · ·
N 2 N 2πk 2πk
x(n) = 2π2 (M N −2M 2 ) cos(ω(n − M )) − cos(ω(n + M ))
N
=
4π 2 k 2 i
cos(2ω(n−M ))−cos(2ω(n+M ))
+
and as before we get the Fourier series: 4 + · · · .
! "
Ora usiamo l’identità, 1 cos(2ωn) cos(3ωn)
p[n] ≈ cos(ωn) + + + · · ·
2π 2 4 9
b−a a+b
cos(a) − cos(b) = 2 sin sin
10.3.3 Square and symmetric triangle 2 waves2
in
Tomodo che,toad
see how esempio,
obtain Fourier series for classical waveforms in general, consider
first the square wave,
cos(ω(n − M )) − cos(ω(n + M )) = 2 N sin(2πM/N ) sin(ωn)
x[n] = s[n] − s[n − ]
2
(anche qui abbiamo usato la definizione di ω = 2π/N ). Questa è una sempli-
ficazione poiché il primo termine seno non dipende da n; è solo un termine di
ampiezza. Applicare l’identità a tutti i termini dell’espansione per x[n] dà:
(M, 1)
(N-M, -1)
2
10.4 Prevedere
x[n] = e Ncontrollare
2
(p[n − M ] −ilp[n
foldover
+ M ])
M N − 2M
Ora passiamo alla situazione reale, in cui il periodo della forma d’onda non può
(here we’re using the periodicity of p[n] to replace p[n − (N − M )] by p[n + M ]).)
essere considerato arbitrariamente lungo e con valore intero. Supponiamo (per
avere qualcosa di definito) che vogliamo sintetizzare toni a 440 Hertz (La sopra
il Do centrale) e che stiamo usando una frequenza di campionamento di 44100
Hertz, in modo che il periodo sia di circa 100.25 campioni. Teoricamente, data
288 Capitolo 10. Forme d’onda classiche
magnitude
(dB)
0
-10
a/k
-20
-30
b/k 2
-40
-50
1 2 4 8 16 32
partial number (k)
tono di 440 Hz) potremmo generare l’onda a dente di sega ad una frequenza
di campionamento di 16 · 44100 = 705600 Hertz. Dobbiamo solo preoccuparci
di frequenze superiori a 705600 − 20000 = 685600 Hertz (che si ripiegano in
frequenze sonore; il foldover a frequenze ultrasoniche normalmente non ci pre-
occupa), quindi la prima parziale problematica è 685600/440 = 1558, la cui
ampiezza è −64dB rispetto a quella della fondamentale.
Questa attenuazione si degrada di 6 dB per ogni ottava superiore rispetto
alla fondamentale, in modo che a 10 kHz l’onda a dente di sega subisce so-
lo una caduta 37 dB dalla fondamentale alla parziale più alta che subisce il
foldover. D’altra parte, aumentando la frequenza di campionamento per un ul-
teriore fattore di due riduce il foldover per la stessa quantità. Se noi vogliono
realmente ottenere 60 decibel di rifiuto del foldover – fino a 10 kHz dalla fonda-
mentale –dovremo sovra-campionare di un fattore di 256, ad una frequenza di
campionamento di circa 11 milioni di Hertz.
forma d’onda. La nostra derivazione dello spettro delle forme d’onda classiche
sum corresponding to a square wave, using partials 1, 3, 5, 7, 9, and 11. The
usa i salti e gli angoli come un dispositivo di contabilità, e questo è possibile
cutoff
perchéfrequency can bed’onda
l’intera forma takenèasdeterminata
12ω (if ω isdallethe loro
fundamental
posizioni frequency).
e grandezze.
If we double the period of the square wave, to arrive at the same cutoff
Usando ulteriormente questo stratagemma, il problema della realizzazione
frequency, we would add twice as many Fourier partials, up to number 23, for
di versioni a banda limitata di forme d’onda classiche può essere affrontato
instance.
realizzando versioni a this
Extending banda process
limitata forever,
dei salti wee would eventually
degli angoli. Poichésee the sono
i salti ideal
band-limited step function, twice per (arbitrarily long)
la più grave minaccia di foldover, ci concentreremo su essi, anche se l’approccio period.
quiIndescritto
practicefunziona
we can do quite well using
perfettamente anche only theangoli.
per gli first two partials (one and
threePertimes the fundamental).
costruire una funzioneFigure a passo10.10 (partina)banda,
limitato showstutto
a two-partial
quello che approx-
dob-
imation of a square wave. The cutoff frequency is
biamo fare è aggiungere le componenti di Fourier di un’onda quadra, quante four times the fundamental;
soneifvogliamo,
the period of the raccogliere
e quindi waveform isla eight funzionesamples,
a passo thesucutoff is at thedei
uno qualsiasi Nyquist
salti.
frequency. Part (b) of the figure shows how we
La Figura 10.9 mostra la somma parziale Fourier corrispondente ad un’onda could use this step function
toquadra
synthesize,
usandoapproximately,
le parziali 1, 3,a 5, square
7, 9 ewave11. Laof twice
frequenza the period.
di taglioIfpuòtheessere
cutoff
frequency is the Nyquist frequency,
presa come 12ω (se ω è la frequenza fondamentale). the period of the waveform of part (b) is 16
samples. Each transition lasts 4 samples, because the
Se raddoppiamo il periodo dell’onda quadra, per arrivare alla stessa frequen-band-limited square wave
has a period
za di of eight samples.
taglio, aggiungeremo il doppio delle parziali di Fourier, fino alla numero 23,
We can make
ad esempio. Estendendo a band-limited sawtoothper
questo processo wave by adding
sempre, thepotremmo
alla fine four-sample-long
vedere
transition to a ramp function so that the end of the
la funzione a passo limitato in banda ideale, due volte per (un arbitrariamente resulting function meets
smoothly with itself end to end, as shown in part (c) of the figure. There is one
lungo) periodo.
transition per period,
Nella pratica so thefare
possiamo period must bebene
abbastanza at least
usando four samples;
solo le primethe duehighest
par-
fundamental
ziali (uno e tre frequency
volte la we can synthesize
fondamentale). Lathis way10.10
Figura is half(parte
the Nyquist
a) mostra frequency.
un’ap-
For this or lower
prossimazione di fundamental
un’onda quadra frequency, the foldover
a due parziali. La frequenza products all turn
di taglio out to
è quattro
bevolte
at least 60 dB quieter
la fondamentale; thansethe
quindi fundamental.
il periodo della forma d’onda è di otto campio-
ni,Figure 10.11 shows
la frequenza how
di taglio to generate
è alla frequenzaa di sawtooth
Nyquist.wave with a(b)
La parte spliced transi-
della figura
tion.
mostra The twopotremmo
come parameters are f , the
utilizzare questafundamental
funzione afrequency, and b, the band
passo per sintetizzare, ap-
limit, assumed to beun’onda
prossimativamente, at leastquadra as large di asduef .volte
We ilstart with Se
periodo. a digital sawtooth
la frequenza di
taglio
wave (a èphasor)
la frequenza
rangingNyquist,
from -0.5 il periodo
to 0.5 indellavalue.forma
The d’onda della
transition willparte
take(b) è
place
di 16 campioni. Ogni transizione dura 4 campioni,
at the middle of the cycle, when the phasor crosses 0. The wavetable is traversed in quanto l’onda quadra
inlimitata
a constant in banda
amount ha of
untime,
periodo 1/b,diregardless
otto campioni.of f . The table lookup is taken to
be non-wraparound,
Possiamo fare una soonda
thatainputs dente di outsega
of range
limitata output
in bandaeither -0.5 or 0.5.
sommando la tran-
sizione
At the lunga
end quattro campioni
of the cycle a una funzione
the phasor di rampajumps
discontinuously in modofrom che-0.5
l’estremo
to 0.5,
della
but thefunzione
output risultante si incontri
of the transition senza
table problemi
jumps an equal con se andstessa, estremo
opposite con
amount,
soestremo,
the result come mostrato nella
is continuous. parte the
During (c) portion
della figura.
of theC’è una transizione
waveform in whichper the
periodo, quindi il periodo deve essere almeno di quattro campioni; la frequenza
fondamentale più alta che possiamo sintetizzare in questo modo è metà del-
la frequenza di Nyquist. Per questa frequenza fondamentale o per quelle più
10.4. Prevedere e controllare il foldover 291
10.4. PREDICTING AND CONTROLLING FOLDOVER 311
(a)
(b)
(c)
0.5
-0.5
b/f
0.5
-0.5
-0.5 0.5
OUT
Figura
Figure 10.11: Block
Diagramma a blocchi
diagram per la
for making realizzazione
a sawtooth wavediwith
un’onda a dente
a spliced di
transi-
sega
tion. con una spliced transition.
10.5 Esempi
Combinando onde a dente di sega
L’esempio J01.even.odd.pd (Figura 10.12, parte a) mostra come combinare
le onde a dente di sega in coppia per estrarre gli armonici pari e dispari.
Le forme d’onda risultanti sono come mostrato nella Figura 10.3. L’esempio
10.5. Esempi 293
-- PHASES (percent) --
0 0 0
phasor~ / 100 / 100 / 100
Figura 10.12:
Figure 10.12: Combining
Combinando onde a waves:
sawtooth dente di
(a)sega: (a)and
adding sommare e sottrarre
subtracting onde
sawtooth
a dente di sega 1/2 ciclo fuori fase, per estrarre armonici pari e dispari;
waves 1/2 cycle out of phase, to extract even and odd harmonics; (b) combining (b)
combinare tre onde a dente di sega con ampiezze e fasi
three sawtooth waves with arbitrary amplitudes and phases. arbitrarie.
transition table is read at one or the other end-point, the output describes a
straight line segment.
10.5 Examples
Combining sawtooth waves
Example J01.even.odd.pd (Figure 10.12, part a) shows how to combine saw-
tooth waves in pairs to extract the even and odd harmonics. The resulting
waveforms are as shown in Figure 10.3. Example J02.trapezoids.pd (part b of
the figure) demonstrates combining three sawtooth waves at arbitrary phases
and amplitudes; the resulting classic waveform has up to three jumps and no
corners. The three line segments are horizontal as long as the three jumps add
to zero; otherwise the segments are sloped to make up for the the unbalanced
jumps so that the result repeats from one period to the next.
Example J03.pulse.width.mod.pd (not shown) combines two sawtooth waves,
of opposite sign, with slightly different frequencies so that the relative phase
314 CHAPTER 10. CLASSICAL WAVEFORMS
294 Capitolo 10. Forme d’onda classiche
-~ -~ -~
wrap~ wrap~ wrap~
-~ 0.5 -~ 0.5 -~ 0.5
*~ *~ *~
*~ 0.5 *~ 0.5 *~ 0.5
-~ 0.0833 -~ 0.0833 -~ 0.0833
AMPLITUDES (percent)
0 0 0
/ 100 / 100 / 100
*~ *~ *~
+~
+~
|
(OUT)
Figura 10.13:
Figure 10.13: Combining
Combinazione di ondewaves
parabolic paraboliche
to makeper creare unawith
a waveform forma d’onda
three cor-
con tre angoli.
ners.
changes continuously.
J02.trapezoids.pd (parteTheir sumfigura)
b della is a rectangle
mostra la wave whose width
combinazione di trevaries
onde in
a
time. This is known as pulse width modulation (“PWM”).
dente di sega con fasi e ampiezze arbitrarie; la forma d’onda classica risultante
Example
ha fino J04.corners.pd
a tre salti (Figure
e nessun angolo. 10.13)
I tre shows
segmenti how to
di retta add
sono parabolicfinché
orizzontali wavesi
to make a combined waveform with three corners. Each parabolic
tre salti hanno somma zero; altrimenti i segmenti sono inclinati per compensare wave is com-
puted from a sawtooth wave (ranging from -0.5 to 0.5) by squaring
i salti sbilanciati in modo che il risultato si ripeta da un periodo all’altro. it, multi-
plying by 0.5, and subtracting the DC component of -1/12, or -0.08333. The
L’esempio J03.pulse.width.mod.pd (non mostrato) combina due onde a dente
patch combines three such parabolic waves with controllable amplitudes and
di sega, di segno opposto, con frequenze leggermente diverse in modo che la
phases. As long as the amplitudes sum to zero, the resulting waveform consists
fase relativa cambi continuamente. La loro somma è un’onda rettangolare la
of line segments, whose corners are located according to the three phases and
cui larghezza varia nel tempo. Questo è noto come pulse width modulation
have slope changes according to the three amplitudes.
(“PWM”).
L’esempio J04.corners.pd (Figura 10.13) mostra come sommare onde pa-
Strategies
raboliche per for creareband-limiting
una forma d’onda sawtooth
combinata waves
con tre angoli. Ogni onda
parabolica è calcolata a partire da un’onda a dente di sega (che varia da −0.5 a
Example J05.triangle.pd
0.5), elevandola (Figure
al quadrato, 10.14, part poi
moltiplicandola a) shows
per 0.5a esimple way infine
sottraendo to make la
acomponente
triangle wave, in which only the slope of the rising and falling
DC pari a −1/12, o −0.08333. La patch combina tre di tali onde segment are
paraboliche con ampiezze e fasi controllabili. Finché la somma delle ampiezze
è pari a zero, la forma d’onda risultante è costituita da segmenti di retta, i cui
angoli sono posizionati in base alle tre fasi e presentano variazioni di pendenza
in base alle tre ampiezze.
10.5. Esempi 295
frequency slopes
0 up down 0 frequency
phasor~ 0 0 phasor~
/ 100 / 100
0 slope of rise segment
*~ -1 *~
*~
+~ 1 0 Duty cycle
*~ / 100 make the phasor cross zero at
the desired point of the cycle.
min~ -~
0 slope of decay segment
|
(OUT) * -1 multiply by desired slope, negating
so that the segment points downward
*~
(a) (b) minimum of rise and decay segments
min~ (makes a triangle wave)
Esercizi
1. Un oggetto phasor∼ ha una frequenza di 441 Hertz (ad una frequenza
di campionamento di 44100). Qual è l’ampiezza della componente DC?
Della fondamentale? Della parziale a 22050 Hertz (al di sopra della quale
le parziali subiscono foldover)?
∗ ∼ , 18 noise∼ , 240
bang∼ , 272 notein , 79
block∼ , 200 osc∼ , 16
outlet∼ , 98
bp∼ , 240
outlet , 98
catch∼ , 102
pack , 45
clip∼ , 131
pipe , 73
cos∼ , 49
cpole∼ , 244 poly , 108
czero rev∼ , 244 q8 rsqrt∼ , 274
czero∼ , 244 r∼ , 51
dac∼ , 18 receive∼ , 51
dbtorms , 18 receive , 21
delay , 73 rfft∼ , 269
delread∼ , 196 rifft∼ , 270
delwrite∼ , 196 rpole∼ , 244
del , 73 rzero rev∼ , 244
rzero∼ , 244
div , 108
r , 21
env∼ , 79 s∼ , 51
expr , 51
samphold∼ , 51
fft∼ , 269
select , 74
fiddle∼ , 131
sel , 74
ftom , 21
send∼ , 51
hip∼ , 47, 240
send , 21
inlet∼ , 98 snapshot∼ , 79
inlet , 98 stripnote , 79
line∼ , 19
switch∼ , 200
line , 74 s , 21
loadbang , 51 tabosc4∼ , 44
lop∼ , 240 tabread4∼ , 45
lrshift∼ , 274 tabreceive∼ , 269
makenote , 108 tabsend∼ , 272
mod , 108 tabwrite4∼ , 45
moses , 73 throw∼ , 102
mtof , 21 trigger , 82
297
298 Indice Analitico
t , 82 covarianza, 10
unpack , 102 creation arguments, 15
untill , 162
DC, 115, 222
vcf∼ , 241 debouncing, 65
vd∼ , 197 decibel, 4
vline∼ , 76 delay
wrap∼ , 51 composto, 70
in Pd, 73
abstraction, 97 semplice, 70
ADSR, generatore di inviluppo, 85 su flussi di controllo, 70
aliasing, 56 diagramma polo-zero, 220
ampiezza, 1, 2 dimensione della finestra, 194
complessa, 169 dinamica, 5
misure di, 2 distorsione, 121
di picco, 3 dominio
RMS, 3 del tempo, 170
analisi di Fourier, vedi Fourier, analisi della frequenza, 170
di Doppler, effetto, 189
angolo di rotazione, 180 duty cycle, 38
argomento (di un numero complesso),
166 eco, densità di, 183
armonici, 11 envelope follower, 65, 235
envelope generator, vedi generatore di
banco di voci, 94 inviluppo
banda di transizione, 211 equalizzazione, 213
banda passante, 210 estremi di banda, 116
battimento, 22 evento, 65
beating, vedi battimento
Bessel, funzioni di, 137 fase iniziale, 1
box, 14 Fast Fourier transform, vedi Trasfor-
GUI, 15 mata di Fourier veloce
message, 14 feedback, 154
number, 15 filtro, 173, 209
object, 14 a pettine, 173
ricircolante, 175
campionamento, 30 all-pass, 182, 233
esempi, 106 composto, 217
campione, 1 di Butterworth, 225
carrier signal, vedi segnale portante elementare
cents, 7 non-ricircolante, 214
Chebychev, polinomi di, 134 ricircolante, 217
classe, 15 passa-alto, 210
clipping, 25 passa-banda, 211
clipping function, vedi funzione di ta- passa-basso, 210
glio peaking, 213
colorazione, 183 shelving, 213
compander, 259 finestra, 3, 257
coniugato complesso, 216 flusso di controllo, 59
controllo, 57 numerico, 60
Indice Analitico 299
in Pd, 70 indice
foldover, 56 di modulazione, 127
fondamentale, 11 di waveshaping, 121
forma polare (di un numero comples- individuazione degli eventi, 65
so), 166 interferenza, 165
forma rettangolare (di un numero com- intermodulazione, 124
plesso), 166 invarianza temporale, 170
formante, 141 inviluppo spettrale, 31, 115
forme d’onda classiche, 277
formula di conversione nota/frequenza, kernel di Dirichlet, 250
6
Fourier larghezza di banda, 141, 211
analisi di, 247
magnitudine (di un numero comples-
trasformata di, 248
so), 166
formula di spostamento della fa-
merging su flussi di controllo, 70
se, 252
in Pd, 73
formula di spostamento tempo-
message box, vedi box
rale, 252
messaggi, 15, 70
su finestra, 257
MIDI, 6
veloce, 269
modulating signal, vedi segnale modu-
frequency domain, vedi dominio della lante
frequenza modulazione
frequenza ad anello, 116
angolare, 1 di frequenza, 23, 126
centrale, 141, 211 modulo (di un numero complesso), 166
di campionamento, 1 muting, 90
modulante, 127
portante, 127, 142 noise gate, 259
risposta in, vedi risposta in fre- number box, vedi box
quenza numeri complessi, 166
funzione
di taglio, 121 object box, vedi box
di trasferimento, 90, 120, 209 onda
finestra, 254 a dente di sega, 26, 277
finestra di Hann, 146, 254 parabolica, 281
quadra, 280
gain, vedi guadagno rettangolare, 277
gamma dinamica, 259 triangolare, 277
generatore di inviluppo, 9, 85 oscillatore, 7
ADSR, 85 ottava, 6
resettare, 92
generatore di transiente, 85 pacchetto d’onda, 148
generatori unitari, 7 PAF (generatore di formante allineata
guadagno, 173 in fase), 152
GUI box, vedi box parte immaginaria di un numero com-
plesso, 166
hop size, 257 parte reale di un numero complesso,
166
impulso, 172, 284 parziali, 115
incapsulamento, 97 patch, 7, 14
300 Indice Analitico
genitore, 97 sinusoide, 1
periodo, 11 sottopatch, 97
phase locking, 266 spettro, 113
pole-zero plot, vedi diagramma polo- continuo, 115
zero discreto, 113
polifonia, 94 rumoroso, 115
potenza media, 3 stopband, 211
prima differenza, 283 attenuazione della, 211
pruning su flussi di controllo, 70 switch-and-ramp, 92
in Pd, 73
tags, 96
qualità (“q”), 233 tasks, 95
tempo di stabilizzazione, 232
rete di ritardo tempo logico, 57
lineare, 170 tempo reale, 57
stabile, 175 Teorema del Limite Centrale, 125
unitaria, 179 Teorema di Nyquist, 55
ricerca su tabelle, vedi wavetable loc- threshold detection, 65
kup timbre stamping, 261
riflessione, 181 timbre stretching, 35, 144
ripple, 210 time domain, vedi dominio del tempo
risincronizzazione di un flusso di con- toggle, 22
trollo, 70 transition band, vedi banda di transi-
in Pd, 74 zione
risposta in frequenza, 173
valore assoluto (di un numero comples-
sample, vedi campione so), 166
sample number, 1 vocoder, 261
sample rate, vedi frequenza di campio-
namento waveshaping, 120
sampling, vedi campionamento wavetable lockup, 25
segnale non-interpolante, 26
armonico, 113 wavetables
formule di trasposizione momen-
inarmonico, 115
tanea, 31
modulante, 116
formule di trasposizione per loo-
portante, 116
ping, 30
segnali audio digitali, 1
window function, vedi funzione finestra
semitono, 6
window size, vedi dimensione della fi-
sequenza temporale, 59
nestra
serie di potenze, 125
settling time, vedi tempo di stabilizza- zero-crossing, 195
zione
sidebands, vedi estremi di banda
sidelobes, 148, 250
sintesi
additiva, 11
esempi di, 102, 105
di Karplus-Strong, 200
granulare, 32
sottrattiva, 234, 288
Bibliografia
[Bou00] Richard Boulanger, editor. The Csound book. MIT Press, Cambridge,
Massachusetts, 2000.
[DL97] Mark Dolson and Jean Laroche. About this phasiness business. In Pro-
ceedings of the International Computer Music Conference, pages 55–58,
Ann Arbor, 1997. International Computer Music Association.
[KS83] Kevin Karplus and Alex Strong. Digital synthesis of plucked-string and
drum timbres. Computer Music Journal, 7(2):43–55, 1983.
301
302 Bibliografia