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)