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