Informatica applicata alla musica
Introduzione a Csound
31/10/2006
Che cos’è Csound
Software per la sintesi digitale diretta
del suono.


Validità stabile.

Supporti a Csound.
Ottenere suoni con Csound

Orchestra e partitura
file orchestra
Programma Csound
file partitura
file audio
scheda audio
amplificatore
Elaborare suoni
precedentemente campionati
microfono
scheda audio, A/D
file audio registrato
file orchestra
Programma Csound
file partitura
file audio
scheda audio, D/A
amplificatore
Scrivere un’orchestra

Header: dà quattro informazioni di base che
tutti gli strumenti dovranno adottare.
Esempio:
sr = 44100
kr = 4410
ksmps = 10
nchnls = 1
Scrivere un’orchestra

Strumenti: costituiscono le varie “macchine
virtuali” che si vogliono costruire.
Esempio:
anuovaorc
instr
oscil
out
endin
1
10000, 220, 1
anuovaorc
Scrivere una partitura (score)

Funzioni: servono a creare forme d’onda di
cui possiamo scegliere le caratteristiche.
Esempio:
f1
0
4096
10
1
Scrivere una partitura (score)

Note: sono composte da determinati parametri
di cui gli unici tre obbligatori (p1, p2, p3) sono quelli
che indicano lo strumento che deve suonare, il
tempo di attacco e la durata.
Esempio:
i1
i1
i1
0
4
6
3
2
2
Generazione di sinusoidi
;01_sinusoidi.orc
sr = 44100
kr = 4410
ksmps = 10
nchnls = 1
instr
1
anuovaorc
;01_sinusoidi.sco
f1
0
i1
0
i1
4
i1
6
oscil
out
endin
10000, 220, 1
anuovaorc
4096
3
2
2
10
1
GEN10

Generazione di un suono complesso composto
da cinque sinusoidi in rapporto armonico.
f1

4096
10
1
1
1
1
1
Quinta armonica con ampiezza 15 volte
maggiore rispetto alla fondamentale.
f1

0
0
4096
10
1
1
1
1
15
0
0
0
1
Solo quinta armonica
f1
0
4096
10
0
Cambiare ampiezza e frequenza
AMPIEZZA E FREQUENZA FISSE
PER OGNI NOTA

; 01_sinusoidi.orc
sr = 44100
kr = 4410
ksmps = 10
nchnls = 1
anuovaorc
instr
oscil
out
endin
1
10000, 220, 1
anuovaorc
10
1
; 01_sinusoidi.sco
f1
i1
i1
i1
0
0
4
6
4096
3
2
2

AMPIEZZA E FREQUENZA DEFINITE
PER OGNI NOTA
; 05_cambio_ampfreq.orc
sr = 44100
kr = 4410
ksmps = 10
nchnls = 1
instr
asuoni
oscil
out
endin
; 05_cambio_ampfreq.sco
f1 0
4096
10
;p1 p2
p3
p4
i1 0
3
40000
i1 4
2
20000
i1 6
2
10000
I1 9
2
40000
1
p4, p5, 1
asuoni
1
p5
110
110
440
440
Polifonia

Gli strumenti Csound sono polifonici senza
limite di voci.
Esempio score:
f1 0
;p1 p2
i1 0
i1 0
i1 0
i1 0
4096
p3
3
3
3
3
10
p4
7000
7000
7000
7000
1
p5
261.625
329.627
391.995
466.163
;DO
;MI
;SOL
;SI 
Numero strumenti

Csound non pone limite al numero di strumenti che
possono suonare contemporaneamente.
Esempio:
;orchestra
sr = 44100
kr = 4410
ksmps = 10
nchnls = 1
instr
aprimo
oscil
out
endin
instr
asecondo oscil
out
endin
1
p4, p5, 1
aprimo
2
p4, p5, 2
asecondo
;score
f1 0
f2 0
;p1 p2
i1 0
i2 4
i1 8
i2 12
4096
4096
p3
3
3
3
3
10
10
p4
10000
10000
8000
8000
1
0
p5
222
222
800
800
1
Variabili di controllo: i glissandi

