codifica dell’altezza delle note lezione 2 programmazione per la musica | prof. luca a. ludovico

15
Codifica dell’altezza delle note Lezione 2 Programmazione per la Musica | Prof. Luca A. Ludovico

Upload: clemente-giuliano

Post on 02-May-2015

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Codifica dell’altezza delle note Lezione 2 Programmazione per la Musica | Prof. Luca A. Ludovico

Codifica dell’altezza delle note

Lezione 2

Programmazione per la Musica | Prof. Luca A. Ludovico

Page 2: Codifica dell’altezza delle note Lezione 2 Programmazione per la Musica | Prof. Luca A. Ludovico

Competenze

1. Strutture dati built-in e tipi elementari2. Operatori di confronto3. Funzioni (metodi)

Programmazione per la Musica - Prof. Luca A. Ludovico2. Codifica dell'altezza delle note

Page 3: Codifica dell’altezza delle note Lezione 2 Programmazione per la Musica | Prof. Luca A. Ludovico

L’altezza delle note

• Si identificano principalmente 2 approcci:

– Simbolico (teoria musicale): nome della nota + ottavaEsempio: «Do dell’ottava centrale», «C4» ecc.

– Fisico (acustica): frequenza della notaEsempio: 261,63 Hz

• Esistono approcci intermedi, come nei cosiddetti linguaggi di performance (ad es. MIDI, Csound, MPEG)

Programmazione per la Musica - Prof. Luca A. Ludovico2. Codifica dell'altezza delle note

Page 4: Codifica dell’altezza delle note Lezione 2 Programmazione per la Musica | Prof. Luca A. Ludovico

Notazione dell'altezza

• A seconda dei periodi storici e dei Paesi, esistono metodi diversi per identificare l'altezza delle note musicali.

• Principali modi per indicare il nome delle note– Do/Ut · Re · Mi · Fa · Sol · La · Si (lingue neolatine e

slave)– C · D · E · F · G · A · B (lingue anglosassioni)

Programmazione per la Musica - Prof. Luca A. Ludovico2. Codifica dell'altezza delle note

Page 5: Codifica dell’altezza delle note Lezione 2 Programmazione per la Musica | Prof. Luca A. Ludovico

Alterazioni o accidenti

• Alterazioni più comuni:– bemolle - altera l’altezza della nota di un semitono in senso

discendente)– diesis - altera l’altezza della nota di un semitono in senso

ascendente)– bequadro – annulla l’effetto di un’alterazione precedente

• Alterazioni doppie– Doppio bemolle e doppio diesis alterano l’altezza della nota

naturale rispettivamente di un tono in senso discendente e ascendente

• Altre alterazioni (linguaggio microtonale)

Programmazione per la Musica - Prof. Luca A. Ludovico2. Codifica dell'altezza delle note

Page 6: Codifica dell’altezza delle note Lezione 2 Programmazione per la Musica | Prof. Luca A. Ludovico

Nomi delle note nella teoria musicale

Programmazione per la Musica - Prof. Luca A. Ludovico2. Codifica dell'altezza delle note

Schema valido per il cosiddetto temperamento equabile, considerando le doppie alterazioni

Page 7: Codifica dell’altezza delle note Lezione 2 Programmazione per la Musica | Prof. Luca A. Ludovico

Notazione scientifica

• Associa al nome della nota (e agli eventuali accidenti) un numero arabo indicante l'ottava.

• La definizione seguita è quella proposta dall'Acoustical Society of America nel 1939.

• C0 è il Do posto nella regione della più bassa frequenza udibile (circa 16 Hz); C4 è il Do centrale.

• La notazione scientifica dell'altezza è una scala logaritmica delle frequenze.

Programmazione per la Musica - Prof. Luca A. Ludovico2. Codifica dell'altezza delle note

Page 8: Codifica dell’altezza delle note Lezione 2 Programmazione per la Musica | Prof. Luca A. Ludovico

Schema ISO delle frequenze

Programmazione per la Musica - Prof. Luca A. Ludovico2. Codifica dell'altezza delle note

Page 9: Codifica dell’altezza delle note Lezione 2 Programmazione per la Musica | Prof. Luca A. Ludovico

Notazione di Helmholtz

• Indica l'altezza di ogni singola nota facendo seguire al nome della stessa scritto in maiuscolo (per le tre ottave più gravi) o minuscolo (per le altre) uno o più apici (′), posti rispettivamente a deponente o ad esponente. Proposta dallo scienziato tedesco Hermann von Helmholtz nel 1863.

• Esempio: successione di do nelle varie ottave … DOˌˌ DOˌ DO do do′ do′′ do′′′ …… Cˌˌ Cˌ C c c′ c′′ c′′′ …

• Varianti– inglese: pedici sostituiti da altrettante lettere maiuscole (Cˌ diventa

CC, Cˌˌ diventa CCC, ecc.) – tedesca: apici sostituiti da altrettante barrette

