Lezione 12 Pitch e frequenze Programmazione timbrica - Prof. Luca A. Ludovico Frequenza delle note musicali • Nella scorsa lezione si è visto come esprimere le ampiezze in decibel, che è un modo più affine al dominio della fisica acustica e dell’audio professionale. • Nella lezione odierna si vedrà quali tecniche di codifica (nello score) e quali opcode (nell’orchestra) mette a disposizione Csound per esprimere le frequenze in modo più affine alla teoria musicale. Programmazione timbrica - Prof. Luca A. Ludovico Pitch e frequenze Definizione di pitch class • La locuzione pitch class (o classe di altezze) è un concetto proprio dell'analisi musicale, nella fattispecie del suo approccio insiemistico. • In musica, una classe di altezze è un insieme di tutte le altezze che sono presenti ad un numero intero di ottave di distanza: per esempio, la pitch class relativa al Do naturale consiste di tutti i Do in tutte le ottave. • Nella teoria musicale occidentale, le pitch class sono 12 in quanto 12 sono i semitoni in cui si divide abitualmente l’ottava. – In altri sistemi musicali (ad esempio i raga indiani, la musica gamelan indonesiana, e la musica microtonale in generale) questo non sarebbe vero. Programmazione timbrica - Prof. Luca A. Ludovico Pitch e frequenze Etichette per i valori di pitch class • Anche se può essere comodo definire i valori di pitch class come Do, Do#, Re, ecc., questa terminologia non è formalmente corretta. Infatti privilegia un nome di nota accompagnato da uno stato di alterazione nella definizione della frequenza corrispondente. • Più propriamente, i pitch class sono in corrispondenza con le frequenze della scala temperata attualmente fissate per legge e riportate in una tabella ISO (si veda più avanti). Questa corrispondenza è indipendente dalla notazione musicale che genera la produzione di una determinata frequenza. – Si pensi ai tasti del pianoforte: un determinato tasto, e non una determinata scrittura in partitura, mette in vibrazione un insieme di corde che sono accordate per produrre una data frequenza. • Soluzione: creare una corrispondenza tra valori di pc e interi. Programmazione timbrica - Prof. Luca A. Ludovico Pitch e frequenze Nomi delle note nella teoria musicale Schema valido per il cosiddetto temperamento equabile, considerando le doppie alterazioni Programmazione timbrica - Prof. Luca A. Ludovico Pitch e frequenze Schema ISO delle frequenze Programmazione timbrica - Prof. Luca A. Ludovico Pitch e frequenze Rappresentazione numerica • Riferendosi alla scala cromatica, è possibile rappresentare ogni valore di pitch class con un intero compreso tra 0 e 11. Si noti che il sistema è «modulo 12». • Nell’immagine si è fissata per comodità una determinata rappresentazione notazionale, ma si sarebbero potuti usare i bemolli o le alterazioni doppie. • Convenzionalmente, in Csound lo 0 corrisponde al Do naturale. Programmazione timbrica - Prof. Luca A. Ludovico Pitch e frequenze Codifica Octave Point Pitch Class • Nella notazione Octave Point Pitch Class, l’altezza delle note si esprime in ottave e numero di semitoni. Tali elementi sono codificati all’interno di un unico numero decimale (per nota): – La parte intera, a sinistra della virgola, viene utilizzata per il numero di ottava della nota. Convenzionalmente Csound attribuisce il valore 8 all’ottava centrale (quella del Do a 261.63 Hz e del La a 440 Hz) – La parte frazionaria, a destra della virgola, viene usata per il numero di semitoni di spiazzamento rispetto alla base dell’ottava, che convenzionalmente parte dal Do naturale. • Esempi: – 8.00 – 8.01 – 7.09 Do naturale dell’ottava centrale (261.63 Hz) Do# / Reb dell’ottava centrale (277.18 Hz) La dell’ottava inferiore (220 Hz) Programmazione timbrica - Prof. Luca A. Ludovico Pitch e frequenze Osservazioni • La notazione presenta alcuni aspetti di ambiguità. Ad esempio, essendo il pitch class un universo modulo 12, dovrebbero essere ammessi come valori per la parte decimale solo valori nell’intervallo [00...11]. Invece è possibile esprimere valori superiori. In tal caso, si procede di ottava in ottava. – Ad esempio, le scritture 7.14 e 8.02 sono equivalenti, e corrispondono a 293.97 Hz • Sono ammesse suddivisioni dell’intervallo di ottava diverse dalla scala cromatica temperata. Detta fb la frequenza base di una determinata ottava, la notazione x.y (con y espresso su 2 cifre) calcola la frequenza finale f come: 𝑦 12 f = fb · 2 – Ad esempio: 8.02 > f = 261.63 · 8.025 > f = 261.63 · Programmazione timbrica - Prof. Luca A. Ludovico Pitch e frequenze 12 2 12 2 2 = 293,76 Hz 2,5 = 302,27 Hz (quarto di tono sopra) Funzione cpspch • Una volta espresse nello score le altezze in notazione Octave Point Pitch Class, è necessario raccogliere e interpretare correttamente questi valori in termini di frequenze all’interno dell’orchestra. – Per gli opcode generatori di suono le ampiezze sono sempre lineari e le frequenze sono sempre in Hz. • L’opcode cpspch converte un valore di pitch class in numero cicli al secondo, ossia di hertz. L’operazione opposta al momento non esiste. • Sintassi: cpspch (pch) ove l’argomento è calcolabile solo a init-time o alla frequenza kr, e le parentesi possono contenere espressioni. E’ una sintassi da funzione. • Esempio: → 12_01_conversione_pitch_ampiezze.csd Programmazione timbrica - Prof. Luca A. Ludovico Pitch e frequenze Precisione della conversione • La conversione in cicli al secondo non è un’operazione lineare, ma richiede un processo di calcolo esponenziale che, se eseguito ripetutamente, è oneroso in termini di tempi di calcolo. • Per questo motico Csound utilizza un procedimento di table lookup (ricerca all’interno di tabella), e per effettuarlo anche a frequenza di campionamento l’indice della tabella viene troncato senza interpolazione. Di conseguenza, la risoluzione frequenziale è limitata a 8192 suddivisioni discrete ed uguali dell’intervallo di ottava, di modo che i pitch della scala cromatica siano solo lievemente distorti. – Errore massimo = 0.15 cent, ove il cent è una delle suddivisioni del semitono in 100 1200 parti “uguali”. Il rapporto di frequenza tra 2 suoni che distano 1 cent è 2 • Se è richiesta una maggiore precisione di calcolo, esistono gli opcode cps2pch e cpsxpch (vedi slide successiva) Programmazione timbrica - Prof. Luca A. Ludovico Pitch e frequenze Opcode cps2pch e cpsxpch • Gli opcode cps2pch e cpsxpch convertono un valore di pitch class in cicli al secondo (Hz) suddividendo in maniera uguale (e configurabile) l’ottava. • Sintassi: icps cps2pch ipch, iequal ove ipch è un input numerico nella forma octave point pitch class e iequal, se positivo, è il numero di intervalli uguali (non più di 100) in cui dividere l’intervallo di ottava, mentre se negativo è il numero di tabella che contiene dei moltiplicatori di frequenza. • Sintassi: icps cpsxpch ipch, iequal, irepeat, ibase ove gli argomenti aggiuntivi permettono di specificare rispettivamente irepeat l’intervallo da suddividere (2 è l’ottava, 3 la dodicesima, 4 le due ottave, ecc.), non necessariamente intero ma comunque positivo ibase è la frequenza che corrisponde al pitch 0.0 Programmazione timbrica - Prof. Luca A. Ludovico Pitch e frequenze Confronto ed esempi • Esempio: le tre scritture seguenti sono equivalenti: ia = cpspch(8.02) ib cps2pch 8.02, 12 ic cpsxpch 8.02, 12, 2, 1.02197503906 • Osservazione: la prima è una funzione (argomento tra parentesi, assegnamento tramite operatore =), mentre gli altri sono opcode. • Il quarto argomento di cpsxpch è la frequenza del Do 4 ottave sotto la frequenza di C0 dello schema ISO. Questo valore è coerente con la numerazione dell’ottava centrale: 4 nello schema ISO, 8 in Csound. • Esempi: → 12_02_quarti_tono.csd, 12_03_scala_esatonale.csd Programmazione timbrica - Prof. Luca A. Ludovico Pitch e frequenze Estrazione di parte intera e decimale • I contenuti di questa slide si applicano a tutte le variabili numeriche di Csound. L’argomento diventa però particolarmente rilevante sulla notazione Octave Point Pitch Class. • int estrae un intero da un numero decimale, frac ne restituisce la parte frazionaria Sintassi: int(x) e frac(x), con argomento a init-, control- o audio-rate • ceil restituisce il più piccolo intero non minore di x, floor il più grande intero non maggiore di x Sintassi: ceil(x) e floor(x) con argomento a init-, control- o audio-rate • Esempio: → 12_04_bicordi.csd Programmazione timbrica - Prof. Luca A. Ludovico Pitch e frequenze Codifica Octave Point Decimal • Nella notazione Octave Point Decimal, l’altezza delle note si esprime in ottave e frazioni dell’ottava. Tali elementi sono codificati all’interno di un unico numero decimale (per nota): – La parte intera, a sinistra della virgola, viene utilizzata per il numero di ottava della nota, come nella notazione Octave Point Pitch Class – La parte frazionaria, a destra della virgola, viene usata per indicare come viene suddivisa l’ottava per generare la nota richiesta. • Esempi: – 8.5 – 9.25 Fa# / Solb dell’ottava centr., in quanto 0.5 indica mezza ottava ossia 6 semitoni sopra il Do Re# / Mib dell’ottava sup., in quanto 0.25 è un quarto di ottava ossia 3 semitoni sopra il Do Programmazione timbrica - Prof. Luca A. Ludovico Pitch e frequenze Tabella di confronto (ottava centrale) Nome Octave Point Pitch Class Octave Point Decimal Do 8.00 8.00 Do# / Reb 8.01 8.0833 Re 8.02 8.16667 Re# / Mib 8.03 8.25 Mi 8.04 8.3333 Fa 8.05 8.41667 Fa# / Solb 8.06 8.5 Sol 8.07 8.5833 Sol# / Lab 8.08 8.6667 La 8.09 8.75 La# / Sib 8.10 8.8333 Si 8.11 8.91667 Programmazione timbrica - Prof. Luca A. Ludovico Pitch e frequenze Funzioni cpsoct e octcps • La funzione cpsoct converte un valore di altezza da octave point decimal in numero di cicli al secondo, ossia in hertz. • Sintassi: cpsoct (oct) senza restrizioni sulla frequenza di calcolo dell’argomento. • L’operazione inversa è svolta dalla funzione octcps (cps), che converte gli hertz nella notazione octave point decimal. L’argomento può variare solo a init-time o a k-rate • Esempio: → 12_05_forme_onda.csd In questo esempio, nello score le altezze sono espresse normalmente in Hz, ma a seconda dell’ottava in cui ricadono viene caricata una diversa forma d’onda per l’opcode oscil. Programmazione timbrica - Prof. Luca A. Ludovico Pitch e frequenze Pitch e frequenze • In conclusione, esistono 4 modi predefiniti in Csound per esprimere pitch e/o frequenze: 1. 2. 3. 4. octave point pitch-class (8ve.pc) > pch octave point decimal > oct cicli al secondo > cps Numero di nota MIDI (0-127) > midinn • Csound mette a disposizione funzioni e opcode per passare da un sistema di rappresentazione a un altro. Programmazione timbrica - Prof. Luca A. Ludovico Pitch e frequenze