Creare eventi sonori che glissano da una
frequenza ad un’altra all’interno di una nota.
Esempio strumento:
valore iniziale
kglis
a1
instr 1
line
oscil
out
endin
220, p3, 440
p4, kglis, 1
a1
tempo valore finale
Variabili di controllo: inviluppi di
ampiezza

Creare una dinamica interna al suono: inviluppo.
Esempio strumento:
kenv
a2
instr 1
line
oscil
out
endin
0, p3, 10000
kenv, 220, 1
a2
Modalità per gestire ampiezza e
frequenza
1.
Metodo fisso
2.
Metodo dipendente da parametri dello score
3.
Metodo dipendente da una variabile di
controllo
Manipolare più segmenti
contemporaneamente

L’opcode linseg consente di costruire più
segmenti consecutivi (a differenza di line che ne
genera uno solo).
nella prima metà del tempo globale
nella seconda metà del tempo globale
kglissa
anew
linseg
oscil
out
endin
instr1
800, p3/2, 1000, p3/2, 400
1500, kglissa, 1
anew
Variabili di controllo che giacciono su
uno o più segmenti di esponenziale


Per avere un glissando più naturale: usare un
segmento di esponenziale.
line  expon
kglis
a1
instr 1
expon
oscil
out
endin
220, p3, 440
p4, kglis, 1
a1
Variabili di controllo che giacciono su
uno o più segmenti di esponenziale

linseg  expseg
segmenti di esponenziale per la frequenza
segmenti di esponenziale per l’ampiezza
kglissa
kinvil
anew
instr1
expseg
expseg
oscil
out
endin
p5, p3/2, p6, p3/2, p7
.001, p3/3, 1000, p3/3, 10000, p3/3, .001
kinvil, kglissa, 1
anew
Inviluppi con l’opcode linen

Creare inviluppi di ampiezza trapezoidali di tipo
attacco-costanza-estinzione.
tempo di attacco
kenv
a1
instr 1
linen
oscil
out
endin
10000, .1, p3, .5
kenv, 440, 1
a1
tempo di estinzione
Codifica frequenza in ottave e
semitoni
nome nota
Hz
Cpspch
DO
261.63
8.00
DO#
277.18
8.01
RE
293.66
8.02
RE#
311.13
8.03
MI
329.63
8.04
FA
349.23
8.05
FA#
370.00
8.06
SOL
392.00
8.07
SOL#
392.00
8.07
LA
440.00
8.09
LA#
466.17
8.10
SI
493.86
8.11
DO
523.26
9.00
;strumento
ifreq
a1
;score
f1 0
;p1 p2
i1 0
i1 0
i1 0
i1 0
instr 1
=
oscil
out
endin
cpspch(p5)
p4, ifreq, 1
a1
4096
p3
3
3
3
3
10
p4
7000
7000
7000
7000
1
p5
8.00
8.02
8.04
9.00
Codifica ampiezza in deciBel
dB
valore
90
31622.78
88
25118.86
…
…
…
…
2
1.26
0
1.00
;strumento
instr 1
iamp =
ifreq =
a1
oscil
out
endin
ampdb(p4)
cpspch(p5)
iamp, ifreq, 1
a1
Notazioni abbreviate

Note senza pause: ogni nota inizia dove termina la
precedente (+).
Stesso valore ripetuto (.).
Valori che variano linearmente (>).
i1
i1
i1
i1
i1
0
+
+
+
+


1
.
.
.
.
10000
10000
10000
10000
10000
200
>
>
>
600
Costanti e variabili


Costanti: valori che non cambiano nel corso
dell’esecuzione (sr, kr, sr/kr, …).
Variabili: “cassetti” dove vengono depositati i
risultati delle operazioni che seguono:
•
•
•
di inizializzazione;
di controllo;
audio.
Riferimenti utili

R.Boulanger, The Csound book, Cambridge,
MIT Press, 2000.

R.Bianchini, A.Cipriani, Il suono virtuale, Roma,
ConTempoNet, 2001.

http://www.csounds.com
Scarica

Introduzione a Csound - LIM | Laboratorio di Informatica Musicale