(c′ diventa c, c′′ diventa c, ecc.)

Programmazione per la Musica - Prof. Luca A. Ludovico2. Codifica dell'altezza delle note

Page 10: Codifica dell’altezza delle note Lezione 2 Programmazione per la Musica | Prof. Luca A. Ludovico

Codifica numerica del pitch

• Nei linguaggi di performance (ad esempio MIDI) spesso non interessa una descrizione completa del simbolo musicale, ma è sufficiente un’informazione aggregata.– Ad esempio, in MIDI la «notazione» è finalizzata solo alla sintesi di

frequenze.

• In tal caso, il tipo primitivo short è sufficiente allo scopo. – Vantaggi: compattezza, possibilità di utilizzare operatori aritmetici– Svantaggi: possibile compromissione della semantica musicale (ad

esempio, si# diventa indistinguibile da do naturale)

• short: intero a 16 bit con segno in complemento a 2int: intero a 32 bit con segno in complemento a 2long: intero a 64 bit con segno in complemento a 2– In JAVA non esistono tipi numerici «unsigned»

Programmazione per la Musica - Prof. Luca A. Ludovico2. Codifica dell'altezza delle note

Page 11: Codifica dell’altezza delle note Lezione 2 Programmazione per la Musica | Prof. Luca A. Ludovico

Approccio informatico

• Nell’attività di programmazione è necessario scegliere la codifica più affine alle proprie esigenze.

• Tra i tipi di dato primitivi definiti in JAVA:– i nomi delle note neo-latini richiedono il tipo String– i nomi delle note anglosassoni possono essere codificati come

String o come char– la codifica assoluta del pitch richiede tipi numerici, interi o con

virgola (short e int; float)

• In alternativa, è possibile definire un tipo enumerativo con un opportuno insieme di valori predefiniti.

Programmazione per la Musica - Prof. Luca A. Ludovico2. Codifica dell'altezza delle note

Page 12: Codifica dell’altezza delle note Lezione 2 Programmazione per la Musica | Prof. Luca A. Ludovico

Confronto tra altezze

Programmazione per la Musica - Prof. Luca A. Ludovico2. Codifica dell'altezza delle note

• Con tipi stringa, non è possibile usare gli operatori di confronto <, <=, >, >=. Sono invece ammessi gli operatori == e !=, ma attenzione a come lavorano.

• Con tipi carattere, è possibile usare gli operatori di confronto, ma è necessario prestare attenzione al salto G – A interno a un’ottava.

• Con tipi enumerativi, in JAVA non sono ammessi operatori di confronto.

• In ogni caso, è possibile implementare funzioni ad hoc.– Al contrario di C++, JAVA non ammette overload degli operatori.

Page 13: Codifica dell’altezza delle note Lezione 2 Programmazione per la Musica | Prof. Luca A. Ludovico

ESEMPI

NotePitchStringChar.javaNotePitchCharCompare.java

Programmazione per la Musica - Prof. Luca A. Ludovico2. Codifica dell'altezza delle note

Page 14: Codifica dell’altezza delle note Lezione 2 Programmazione per la Musica | Prof. Luca A. Ludovico

ESERCIZIO

La codifica MIDI associa un codice numerico incrementale, compreso tra 0 e 127, alle note della scala, comprese quelle alterate.A titolo di esempio, l’ottava centrale del pianoforte è numerata rispettivamente:60 (Do), 61 (Do#), 62 (Re), 63 (Re#), 64 (Mi), 65 (Fa), 66 (Fa#), 67 (Sol), 68 (Sol#), 69 (La), 70 (La#), 71 (Si)e ogni multiplo di 12 è il Do di un’ottava via via crescente.Si scriva un algoritmo che – dato in ingresso un qualsiasi pitch maggiore o uguale a 0 – lo converta nel rispettivo nome in italiano, trascurando lo stato di alterazione.Ad esempio,57 > «La» 58 > «La» 59 > «Si» ecc.Si gestiscano le possibili situazioni di errore.

Programmazione per la Musica - Prof. Luca A. Ludovico2. Codifica dell'altezza delle note

Page 15: Codifica dell’altezza delle note Lezione 2 Programmazione per la Musica | Prof. Luca A. Ludovico

ESERCIZIO

Si scriva un software che accetti in ingresso una coppia di parametri (argomenti di tipo stringa suddivisi da spazi) corrispondenti rispettivamente al nome della nota in italiano e al numero di ottava (4 = ottava centrale). Si trascuri l’informazione sullo stato di alterazione della nota.Il software dovrà produrre in uscita la corrispondente notazione di Helmholtz.Ad esempio:•l’avvio del software con java.exe nomeclasse C 4 stamperà a video c’•l’avvio del software con java.exe nomeclasse E 2 stamperà a video E

Programmazione per la Musica - Prof. Luca A. Ludovico2. Codifica dell'altezza delle note