Lezione 13 Suoni campionati e loro elaborazione Programmazione
Lezione 13 Suoni campionati e loro elaborazione Programmazione timbrica - Prof. Luca A. Ludovico
Lettura di dati audio: opcode soundin • L’opcode soundin legge dati audio da un dispositivo esterno o da uno stream. Fino alla versione 5. 14 era limitato a 24 canali, ora ne gestisce fino a 40. • Sintassi: ar 1[, ar 2[, ar 3[, . . . a 24]]] soundin ifilcod [, iskptim] [, iformat] [, iskipinit] [, ibufsize] – ifilcod è un intero o una stringa che denotano il file sorgente – iskptim (opzionale, default=0) è il tempo in secondi da saltare. Da Csound 5. 00 sono ammessi valori negativi, che aggiungono ritardo. – iformat (opzionale, default=0) specifica il formato del file audio – Altri argomenti opzionali riguardano l’inizializzazione e la dimensione del buffer in campioni mono (default = 2048) – Ci deve essere corrispondenza tra il numero di canali e il numero di var audio • L’opcode soundin è stato trattato nella lezione 10 – Sintesi sottrattiva. Programmazione timbrica - Prof. Luca A. Ludovico I suoni campionati e la loro elaborazione
Osservazioni su soundin • Soundin non consente elaborazioni particolari, ma è semplice da usare. Si tratta di un generatore audio che prende i dati direttamente da un file audio pre-esistente. Questo consente di non scrivere in partitura una tabella-funzione ad hoc e di non utilizzare come argomenti per il generatore audio né ampiezza né frequenza, che vengono ricavati dal file audio stesso (ma possono essere modificati). • Il primo argomento, che è l’unico obbligatorio, è normalmente il nome del file e va scritto tra virgolette. Se si vuole indicare un percorso, è necessario usare la barra normale (slash /) anziché quella retroversa (backslash ) in quanto quest’ultima interrompe una riga di codice. Se come primo argomento si usa un numero, questo corrisponde a un file di nome soundin e di estensione pari al numero stesso. – Ad es. , a 1 soundin 12 carica in a 1 il file soundin. 12 • Esempi: → 13_01_soundin. csd, 13_02_soundin_reverb. csd, 13_03_thunder_rain. csd Programmazione timbrica - Prof. Luca A. Ludovico I suoni campionati e la loro elaborazione
Lettura di dati audio: opcode diskin 2 • Gli opcode diskin (deprecato) e diskin 2 (introdotto in Csound 5) leggono dati audio da file e sono in grado di alterarne il pitch e di adattare la frequenza di campionamento a quella del brano. • Sintassi: a 1[, a 2[, . . . a. N]] diskin 2 ifilcod, kpitch[, iskiptim [, iwrap[, iformat [, iwsize[, ibufsize[, iskipinit]]]]]] ove a 1 … a. N sono i canali del file (fino a 40 a partire da Csound 5. 14). • Differenze rilevanti rispetto a soundin: – kpitch è il rapporto tra la frequenza desiderata e quella del file audio (vedi funzionamento dell’oscillatore digitale) – iskiptim (default = 0) sono i secondi di audio da saltare, ipotizzando kpitch = 1; può essere negativo, caso in cui si aggiungono (-iskiptim/kpitch) secondi di ritardo – iwrap (default = 0) permette di creare loop se ha valore diverso da 0 – iwsize (default = 0) è la dim. della finestra di interpolazione (1 = arrotonda, 2 = lineare, 4 = cubica, ecc. con progressivo aumento dei tempi di calcolo). L’interpolazione è richiesta nella lettura “rallentata” dei campioni Programmazione timbrica - Prof. Luca A. Ludovico I suoni campionati e la loro elaborazione
Approfondimento su kpitch • • • kpitch = 1: file letto senza variazioni kpitch = 2: file letto al doppio della velocità → un’ottava sopra kpitch = 3: file letto al triplo della velocità → una dodicesima sopra kpitch = 0. 5: file letto alla metà della velocità → un’ottava sotto Altri intervalli: si ricordi la regola della radice dodicesima di 2. Se il valore è negativo, la lettura ha luogo dall’ultimo campione al primo • kpitch = -2: file letto al doppio della velocità → un’ottava sopra, e dall’ultimo campione al primo E’ un valore ricalcolato alla frequenza di controllo, quindi può variare nel tempo. • Esempio: → 13_04_loop. csd Programmazione timbrica - Prof. Luca A. Ludovico I suoni campionati e la loro elaborazione
Un approccio diverso • Anziché aprire un file audio direttamente in un instrument block, è possibile: – trasferirne i contenuti in una tabella tramite la routine GEN 01, e poi… – nell’orchestra leggere da tabella attraverso l’opcode loscil • Vantaggi di questo approccio: consente un utilizzo ancora più libero dei campioni del file audio, in quanto questi ultimi diventano valori numerici in una tabella. A questo punto, essi formano un modello (al pari della discretizzazione della sinusoide operata da GEN 10) che: – può essere suonato con punti di loop a piacere; – può essere agevolmente riscalato in ampiezza grazie all’implicita normalizzazione che porta i livelli tra -1 e +1, quindi per ottenere una data ampiezza è sufficiente una moltiplicazione per un valore noto (anziché “tentativo”); – è letto dalla RAM anziché dal disco; – ecc. Programmazione timbrica - Prof. Luca A. Ludovico I suoni campionati e la loro elaborazione
La routine GEN 01 • La routine GEN 01 trasferisce i dati da un file audio in tabella funzione. • Sintassi: f# time size 1 filcod skiptime format channel ove – size è il numero di punti della tabella, normalmente potenza di due o potenza di 2 + 1. Impostando però il valore a 0, viene dimensionata automaticamente – filcod è l’intero o la stringa che denota il file – skiptime è il numero di secondi da tralasciare nella lettura – channel è il numero di canali da leggere (0 = tutti i canali) – format specifica il formato di file (0 = leggi da header) • Osservazioni: la lettura si conclude alla fine del file o quando la tabella è piena. Eventuali spazi rimasti sono riempiti con zeri. Se p 4 (l’id della GEN 01) è positivo, ha luogo la post-normalizzazione. Programmazione timbrica - Prof. Luca A. Ludovico I suoni campionati e la loro elaborazione
Lettura di campioni da tabella: opcode loscil • L’opcode loscil legge suoni campionati (mono o stereo) da una tabella. • Sintassi: ar 1 [, ar 2] loscil xamp, kcps, ifn [, ibas] [, imod 1] [, ibeg 1] [, iend 1] [, imod 2] [, ibeg 2] [, iend 2] ove – xamp e kcps sono rispettivamente ampiezza e frequenza desiderate – ifn è il numero della tabella, tipicamente creata da GEN 01 e con dati mono o stereo – ibas (opzionale) è la frequenza base in Hz del suono registrato. Il default è 261. 626 Hz. Se il valore non è noto, si può usare 1 qui e per il kcps – per le triplette imod, ibeg, iend si veda la prossima slide Programmazione timbrica - Prof. Luca A. Ludovico I suoni campionati e la loro elaborazione
Lettura di campioni da tabella: opcode loscil • Sintassi: ar 1 [, ar 2] loscil xamp, kcps, ifn [, ibas] [, imod 1] [, ibeg 1] [, iend 1] [, imod 2] [, ibeg 2] [, iend 2] – imod 1, imod 2 (opzionali, default=-1) sono i modi di riproduzione per i loop di sustain e release. Un valore 1 denota looping normale, 2 looping avanti e indietro, 0 nessun looping; – ibeg 1, iend 1, ibeg 2, iend 2 (opzionali, dipendenti da mod 1, mod 2) sono i punti iniziali e finali per i loop di sustain e release rispettivamente. Si misurano in campioni dall’inizio del file, e la misura è uguale che il file sia mono o stereo. Se non sono specificati punti di looping ma è stato abilitato un modo di looping, il file è oggetto di looping nella sua interezza. • L’opcode loscil 3 effettua interpolazione cubica, mentre per i loop di alta precisione esistono lposcil, lposcil 3, ecc. • Esempi: → 13_05_loscil. csd, 13_06_loop_sustain. csd Programmazione timbrica - Prof. Luca A. Ludovico I suoni campionati e la loro elaborazione
- Slides: 9