79
Universitá degli Studi di Salerno Facoltá di Scienze Matematiche Fisiche e Naturali Tesi di Laurea in Informatica Un analizzatore armonico automatico per composizioni musicali a 4 parti Relatore Candidato Prof. Roberto De Prisco Parisi Matteo 056/101941 Anno Accademico 2011-2012

Universitá degli Studi di Salerno Un analizzatore armonico

Embed Size (px)

Citation preview

Page 1: Universitá degli Studi di Salerno Un analizzatore armonico

Universitá degli Studi di SalernoFacoltá di Scienze Matematiche Fisiche e Naturali

Tesi di Laureain Informatica

Un analizzatore armonico automaticoper composizioni musicali a 4 parti

Relatore CandidatoProf. Roberto De Prisco Parisi Matteo

056/101941

Anno Accademico 2011-2012

Page 2: Universitá degli Studi di Salerno Un analizzatore armonico
Page 3: Universitá degli Studi di Salerno Un analizzatore armonico

Indice

1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

2 Elementi di Teoria Musicale e Armonia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42.2 Semitono e Tono . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.3 Scala Musicale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2.3.1 Nomi e Gradi della scala . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.3.2 Modo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.3.3 Circolo delle quinte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2.4 Alterazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.5 Intervallo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.5.1 Classificazione di un intervallo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.5.2 Rivolto di un intervallo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.6 Triade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.6.1 Tipi di triade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.6.2 Rivolti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.6.3 Triadi nel modo maggiore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.6.4 Triadi nel modo minore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.7 Scrittura a quattro parti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.7.1 Raddoppi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.7.2 Posizione stretta e posizione lata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.8 Armonia delle parti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.8.1 Successioni armoniche abituali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.8.2 Funzione tonale degli accordi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.8.3 Il ruolo della dominante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.8.4 Le cadenze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

2.9 La modulazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202.9.1 Relazioni elementari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.9.2 La tonicizzazione e la modulazione passeggera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.9.3 Tonalità vicine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

2.10 Analisi Armonica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222.10.1 Principio della dominante secondaria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

2.11 Il corale come esempio di studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242.11.1 Storia del corale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242.11.2 Tecnica compositiva del corale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

v

Page 4: Universitá degli Studi di Salerno Un analizzatore armonico

vi Indice

3 La rappresentazione digitale della musica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273.2 MIDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

3.2.1 Storia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283.2.2 Caratteristiche dei segnali MIDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293.2.3 Le porte MIDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303.2.4 I Canali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303.2.5 Il protocollo e la sintassi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313.2.6 Lo standard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

3.3 MusicXML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343.3.1 Sintassi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

4 Algoritmo per l’analisi armonica automatica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414.2 Stato dell’arte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414.3 Analisi del problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444.4 Modello per il problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464.5 Progettazione dell’algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

4.5.1 Rappresentazione dei dati in input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504.5.2 Funzioni preliminari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504.5.3 Algoritmo per le zone grigie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524.5.4 Criterio di stop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564.5.5 Pseudo-codice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

5 Implementazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585.2 Lettura dell’input e creazione della partitura digitale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595.3 Analisi armonica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615.4 Stampa dei risultati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

6 Test e conclusioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 716.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 716.2 Progettazione dei test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 716.3 Test sul Corale BWV70 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 726.4 Test sull’insieme dei Corali di Bach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776.5 Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

Page 5: Universitá degli Studi di Salerno Un analizzatore armonico

Elenco delle figure

2.1 Circolo delle quinte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.2 Ampiezza di un intervallo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.3 Specie di un intervallo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.4 Rivolto di un intervallo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.5 Rivolto delle triadi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.6 Scrittura a parti strette . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.7 Scrittura a parti late . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3.1 Schema di un messaggio MIDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313.2 Messaggio MIDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323.3 Schema generale di un file MusicXML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363.4 Codifica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363.5 Top Level Element . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373.6 Codifica di uno spartito . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383.7 Uso del tag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393.8 Uso del tag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

4.1 Una possibile analisi armonica del frammento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454.2 Un Grafo a Stadi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464.3 Lista Li di possibili nodi generati dall’accordo di C+ (Do maggiore) . . . . . . . . . . . . . . . . . . 484.4 Grafo generato da una possibile sequenza di accordi (C+, F+, A-) . . . . . . . . . . . . . . . . . . . . 494.5 Suddivisione in zone della lista degli accordi in input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524.6 Calcolo del sottoinsieme di archi di peso massimo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

5.1 Lettura delle tracce di una sequenza MIDI in Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595.2 Creazione della partitura digitale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605.3 Esempio di uso della classe InfoFile.java sul corale BWV 70 . . . . . . . . . . . . . . . . . . . . . . . . . 615.4 Struttura gerarchica della partitura elettronica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615.5 Analizzatore Armonico Automatico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625.6 Database degli accordi (in formato XML) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635.7 implementazione dell’algoritmo per le Zone Grigie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645.8 Costruttore della classe GZGraph.java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655.9 Tabella dei premi (o pesi) per gli archi del grafo a stadi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665.10 Verifica delle tonalità per l’assegnazione del premio supplementare . . . . . . . . . . . . . . . . . . . . 675.11 Costruttore della classe MusicXMLmaker.java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685.12 Codice relativo al metodo elabMusicXMLFile() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695.13 File MusicXML in input alla classe MusicXMLmaker.java . . . . . . . . . . . . . . . . . . . . . . . . . . . 705.14 File MusicXML restituito in output dalla classe MusicXMLmaker.java . . . . . . . . . . . . . . . . 70

6.1 Frammento iniziale del corale BWV70. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

vii

Page 6: Universitá degli Studi di Salerno Un analizzatore armonico

viii Elenco delle figure

6.2 Risultato della chiamata getBeat(Measure 3, Beat 1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 736.3 Lettura e annotazione della sequenza accordi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 736.4 Eventuale accordo non riconosciuto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746.5 Individuazione delle zone grigie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746.6 percentuale di accordi riconosciuti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756.7 percentuale di accordi elaborati durante lo svolgimento dell’algoritmo . . . . . . . . . . . . . . . . . 756.8 Passaggi di grado nelle tonalità maggiori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 766.9 Passaggi di grado nelle tonalità minori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 766.10 Modulazioni presenti nel Corale BWV70 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776.11 Valori percentuali delle modulazioni più utilizzate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 796.12 Distribuzione delle tonalità utilizzate per l’armonizzazione dei Corali (in azzurro le

tonalità maggiori e in arancio quelle minori) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 806.13 Ritratto di Johann Sebastian Bach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

Page 7: Universitá degli Studi di Salerno Un analizzatore armonico

Per infrangere le regole, bisogna conoscerle!

Page 8: Universitá degli Studi di Salerno Un analizzatore armonico
Page 9: Universitá degli Studi di Salerno Un analizzatore armonico

Capitolo 1

Introduzione

L’argomento che verrà trattato si colloca nell’ambito dello studio dell’Analisi Armonica Automatica

di composizioni musicali.

Un brano musicale(sia esso di stile classico o pop) è caratterizzato da due elementi: la melodia e

l’armonia. L’analisi armonica rappresenta la fase più complessa dello studio di una composizione e

consiste nella determinazione della vera e propria struttura del brano in esame, sulla quale si sviluppa

l’elemento che lo caratterizza nella sua unicità e bellezza: la melodia.

Per poter comprendere a pieno i contenuti di questa tesi è necessario introdurre l’ambito di studi su

cui verte tale lavoro facendo uso di una similitudine. Si immagini che una composizione sia simile ad

una casa: una casa è formata da uno scheletro portante su cui si modellano le pareti interne ed esterne

e tutte le rifiniture che rendono ogni costruzione unica. Quando ci si trova di fronte ad una villa o ad

un palazzo quello che si nota subito è la bellezza dei rivestimenti o la forma del tetto, la disposizione

delle finestre o delle terrazze. Quello che non si vede è la disposizione dei pilastri, i muri portanti,

le fondamenta; eppure tutto quello che appare agli occhi dell’osservatore è in piedi proprio perché

l’ingegnere, progettista del palazzo(o della villa), ha studiato nei minimi particolari la disposizione

della struttura portante.

Si può quindi paragonare la Melodia alle rifiniture di una casa, e l’Armonia alla struttura portante.

L’Armonia è costituita dalla successione degli Accordi (che possono essere paragonati alla disposizione

dei pilastri di una casa) sui quali si costruisce la melodia. Questo lavoro si focalizzerà sullo studio dal

punto di ingegneristico della costruzione di una composizione musicale, quindi si prenderà in conside-

razione la struttura Armonica di un brano musicale e si cercherà di capire come determinare automa-

ticamente(grazie ad un algoritmo ad hoc) la successione degli accordi e la loro funzione nell’impianto

compositivo.

Prima di addentrarsi nella descrizione dell’algoritmo, si introdurranno dei concetti di teoria musicale

Page 10: Universitá degli Studi di Salerno Un analizzatore armonico

4 Capitolo 1. Introduzione

che sono alla base della realizzazione di questo lavoro, con particolare riferimento alle principali regole

di carattere armonico previste per le composizioni a quattro parti(Capitolo 2). Si illustreranno poi

gli standard utilizzati per l’implementazione dell’algoritmo(Capitolo 3), il modello teorico matematico

alla base del suo funzionamento(Capitolo 4). Si fornirà una possibile implementazione (Capitolo 5), e

infine si analizzeranno i risultati ottenuti utilizzando come caso di test l’insieme dei Corali di J. S.

Bach(Capitolo 6).

Page 11: Universitá degli Studi di Salerno Un analizzatore armonico

Capitolo 2

Elementi di Teoria Musicale e Armonia

2.1 Introduzione

L’armonia è il ramo della teoria musicale che studia la sovrapposizione verticale (simultanea) dei

suoni, la loro reciproca concatenazione (accordi) e la loro funzione all’interno della tonalità. La si

distingue perciò dalla linea melodica quale aspetto orizzontale della musica.

Il termine indica una consonanza di voci o strumenti musicali che produca una sensazione piacevole, o

anche una combinazione di accordi, cioè la concordanza di note simultanee, che provochi un’impressione

di piacere in chi ascolta. Dal Rinascimento in poi, il significato di armonia si restringe entro i limiti della

definizione scolastica indicando unicamente la teoria e la pratica della formazione e della concatenazione

degli accordi. Su queste successive modificazioni del significato del vocabolo ha influito sicuramente il

progressivo modificarsi dei caratteri dell’armonia. Si passa infatti dal mondo greco-romano, nel quale la

musica e canto sono esclusivamente monodici1, a quello tardorinascimentale, in cui la musica è dominata

dalla polifonia2.

Di seguito introduciamo i concetti fondamentali di teoria musicale e armonia utilizzati in questo

lavoro.

2.2 Semitono e Tono

Il semitono è la più piccola distanza che separa un suono dall’altro; mentre il tono è l’unione di

due semitoni. Il semitono è di due specie: diatonico e cromatico. Il semitono diatonico è formato da

due suoni di nome diverso: do – re[; il semitono cromatico è formato da due suoni di nome uguale:

1 monodici2 polifonia

Page 12: Universitá degli Studi di Salerno Un analizzatore armonico

6 Capitolo 2. Elementi di Teoria Musicale e Armonia

do – do]. Il tono e il semitono rappresentano l’unità di misura per la distanza tra ogni suono preso

successivamente.

2.3 Scala Musicale

Nel linguaggio musicale, una scala è una successione ascendente o discendente di suoni compresi

nell’ambito di una o più ottave. Il diverso numero di suoni che la compongono(cinque, sei, sette) e la

diversa disposizione dei toni e semitoni all’interno di essa danno luogo a diversi tipi di scale.

Gascendente

¯ ¯ ¯ ¯ ¯ ¯¯ ¯

discendente

¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯

2.3.1 Nomi e Gradi della scala

Nella armonia classica(a cui faremo riferimento) le scale sono composte da 3 sette note con nomi :

DO-RE-MI-FA-SOL-LA-SI. A ciascuna di esse può essere ci si può riferire attraverso l’uso dei numeri

romani(I-II-III-IV-V-VI-VII) che indicano il grado. Il grado di una nota stabilisce la posizione della

stessa nella successione che genera la scala in oggetto. Nello studio dell’armonia ogni grado ha una sua

funzione, e per questo motivo ad ognuno di essi corrisponde un nome che lo identifica:

Ggradi congiunti

¯ ¯ ¯ ¯ ¯gradi disgiunti

¯ ¯ ¯ ¯

La scala può presentarsi in moto ascendente e moto discendente a seconda del loro susseguirsi dal

grave all’acuto o dall’acuto al grave.

2.3.2 Modo

Il modo consiste nella diversa disposizione dei toni e semitoni all’interno dei sette suoni che com-

pongono la scala. I tipi di scale di cui ci occuperemo in questo lavoro sono essenzialmente due: le scale

di modo maggiore e di modo minore. La scala maggiore è formata da cinque toni e due semitoni. I

3 sette

Page 13: Universitá degli Studi di Salerno Un analizzatore armonico

Capitolo 2. Elementi di Teoria Musicale e Armonia 7

semitoni si trovano tra il III e IV grado e il VII e I grado della scala. Il modo minore è costituito da

tre diversi tipi di scale: la scala minore naturale, la scala minore melodica e la scala minore armonica.

La scala minore naturale è formata da cinque toni e due semitoni. I semitoni si trovano tra il II e III

grado e il V e VI grado. Tale scala si ottiene dagli stessi suoni della scala maggiore ma avendo come

punto di partenza il VI grado della scala maggiore. La scala minore melodica è formata da cinque

toni e due semitoni. Ha due diverse disposizioni: una nel moto ascendente e una nel moto discendente.

Nell’ascendere i semitoni si trovano fra il II e III grado e il VII e I; nel discendere la disposizione è

uguale a quella della minore naturale. La scala minore armonica è formata da tre toni, tre semitoni, e

un tono e mezzo. I semitoni si trovano tra il II e III grado, il V e VI grado e il VII e I grado. Il tono e

mezzo si trova tra il VI e VII grado.

2.3.3 Circolo delle quinte

Il circolo delle quinte o ciclo delle quinte è un grafico utilizzato nella teoria musicale per mostrare le

relazioni tra le dodici note che compongono la scala cromatica. L’intervallo di quinta perfetta ha molti

significati in teoria musicale: esso è alla base del temperamento pitagorico ed è l’intervallo che suona

meglio ed in modo più naturale per l’orecchio umano.

Figura 2.1: Circolo delle quinte

Page 14: Universitá degli Studi di Salerno Un analizzatore armonico

8 Capitolo 2. Elementi di Teoria Musicale e Armonia

Per illustrare tutti questi significati facciamo riferimento alla figura 2.1, dove in un quadrante di

orologio sono inserite in senso orario le note a partire dal Do in successione di quinte giuste. In que-

sto modo tutte e dodici le note sono rappresentate, e in senso orario ogni nota è adiacente alla sua

dominante mentre in senso antiorario alla sua sottodominante (nel caso di do: fa è sottodominante

e sol è dominante). Per determinare il numero di diesis o bemolle che sono inseriti in chiave per una

determinata tonalità ci si muove in senso orario per i diesis ed in senso antiorario i bemolle. Per esempio

partendo dal Do maggiore, che non ha accidenti (alterazioni) in chiave, ci spostiamo sul Sol che ha un

diesis in chiave (Fa]), il Re maggiore ha due diesis (Fa] e Do]) e così via. Nell’altro verso spostandoci

sul Fa maggiore abbiamo un bemolle in chiave (il Si[), il Si[ maggiore ne ha due (il Si[ ed il Mi[) e così

via. Il circolo delle quinte si può anche usare per definire le scale: 7 note consecutive adiacenti formano

una scala maggiore, 5 note consecutive compongono una scala pentatonica. Per esempio le note dal Fa

in senso orario fino al Si formano la scala di Do maggiore. Se invece consideriamo i nomi delle note come

accordi questi possono aiutare a visualizzare i movimenti armonici di una progressione tipica come la

cosiddetta seconda-quinta-prima (rappresentata spesso come ii-V-I, ovvero: seconda minore - quinta

maggiore dominante - tonica). Per esempio la tipica progressione Sol-7 / Do7 / Fa si visualizza in senso

antiorario partendo dal Sol.

2.4 Alterazioni

Le alterazioni sono segni grafici che si pongono al lato sinistro delle note e hanno la funzione di alzare

o abbassare di un semitono la nota a cui si riferiscono. Le alterazioni sono tre il ](diesis) il [(bemolle)

e il \(bequadro). il ] innalza di un semitono la nota a cui si riferisce; il a¯bbassa di un semitono la nota

a cui si riferisce; il bequadro annulla riporta allo stato naturale la nota precedentemente alterata.

Le alterazioni si dividono in fisse e transitorie. Le alterazioni fisse costituiscono la tonalità principale

o d’impianto di un brano di musica e si scrivono all’inizio del pentagramma, immediatamente dopo la

chiave. L’insieme delle alterazioni poste in chiave viene definita armatura di chiave o armatura tonale

del brano di musica considerato. Le alterazioni transitorie si usano all’interno della composizione ogni

volta che se de presenta l’esigenza è si applicano solo alla nota in oggetto.

Page 15: Universitá degli Studi di Salerno Un analizzatore armonico

Capitolo 2. Elementi di Teoria Musicale e Armonia 9

2.5 Intervallo

L’intervallo in musica rappresenta la distanza tra due note(o suoni). Si misura in termini di

toni e semitoni. Un intervallo viene detto armonico quando i suoni che lo formano sono emessi

contemporaneamente e melodico se i suoni che lo formano vengono emessi in successione.

L’intervallo armonico - secondo una consolidata convenzione cui ci atterremo - viene sempre

considerato ascendente, cioè dal grave verso l’acuto (dal basso verso l’alto).

2.5.1 Classificazione di un intervallo

Gli intervalli vengono classificati mediante due caratteristiche: l’ampiezza e la specie. Il primo attri-

buto si riferisce al numero di gradi della scala abbracciati, estremi inclusi. Un intervallo è detto semplice

quando la sua ampiezza non supera l’ottava, composto se la oltrepassa.

Gunisono

¯ ¯seconda

¯ ¯terza

¯¯quarta

¯¯quinta

¯¯sesta

¯¯settima

¯¯

ottava

¯¯

nona

¯¯

Figura 2.2: Ampiezza di un intervallo

Il secondo livello di classificazione fornisce un’indicazione più dettagliata. In merito alla specie, un

intervallo può essere giusto , maggiore, minore, aumentato, diminuito. Sono detti intervalli giusti sono:

la quarta la quinta e l’ottava. Tutti gli altri intervalli (seconda terza sesta settima)sono maggiori se

le note che lo compongono appartengono alla scala maggiore, o minori se le note che lo compongono

appartengono ad una delle diverse scale minori.

Aumentando di un semitono un intervallo maggiore o giusto, questo diventa aumentato. Diminuendo

di un semitono un intervallo minore o giusto, questo diventa diminuito.

G2a Mag.

¯ ¯3a Mag.

¯ ¯4a Giusta

¯ ¯5a Giusta

¯ ¯6a Mag.

¯ ¯7a Mag.

¯ ¯8a Giusta

¯¯

Figura 2.3: Specie di un intervallo

Page 16: Universitá degli Studi di Salerno Un analizzatore armonico

10 Capitolo 2. Elementi di Teoria Musicale e Armonia

2.5.2 Rivolto di un intervallo

Il rivolto di un intervallo si ottiene innalzando di un’ottava la nota inferiore o abbassando di un’ottava

quella superiore.

Per calcolare il rivolto di un accordo in maniera automatica si può seguire una semplice regola che

possiamo chiamare regola del nove: denotiamo con A l’intervallo di partenza e con B il rivolto di A

che vogliamo determinare. L’ampiezza di B è uguale alla differenza tra la costante 9 e l’ampiezza di

A. Ad esempio il rivolto di una quinta(5) è una quarta(9-5). Per stabilire la specie vale la seguente

corrispondenza: il rivolto di un intervallo maggiore è un intervallo minore, e viceversa; il rivolto di un

intervallo aumentato è un intervallo diminuito, e viceversa; il rivolto di un intervallo giusto resta tale;

G3oMag.

¯¯6oMin.

¯¯4oEcc.

¯¯5oDim.

¯¯5oGiusta

¯¯4oGiusta

¯¯

Figura 2.4: Rivolto di un intervallo

2.6 Triade

La combinazione di due o più intervalli armonici costituisce l’accordo che è l’elemento fondamentale

nello studio dell’armonia tonale. Il tipo più elementare di accordo è la triade, che è un insieme di tre

suoni emessi simultaneamente; questo tipo di accordo si ottiene sovrapponendo due intervalli di terza.

Con questa disposizione le note che compongono la triade prendono il nome di fondamentale, terza e

quinta.

Ogni grado della scala può essere usato come fondamentale per costruire una triade ed in tal caso

esse vengono indicate con gli stessi nomi e gli stessi gradi che designano le loro fondamentali.

2.6.1 Tipi di triade

L’utilizzo di diverse combinazioni di terze maggiori e minori nella composizione delle triadi danno

origine a quattro tipi di triade:

Page 17: Universitá degli Studi di Salerno Un analizzatore armonico

Capitolo 2. Elementi di Teoria Musicale e Armonia 11

una terza minore su una terza maggiore dà origine ad una triade maggiore(detto anche accordo

perfetto maggiore);

GDo Maggiore

I

¯¯¯IV

¯¯¯V

¯¯¯La Minore Armonica

V

¯4¯¯VI

¯¯¯

una terza maggiore su una terza minore dà origine ad una triade minore(detto anche accordo perfetto

minore);

GDo Maggiore

II

¯¯¯III

¯¯¯VI

¯¯¯La Minore Armonica

I

¯¯¯IV

¯¯¯

due terze maggiori sovrapposte formano una triade eccedente(accordo di 5a diminuita);

GDo Maggiore

VII

¯¯¯La Minore Armonica

II

¯¯¯

VII

4¯¯¯

due terze minori sovrapposte formano una triade diminuita(accordo di 5a aumentata);

GDo Maggiore = La Minore Armonica

III

¯¯4¯

2.6.2 Rivolti

La triade, essendo composta da tre note, può trovarsi disposta in altrettante combinazioni diverse.

Quando la fondamentale corrisponde alla nota più grave dell’accordo, si dice che la triade è in stato

fondamentale; se la nota più grave è la terza, allora la triade è in primo rivolto; se la nota più grave è

la quinta, allora la triade è in secondo rivolto.

GFondamentale

¯¯¯I Rivolto

¯¯¯II Rivolto

¯¯¯

Figura 2.5: Rivolto delle triadi

Page 18: Universitá degli Studi di Salerno Un analizzatore armonico

12 Capitolo 2. Elementi di Teoria Musicale e Armonia

2.6.3 Triadi nel modo maggiore

Nel modo maggiore vi sono tre triadi maggiori, poste sul I, IV e V grado e tre triadi minori che si

trovano sul II, III e VI grado. Sul VII grado vi è una triade diminuita(o semidiminuita). Nell’analisi

armonica si utilizzano i numeri romani per riferirsi alle triadi e in questo lavoro saranno indicate con il

carattere maiuscolo le triadi maggiori e con il minuscolo le triadi minori e diminuite.

2.6.4 Triadi nel modo minore

La disposizione delle triadi nel modo minore varia a seconda del diverso tipo di scala che viene

utilizzata.

Nel modo minore naturale vi sono tre triadi maggiori, poste sul III, VI e VII grado e due triadi minori

che si trovano sul I e V grado. Sul II grado vi è una triade diminuita(o semidiminuita). Nel modo minore

armonico vi sono due triadi maggiori, poste sul V e VI grado e due triadi minori che si trovano sul I e

IV grado. Sul II e VII grado vi è una triade diminuita(o semidiminuita), mentre sul III grado si trova

una triade aumentata.Nel modo minore melodico(come per la relativa scala) l’armonizzazione varia a

seconda del moto ascendente o discendente. Nell’ascendere vi sono due triadi maggiori, poste sul IV e

V grado e due triadi minori che si trovano sul I e II grado; una triade aumentata sul III grado e due

triadi diminuite sul VI e VII grado. Nel discendere, l’armonizzazione segue la disposizione della scala

minore naturale.

E’ bene fare qualche precisazione per semplificare il discorso relativo all’armonizzazione delle scale

minori. In passato si riteneva che la scala minore armonica fosse l’unica scala da cui derivassero tutte

le triadi del modo minore, ma questo punto di vista ha generato molta confusione nell’interpretazione

delle successioni armoniche. Dallo studio della musica tonale(’700 e ’800 prevalentemente) ne è scaturito

che:

- La più usata tra le triadi di mediante(III grado) è quella maggiore;

- Le triadi melodiche di II e IV grado si usano solo quando la successione della scala è ascendente. In

genere il II è seguito dal III e il IV è seguito dal V;

- La forma melodica ascendente del VI grado è piuttosto rara;

- La triade minore sul V grado non viene quasi mai usata davanti alla triade di tonica(I grado);

- La triade diminuita sul II grado è la più usata nella musica tonale;

Page 19: Universitá degli Studi di Salerno Un analizzatore armonico

Capitolo 2. Elementi di Teoria Musicale e Armonia 13

- La triade maggiore sul VII grado non innalzato(scala minore naturale) viene usata nel moto

discendente ed ha funzione di dominante secondaria della triade del III grado;

2.7 Scrittura a quattro parti

La maggior parte della musica tonale (settecento e ottocento) è basata su un’armonizzazione a quat-

tro parti. Ciò sta a significare che nella successione degli accordi, ciascuno di essi contiene quattro

suoni e quindi ne risultano quattro linee melodiche che si muovono contemporaneamente. Lo studio

dell’armonia(e quindi l’analisi) si rifà ai principi di scrittura a quattro parti, poiché essi rappresenta-

no lo strumento principale per costruire l’ossatura di tutte le composizioni, anche le più complesse.

Basti pensare che nella partitura di una sinfonia, il considerevole numero di righi apparenti(una per

ogni strumento o sezione4), deriva spesso dal raddoppio di una delle parti(o voci5) in una armonia

pensata essenzialmente a quattro parti. In questo lavoro faremo riferimento a ciascuna delle quat-

tro parti associandole a ciascuna delle quattro voci del canto: soprano, contralto, tenore e basso.ăIG

soprano

¯¯ contralto

¯¯

tenore

¯¯

basso

¯¯

2.7.1 Raddoppi

Poiché si utilizza una scrittura a quattro parti, essendo le triadi formate da tre suoni, vi è il bisogno

di raddoppiare una delle note per avere la quarta. Il raddoppio più comune nella musica tonale è quello

di fondamentale, ma a volte è possibile raddoppiare la terza o la quinta.

4 cos’è una sezione5 cos’è una voce

Page 20: Universitá degli Studi di Salerno Un analizzatore armonico

14 Capitolo 2. Elementi di Teoria Musicale e Armonia

2.7.2 Posizione stretta e posizione lata

Il comune senso armonico6 ci fa avvertire la necessità di avere una certa cura nel posizionamento delle

diverse note che compongono gli accordi all’interno della stesura della composizione. La disposizione

più comune si ha quando gli intervalli più ampi si trovano tra le note gravi e quelli più stretti tra le

note acute7. In una condotta elegante delle parti, in genere, la distanza tra due voci in un accordo non

supera l’ottava(ad eccezione delle voci di tenore e basso).

G ¯¯¯ ¯¯¯ ¯¯¯

Figura 2.6: Scrittura a parti strette

Diciamo che l’armonia è in posizione stretta(o a parti strette) quando le tre voci superiori(soprano,

contralto e tenore) si trovano il più vicino possibile. Diversamente parleremo di armonia in posizione

lata(o a parti late). Il questa tesi useremo come caso di studi composizioni scritte a parti late per una

questione di maggiore chiarezza grafica, ma l’analisi armonica esula chiaramente da questo particolare.ăIG

¯¯¯¯

Parti late

¯¯¯¯

¯¯¯¯

Figura 2.7: Scrittura a parti late

2.8 Armonia delle parti

La successione armonica è fondamentale per garantire la coerenza di una composizione musicale

tonale. Per successione armonica s’intende non solo il susseguirsi degli accordi, ma anche(e soprattutto)

il criterio grazie al quale risulta una tale concatenazione, infatti nella prassi compositiva tradizionale

6 cos’è il senso comune armonico7 richiami di acustica

Page 21: Universitá degli Studi di Salerno Un analizzatore armonico

Capitolo 2. Elementi di Teoria Musicale e Armonia 15

alcune successioni armoniche sono più comuni di altre. Vale quindi il principio che la scelta delle singole

note all’interno di un accordo, in una certa successione, è di minore importanza rispetto alla relazione

tra una fondamentale e l’altra, e tra le fondamentali e la scala che da cui esse derivano; in sintesi, il

grado della fondamentale rispetto alla scala di riferimento definisce una specifica funzione dell’accordo

costruito su di esso.

Quindi la successione degli accordi può essere espressa come successione delle fondamentali, indicate

con i numeri romani, che rappresentano i gradi della scala su cui vengono costruiti gli accordi.

2.8.1 Successioni armoniche abituali

L’elenco dei principi che seguono sono basati sull’analisi delle composizioni degli autori del periodo

tonale. Non sono delle vere regole, ma chiariscono abbastanza la relazione che intercorre tra i singoli

accordi all’interno di una scala. Tali principi sono stati usati nel funzionamento dell’algoritmo come

riferimento nelle scelte deterministiche[1, pag. 21, pag 45].

Per l’armonizzazione delle scale maggiori vale che:

- Il I grado è seguito dal IV o dal V, a volte dal VI; meno sovente dal II o dal III

- Il II grado è seguito dal V, a volte dal IV o dal VI; meno sovente dal I o dal III

- Il III grado è seguito dal VI o dal IV; meno sovente dal I, II o dal V

- Il VI grado è seguito dal V o dal I o dal II; meno sovente dal III o dal VI

- Il V grado è seguito dal I o dal IV o dal VI; meno sovente dal II o dal III

- Il VI grado è seguito dal II o dal V, a volte dal III o dal VI; meno sovente dal I

- Il VII grado è seguito dal I o dal III, a volte dal dal VI; meno sovente dal II, IV o V

Per le scale minori valgono gli stessi criteri con qualche differenza:

- Il I grado può essere seguito dalla triade maggiore del VII grado

- La triade maggiore del III grado può essere seguita dalla triade maggiore del VII grado

- La triade maggiore del VII grado è seguita dal III, a volte dal VI; più raramente dal IV

- La triade diminuita del VII è seguita dal I

Page 22: Universitá degli Studi di Salerno Un analizzatore armonico

16 Capitolo 2. Elementi di Teoria Musicale e Armonia

2.8.2 Funzione tonale degli accordi

Possiamo dire che per tonalità intendiamo l’organizzazione dei rapporti intorno ad una tonica(I

grado). Ciò significa che vi è una nota centrale(fondamentale) che è in qualche modo sorretta da tutte

le altre note. Quando si dice di star suonando in Re maggiore la nota centrale è appunto il Re; questo

implica che si usano le note della scala di Re maggiore e gli accordi che ne stabiliscono quella tonalità.

Ma la tonalità non si esaurisce soltanto con l’uso delle note di una determinata scala(es. Re magg.), ma

nello stabilire i rapporti tra esse e la nota che rappresenta il centro tonale. Ne deriva che ogni grado

nella scala ha la sua parte all’interno dello schema tonale, cioè la sua funzione tonale.

Appare subito chiaro che l’accordo di tonica e la sua fondamentale diventano la base della tonalità

di una composizione e di tutta l’armonia che esso contiene. La sottodominante e la dominante danno

un sostegno bilanciato alla tonica, come due pesi equidistanti ai lati di un fulcro[1, pag. 50].

la tonica, la sottodominante e la dominante vengono chiamati gradi forti, essendo i gradi su cui

si fonda la tonalità; la mediante e la sopradominante sono detti gradi modali8 e hanno l’effetto di

caratterizzare più il modo che la tonalità poiché la loro armonizzazione cambia da modo maggiore a

modo minore. Il VII grado, la sensibile, di solito non esercita la funzione di nota fondamentale, ma

viene assorbita dall’accordo di dominante.

Da quanto appena detto possiamo concludere che la struttura fondamentale della musica tonale si

basa sui gradi forti - I, IV e V grado(a volte II) - e che i gradi modali sono utilizzati per ottenere la

varietà. Vi è una vasta gamma di applicazioni di questo principio generale, che possiamo considerare

una norma per le composizioni del periodo tonale per cui la tonalità di base non cambia.

2.8.3 Il ruolo della dominante

Senza dubbio l’elemento armonico più importante è la funzione di dominante. La successione

dominante-tonica determina la tonalità in maniera molto più forte rispetto a quanto possa fare l’ac-

cordo di tonica da solo. Per tale motivo l’uso dell’armonia di dominante per confermare una tonalità è

una pratica molto comune nelle composizioni tonali. Bisogna notare che non si usa quasi mai la triade

minore sul V grado poiché, essendo assente la terza che è sensibile della fondamentale della triade del

I grado, ne risulta fortemente indebolita. Per completezza diciamo che la triade minore sul V grado si

8 copiare nota piston pag.51

Page 23: Universitá degli Studi di Salerno Un analizzatore armonico

Capitolo 2. Elementi di Teoria Musicale e Armonia 17

trova spesso in connessione con la scala minore melodica discendente, e quindi nel movimento che va

dalla tonica alla dominante e non viceversa.

2.8.4 Le cadenze

In questa sezione parleremo di quelle che sono le formule musicali che si usano per concludere la

frase musicale9. Le cadenze rappresentano i punti di respiro della musica, nei quali si rende stabile la

tonalità e coerente la struttura formale. Vediamo quali sono le cadenze più importanti ai fini del nostro

studio.

2.8.4.1 Cadenza autentica

La formula armonica V-I è chiamata cadenza autentica. Tale successione può essere allargata per

includere anche il II o il IV grado; ne deriva che le formule II-V-I e IV-V-I costituiscono una affermazione

estremamente netta della tonalità. L’uso della cadenza autentica non è limitato alle frasi finali, infatti

spesso viene utilizzata anche all’interno della composizione ma con significato diverso e, in genere, con

un minor significato conclusivo. La disposizione finale, con gli accordi di tonica e dominante in posizione

fondamentale e la tonica affidata al soprano(parte più acuta), viene detta cadenza perfetta; tutte le altre

forme di cadenza autentica vengono chiamate cadenze imperfette.ăIG

V

˘˘˘˘

I

¯¯¯¯

2.8.4.2 Cadenza Sospesa

Una cadenza sospesa è una qualsiasi cadenza che termina sul V grado(accordo di dominante). Si può

paragonare la cadenza perfetta come a un punto, e la cadenza sospesa come ad una virgola.

9 cos’è una frase musicale

Page 24: Universitá degli Studi di Salerno Un analizzatore armonico

18 Capitolo 2. Elementi di Teoria Musicale e ArmoniaăIG

˘˘˘˘

V

¯ Q¯¯¯P

2.8.4.3 Cadenza Plagale

La cadenza plagale indica la successione IV-I e, nella maggior parte dei casi, viene usata dopo una

cadenza autentica come se fosse una conclusione aggiuntiva del movimento. Spesso, alla fine di un

movimento in maggiore, nella cadenza plagale viene usata la forma minore del IV grado. Tale uso

genera un colore molto marcato alla fine della frase.ăIG

IV

¯˝Z ¯¯¯

I

¯

¯¯¯

2.9 La modulazione

Nell’evoluzione della musica tonale si è partiti dagli inizi(cinquecento-seicento), in cui all’interno di

una composizione la tonalità(e il centro tonale) era sempre la stessa, per poi giungere con il barocco e

il romanticismo ad una convinzione molto comune fra i compositori di quel periodo: una composizione

non dovrebbe rimanere sempre nella stessa tonalità, a meno che essa non sia di breve durata. Per

questo motivo in tutti i brani scritti in questo vi è l’uso di note estranee alla scala diatonica di base

e almeno un cambio di tonalità, cioè l’adozione di un nuovo centro tonale a cui tutte le altre note

si riferiscono. Il procedimento che consiste nello spostamento da un centro tonale ad un altro viene

chiamato modulazione.

La modulazione rappresenta la dinamicità della tonalità. Tale termine implica che vi è una tonalità

di partenza della composizione, una tonalità diversa in cui il brano prosegue, e una zona di passaggio

Page 25: Universitá degli Studi di Salerno Un analizzatore armonico

Capitolo 2. Elementi di Teoria Musicale e Armonia 19

dal primo al secondo centro tonale. Dal punto di vista dell’analisi capire i meccanismi di tali dinamiche e

discriminare il ruolo dei singoli accordi all’interno delle diverse zone, è un compito arduo e bisogna avere

una certa padronanza nel riconoscere le varie forme in cui una modulazione può verificarsi all’interno

di una composizione musicale.

2.9.1 Relazioni elementari

Nell’analisi di un brano musicale è utile dividere il processo di modulazione in tre stadi: individuare

la tonalità di partenza(tonalità A) e la tonalità di arrivo(tonalità B); poi cercare tra le due la zona(zona

grigia) in cui è presente un numero di accori(uno o più) che in qualche modo siano in comune tra le due

tonalità. Individuare le tonalità A e B è abbastanza semplice, basta considerare le forme cadenzali di cui

al paragrafo 2.8.4. Quello che è veramente complicato è individuare e stabilire la funzione degli accordi

della zona grigia; in particolare discriminare gli accordi -perno, cioè di accordi che sono in comune e in

qualche modo fungono da perno tra le tonalità A e B. Ad esempio la triade di Re può essere usata come

perno nella modulazione tra Re e La ed essere indicata come segue.

2.9.2 La tonicizzazione e la modulazione passeggera

Dopo quanto affermato appare ragionevole supporre che, in una modulazione, la seconda tonalità(ton.

B) venga affermata con lo stesso vigore con il quale è stata trattata la prima. Dalla analisi di un certo

numero di modulazioni è emerso che non sempre è così e in tale contesto il tempo musicale gioca un

ruolo determinante.

La prima tonalità, siccome viene sentita per prima, ha un vantaggio su tutte le altre che seguiranno;

in qualche modo la nuova tonalità dovrà controbilanciare questo vantaggio poiché se la tonica della

tonalità B non verrà affermata con sufficiente energia l’orecchio conserverà il ricordo della tonalità

A ed un eventuale ritorno a tale tonalità darà la sensazione che non ci sia stata una modulazione.

L’affermazione di una tonalità prende il nome di tonicizzazione. Il peso tonale di una tonicizzazione è

direttamente proporzionale alla sua durata; in altre parole una cambio di tonalità viene percepito come

tale in relazione alla adeguata tonicizzazione della stessa. Quando ciò non avviene si può parlare di

modulazione passeggera. Tale concetto è alla base del caso di studi di questo lavoro: i corali di J.S.Bach.

Page 26: Universitá degli Studi di Salerno Un analizzatore armonico

20 Capitolo 2. Elementi di Teoria Musicale e Armonia

2.9.3 Tonalità vicine

Tutte le tonalità sono in relazione tra loro, ma in realtà l’unico problema è rappresentato dal grado di

vicinanza tra loro. Indichiamo con il termine tonalità vicine quelle che sono più strettamente correlate,

adottando come metro la loro posizione nel circolo delle quinte e/o l’armatura in chiave10. Secondo

questo criterio appare chiaro che la tonalità di Fa maggiore e quella di Si[ maggiore poiché l’unica

differenza fra le due scale è tra mi e mi[. Possiamo concludere che le tonalità vicine sono tutte quelle

che hanno una alterazione di differenza rispetto all’armatura in chiave. E’ bene precisare che il passaggio

dal modo maggiore al modo minore di una stessa scala diatonica non è da considerarsi una modulazione,

poiché entrambi hanno gli stessi tipi di funzioni armoniche e gli stessi gradi forti; l’unica differenza c’è

chiaramente tra le triadi di tonica.

2.10 Analisi Armonica

Anche se il termine analisi armonica è stato già usato nei contenuti trattati in questo capitolo, è

necessario, a questo punto, formalizzarne il concetto.

Analisi vuol dire osservare un sistema musicale sia a livello di percezione uditiva, sia a livello di

percezione visiva, per poterne evidenziare, in maniera dinamica, principalmente le strutture foniche, le

loro costanti ed eccezioni interne, con la finalità di poter meglio interpretare o dirigere un brano, oppure

per acquisire e comprendere - in maniera diretta - i linguaggi particolari dei singoli compositori come

delle varie epoche storiche. Va da se che questo significa mettere in gioco le potenzialità d’interrelazione

globale fra soggetto percipiente(l’analista) da una parte ed oggetto musicale dall’altra(composizione),

i quali s’influenzano vicendevolmente[2]. Così come accade per l’analisi di un testo o di una funzione

matematica, il processo di analisi musicale serve a “capire” meglio una composizione e a svelarne la

struttura sia nelle linee generali che nei dettagli e a valutare lo stile del compositore.

L’analisi armonica si “limita” ad affrontare il problema della comprensione del significato armonico

delle diverse frasi musicali e degli accordi che le compongono. Per fare ciò abbiamo bisogno di conoscere

i concetti di teoria trattati in questo capitolo e di un pò di “occhio” che deriva dall’esperienza maturata

con il tempo.

10 cos’è l’armatura in chiave

Page 27: Universitá degli Studi di Salerno Un analizzatore armonico

Capitolo 2. Elementi di Teoria Musicale e Armonia 21

2.10.1 Principio della dominante secondaria

Ogni pagina di musica contiene una certa quantità di alterazioni. Esse non devono necessariamente

indicare la presenza di una modulazione. Per esempio nelle scale minori si usano delle alterazioni per

indicare il VI e VII grado.

Molti altri segni derivano dalla predilezione da parte dei compositori dell’uso dell’armonia di do-

minante rispetto ad altre funzioni armoniche; tale consuetudine durò fino al tardo Ottocento. Il più

importante elemento che genera l’armonia di dominante, a parte la funzione del V grado della tonalità

d’impianto, è costituito dalla dominante secondaria. In sostanza quello che è possibile notare è che ogni

accordo generato sulla scala relativa alla tonalità principale può essere enfatizzato attraverso l’uso della

sua dominante(tonicizzazione dei gradi). Grazie a tale principio la tavola dei colori armonici in una to-

nalità data si arricchisce di nuove combinazioni e di una gamma di note da usare praticamente infinita.

Dall’osservazione di questa pratica nelle opere dei compositori si può ricavare la seguente regola:

- qualsiasi grado della scala può essere preceduto dalla sua dominante senza che la tonalità principale

de risulti indebolita[1].

2.11 Il corale come esempio di studio

Dedichiamo l’ultimo paragrafo di questo capitolo alla forma di scrittura musicale a quattro parti

che più si presta allo studio dell’analisi armonica, che è stato adottato come caso di studio per questo

lavoro: il corale.

2.11.1 Storia del corale

L’aggettivo sostantivo Corale deriva dall’espressione «cantus choralis» che indica il canto omofono o

monofonico11 che veniva eseguito durante il servizio liturgico della Chiesa Cattolica o di quella Rifor-

mata. Nella corrente, il termine «corale» viene riferito al Kirchenlied protestante, ma nella sua versione

polifonica armonizzata a 4 parti procedenti in omoritmia12. Il corale Geystliche gesangk Buchleyn, uscito

a Wittenberg nel 1524, è la prima pubblicazione del genere, e da allora i più grandi compositori(specie

11 cos’è omofono o monofonico12 cos’è omoritmia

Page 28: Universitá degli Studi di Salerno Un analizzatore armonico

22 Capitolo 2. Elementi di Teoria Musicale e Armonia

quelli di religione protestante) hanno armonizzato le melodie liturgiche traducendole in splendidi co-

rali. Fra tutti è doveroso menzionare l’antologia di melodie[13](quasi tutte del repertorio tradizionale

luterano) armonizzate da J. S. Bach, uscita postuma a Lipsia, a cura di Carl Philipp Emanuel Bach e

Johann Philipp Kirnberger[4].

2.11.2 Tecnica compositiva del corale

Il corale viene scritto a 4 voci: Soprano, Contralto, Tenore e Basso. Per il soprano la melodia del

corale è data13 mentre per le altre voci viene creata dal compositore. Ogni voce opera in un determinato

ambito e partecipa con il proprio colore e le specifiche funzioni nel totale del Coro[4].

Esiste - prima di tutto - una gerarchia d’importanza nella struttura stessa del corale. Le due voci

esterne14(soprano e basso) prevalgono su quelle interne che a loro volta tendono a sostenere con un

procedere tranquillo e spesso con lunghe note tenute la coesione del coro. Essendo il corale una forma che

nasce dall’esigenza di legare una melodia ad un determinato testo, la sua stesura armonica rispecchia la

punteggiatura; infatti è diviso in frasi, ognuna delle quali ha una propria cadenza di carattere sospensivo,

esclamativo o conclusivo, e ogni cadenza porta una corona che fa riposare la frase. Il vero protagonista

della composizione è il soprano, che esprime la melodia principale, mentre il Basso rappresenta la base

di sostegno dell’intero edificio sonoro e dunque della sua struttura armonica. Per quanto riguarda i

collegamenti degli accordi si usa, di solito, la tecnica del legame armonico, che consiste nel legare15 fra

loro le note che sono in comune tra due accordi consecutivi.

Anche se il corale si basa su melodie di grande semplicità, è possibile individuare dei punti contenenti

variazioni di tonalità che hanno la sola funzione di dare più colore alla composizione. Chiaramente

parliamo di micro-modulazioni o di tonicizzazioni che che non si estendono a tonalità che non siano

quelle vicine al tono d’impianto. Le stesse tonalità raggiunte in tali modulazioni assumono spesso

l’aspetto di satelliti di un sistema nel quale il tono base rappresenta il centro[4]. Possiamo dire che un

tale procedimento consiste in una serie di modulazioni transitorie che, pur spostando l’interesse musicale

verso un tono vicino, mantengono a tale tono la funzione di grado X rispetto al tono di partenza e quindi

servono solo ad esaltare tale grado raggiunto come elemento determinante di una cadenza che riporta

alla tonica principale. E’ possibile definire i procedimenti tecnici delle modulazioni in termini di modi

13 cos’è data14 cos’è una voce esterna15 cos’è legare

Page 29: Universitá degli Studi di Salerno Un analizzatore armonico

Capitolo 2. Elementi di Teoria Musicale e Armonia 23

d’ingresso al nuovo tono e cioè:

• Modulazioni diatoniche:

– per mezzo di accordi comuni;

– per mezzo di suoni caratteristici differenziali;

• Modulazioni cromatiche:

– per mezzo di cromatismi;

Una volta avvenuto l’ingresso si renderà necessario, nel caso di una modulazione stabile, la conferma

della tonalità raggiunta per mezzo di una cadenza. La struttura a strofe del Corale permette anche

l’attacco diretto della nuova tonica all’inizio di una nuova frase(dopo la corona).

E’ utile, infine, precisare i motivi pratici della scelta dell’utilizzo dei corali Bachiani come esempio

di applicazione dell’algoritmo oggetto di questo lavoro. Le armonizzazioni dei corali sviluppate da Bach

rappresentano un compendio di potenzialità compositiva e ricchezza armonica assoluta; testare un

algoritmo per l’analisi armonica che sia in grado di districarsi in un insieme di combinazioni così vasto,

costituisce un ottimo banco di prova per determinare la bontà dello stesso algoritmo. Allo stesso tempo

la struttura del corale, essendo scevra o quasi da ogni forma di fioritura melodica, è la forma musicale

che, più di ogni altra, permette di apprezzare lo schema armonico di una composizione e le formule che

la regolano. Paradossalmente il corale è stato quindi anche il testo di riferimento per l’implementazione

delle regole alla base dell’algoritmo descritto in questo lavoro.

Page 30: Universitá degli Studi di Salerno Un analizzatore armonico
Page 31: Universitá degli Studi di Salerno Un analizzatore armonico

Capitolo 3

La rappresentazione digitale della musica

3.1 Introduzione

In questo capitolo introdurremo i concetti generali riguardo gli standard attualmente in uso per

la rappresentazione digitale della musica. I livelli di rappresentazione dell’informazione musicale sono

essenzialmente 2:

• livello fisico: i parametri pertinenti per la rappresentazione sono quelli propri della descrizione fisica

del segnale (ampiezza, frequenza, tempo, forma d’onda/spettro)

• livello percettivo: è il livello soggiacente alle descrizioni psico-acustiche nelle quali le dimensioni

pertinenti sono quelle percepite (volume, altezza, durata, timbro)

A livello fisico la codifica dei fenomeni sonori è intesa come campionamento della frequenza di ciascun

suono attraverso l’utilizzo di sintetizzatori o campionatori, mentre a livello percettivo vi è lo sviluppo

di una semantica che in qualche modo descriva il suono in quanto musica, attraverso l’implementazione

dei metodi per la realizzazione di uno spartito musicale e di una sintassi standard per la lettura e la

riproduzione dello stesso.

Il primo approccio ha determinato lo sviluppo di codifiche come il Wav, l’Mp3 o il flac, usate per

lo più per la riproduzione dei brani musicali. Il secondo approccio ha condotto all’implementazione di

uno standard per lo scambio di informazioni tra i dispositivi responsabili della riproduzione del suono

attraverso la codifica della notazione musicale, degli strumenti e dei controlli gestuali che governano

l’esecuzione strumentale. Attraverso lo strumento le operazioni gestuali si trasformano in pressione

sonora che costituisce il correlato acustico del campo fenomenico dell’ascoltatore(livello percettivo).

Nei paragrafi che seguono ci soffermeremo sullo sviluppo degli standard che seguono questo secondo

approccio perché sono quelli più usati per la manipolazione e l’analisi della musica scritta.

Page 32: Universitá degli Studi di Salerno Un analizzatore armonico

26 Capitolo 3. La rappresentazione digitale della musica

3.2 MIDI

Dietro la sigla MIDI, acronimo di Music Instrument Digital Interface (interfaccia digitale per stru-

menti musicali) sono contenuti due concetti: l’interfaccia, cioè l’hardware standard di cui gli strumenti

devono essere dotati per comunicare; uno standard di comunicazione (un protocollo), ossia un insieme

di regole e messaggi interpretabili in modo univoco che permettono agli strumenti di scambiarsi infor-

mazioni. I messaggi che gli strumenti si possono scambiare sono svariati: suona il DO della terza ottava,

abbassa il volume al pianoforte, manda a destra il suono del violino, ecc. Questi messaggi viaggiano

attraverso un cavo che collega gli strumenti.

3.2.1 Storia

Il protocollo MIDI, acronimo di Musical Instrument Digital Interface, nasce all’inizio degli anni ’80

grazie agli studi di due ingegneri di Sequential Circuits (SCI), D. Smith e C. Wood, che nel 1981 pro-

pongono le prime specifiche del MIDI in un documento pubblicato sotto il nome di ”The complete SCI

MIDI “[8]. Rendere i nuovi strumenti digitali in grado di comunicare e di sincronizzarsi tra loro, era di-

ventata una necessità per i musicisti e per i produttori stessi. Diversi costruttori, ad esempio Oberheim

e Roland, offrivano già sui propri strumenti alcuni sistemi di interfacciamento. Queste interfacce però,

basate su algoritmi proprietari, garantivano il proprio funzionamento solo su strumenti dello stesso

costruttore. Il protocollo di Smith e Wood si presentava invece come un sistema in grado di superare

questo limite. Per garantire la piena compatibilità tra i vari strumenti, al di là della casa produttrice,

ogni costruttore fu invitato a partecipare alla stesura definitiva delle prime specifiche MIDI. SCI, Ro-

land, Yamaha e Kawai furono i primi produttori di strumenti digitali ad aderire alla definizione e alla

diffusione del MIDI. Nel 1982 fu presentato ufficialmente il MIDI 1.0 ossia le specifiche del primo vero

standard di interfacciamento tra apparecchiature musicali. Come vedremo in seguito, il progetto iniziale

era talmente ben definito da necessitare di pochissimi aggiornamenti nel corso di questi trent’anni. Il

primo synth dotato di interfaccia MIDI, fu presentato nel 1983. Si trattava del PROPHET 600 di SCI.

La definizione di uno standard è la principale ragione del successo e della diffusione del MIDI.

Page 33: Universitá degli Studi di Salerno Un analizzatore armonico

Capitolo 3. La rappresentazione digitale della musica 27

3.2.2 Caratteristiche dei segnali MIDI

Un file MIDI è un file che contiene le informazioni da inviare a interfacce per strumenti MIDI,

software o porte del computer per la riproduzione di musica. E’ fondamentale notare che un file MIDI

non contiene musica (forme d’onda o campioni) ma solo le definizioni di nota premuta (p.e. Sol, La, Si

bemolle ecc...) e altri parametri quali il Pitch1, volume, sustain2 ecc... Un file midi può essere considerato

come uno spartito digitale adatto a fare suonare strumenti elettronici, in altre parole è come uno spartito

ma senza i suoni/campioni degli strumenti.

Volendo fare un confronto con un altro formato di codifica digitale molto usato, il WAV, possiamo

notare che la differenza tra i due formati è che i file WAV contengono il suono vero e proprio (digi-

talizzato, campionato) mentre i file MIDI contengo ”solo“ le informazioni da inviare a uno strumento

elettronico, che a sua volta dovrà essere in grado di riprodurre i suoni tramite un generatore interno.

Quindi i file midi non contengono il ”suono“ vero e proprio, e questo spiega la differenza di dimensioni

dei file (in byte) che salta subito all’occhio di un profano. Un file WAV di appena un minuto può essere

grande ben 10 Megabyte, mentre un brano MIDI musicale di un quarto d’ora può essere di appena 10

Kbyte.

3.2.3 Le porte MIDI

I diversi dispositivi(Tastiere musicali, Computer, Sintetizzatori, ecc.) dialogano tra di loro attraverso

delle specifiche interfacce hardware che sono dette porte MIDI. Queste si dividono in:

- MIDI-IN: è la porta che riceve i dati trasmessi da un’apparecchiatura musicale

- MIDI-OUT: è la porta che serve a trasmettere i dati ad un’altra apparecchiatura musicale

- MIDI-THRU: è la porta che bypassa il segnale che è stato ricevuto alla porta MIDI-IN

3.2.4 I Canali

La trasmissione dei segnali MIDI avviene attraverso l’invio delle informazioni su un determinato

canale. I canali MIDI possono essere paragonati ai canali televisivi. Per esempio, se sono sintonizzato

1 pich2 sustain

Page 34: Universitá degli Studi di Salerno Un analizzatore armonico

28 Capitolo 3. La rappresentazione digitale della musica

sul canale 7, allora ricevo i programmi trasmessi da quel canale, e li ricevono tutti quelli che sono

sintonizzati sul canale 7.

Potrebbe sembrare inutile utilizzare un cavo per trasmettere un solo segnale, e per questo motivo

una linea MIDI è stata suddivisa in 16 canali logici di comunicazione. Ognuno di questi canali può

trasmettere una determinata informazione che può essere ricevuta da una dispositivo sintonizzato su

quel canale.

3.2.5 Il protocollo e la sintassi

In questa sezione cerchiamo di descrivere il meccanismo di trasmissione di un segnale MIDI. Quando

si preme un tasto su una qualunque tastiera MIDI3 collegata via cavo ad un expander4 essa manda

l’informazione al modulo sonore che quella nota è stata prodotta, con una certa intensità, in quale

ottava ecc.

Un messaggio è formato da un gruppo di byte indicanti il delta-time e altri byte indicanti il tipo di

evento(note on, note off, etc). Il delta time è l’intervallo di tempo espresso in ticks che divide due eventi.

Ad esempio se il messaggio in questione dice di suonare una nota per alcuni secondi, le informazioni

relative al tempo vengono codificate nel delta-time, mentre le informazioni relative alla nota da suonare

vengono memorizzate nei byte successivi. Esempio di messaggio: Essendo la trasmissione asincrona, è

Figura 3.1: Schema di un messaggio MIDI

necessario disporre di un bit di start e uno di stop, oltre agli otto bit della trasmissione. Quindi una

parola che viene ricevuta o trasmessa dall’interfaccia MIDI è composta da 10 bit. Si possono distinguere

due tipi di byte:

- status byte (byte di stato);

- data byte (byte di dati);

Un messaggio MIDI deve sempre iniziare con uno status byte. Quindi gli status byte sono quelli inviati

per primi e servono a decifrare i data byte successivi, senza possibilità di errori.

3 tastiera MIDI4 expander MIDI

Page 35: Universitá degli Studi di Salerno Un analizzatore armonico

Capitolo 3. La rappresentazione digitale della musica 29

Figura 3.2: Messaggio MIDI

Facciamo un piccolo esempio per capire i meccanismi che si attivano quando viene inviato un

messaggio MIDI:

Quando si preme un tasto in una master keyboard collegata con un cavo MIDI ad un expander, essa

manda l’informazione al modulo sonoro relativa alla nota che è stata premuta, con quale intensità ed

in quale ottava. Il messaggio in questione si chiama NOTE ON. Lo status byte informa che è stata

suonata una nota. Il numero della nota che deve essere suonata viene trasmesso dal primo data byte. Se

la tastiera è dinamica5 allora quando si preme un tasto, oltre ai due messaggi precedenti se ne aggiunge

un terzo di tipo data byte che contiene tale valore di dinamica nel range 0-127, altrimenti se la tastiera

non è sensibile alla dinamica, viene inviato un valore di default (generalmente 64). I messaggi MIDI si

dividono in due categorie principali:

- Channel Messages;

- System Messages;

I channel messages sono quelli che possono essere indirizzati ad uno qualsiasi dei 16 canali MIDI. I più

importanti sono:

- Note On;

- Note Off;

- Aftertouch;

- Pitch bend;

- Program change;

- Control change;

Note-On e Note-Off producono l’inizio e la fine di un evento sonoro. Questi messaggi contengono

diverse informazioni fondamentali, sia per la loro logica di funzionamento che per la caratterizzazione

del risultato sonoro. Ad esempio un messaggio Note On“ contiene le seguenti informazioni:

- Numero di nota espressa in valori da O a 127.

5 tastiera in grado di stabilire con quale intensità viene suonata una nota

Page 36: Universitá degli Studi di Salerno Un analizzatore armonico

30 Capitolo 3. La rappresentazione digitale della musica

- Velocità di pressione del tasto (dinamica di esecuzione, velocity-on), sempre con un’escursione

numerica da 0 a 127.

- Informazioni di canale, da 1 a 16.

3.2.6 Lo standard

Con la diffusione del MIDI e la nascita di nuovi software, si pone il problema della comunicazione

dei dati precedentemente gestiti dagli strumenti musicali elettronici. Nasce allora il nuovo standard che

uniforma il salvataggio dei dati per permettere questa comunicazione tra computer e strumenti, e tra

software diversi: il MIDI file. Prima della definizione dello SMF (Standard Midi File)[10], proposto per

la prima volta nel 1986 dalla americana Opcode Systems e adottato nel luglio 1988, i produttori di

software musicale, per la memorizzazione di eventi MIDI, adottavano un loro particolare formato, con

il risultato che, pur essendo i dati memorizzati, della stessa natura e su stessi supporti, i brani MIDI

registrati dovevano essere letti dallo stesso tipo di software con cui erano stati creati. L’implementazione

e l’adozione dello SMF ha fatto in modo che, pur utilizzando software musicali diversi, la memorizzazione

dei brani in formato MIDI avvenisse con la stessa procedura, consentendo così lo scambio e l’utilizzazione

tra computer e sequencer diversi. Esistono tre diversi formati SMF:

• Formato 0: Tutte le tracce di un brano vengono mixate in una singola traccia che contiene però

tutte le informazioni degli eventi relativi a tutte le tracce del brano.

• Formato 1: Le tracce vengono memorizzate in modo singolo e contengono gli stessi valori di tempo

e metrica. La velocità del brano viene inserita nella prima traccia che fa da riferimento a tutte le

altre.

• Formato 2: Le tracce vengono gestite indipendenti l’una dall’altra, con valori anche diversi di tempo

e metrica.

Generalmente i più utilizzati sono il Formato 0, usato principalmente dai sequencer a lettura diretta6,

ed il Formato 1 per i sequencer che possono creare e/o modificare SMF7. Il GENERAL MIDI (GM)

nasce dunque per uniformare la risposta della varie apparecchiature agli stessi dati MIDI. In altre

parole, uno strumento che riceve un dato MIDI deve rispondere allo stesso modo di un altro, anche di

costruttore differente. Da notare, infine, che usando apparecchiature MIDI differenti i suoni saranno

simili, ma non identici, a causa soprattutto della diversa tecnologia usata dal costruttore.

6 non devono caricare in memoria l’intera sequenza, ma prelevano ed eseguono i dati MIDI direttamente7 i software musicali i quali hanno in genere gestiscono entrambi i formati

Page 37: Universitá degli Studi di Salerno Un analizzatore armonico

Capitolo 3. La rappresentazione digitale della musica 31

3.3 MusicXML

Lo standard MusicXML è stato ideato e sviluppato per venire incontro all’esigenza di rappresentare

graficamente gli spartiti musicali. Il MusicXML è stato pensato soprattutto per facilitare l’interscambio

tra le applicazioni per la notazione musicale(editor).

Dal nome stesso si evince che è un linguaggio XML-based, cioè segue le stesse regole di stesura

del linguaggio XML tradizionale, ma ha un vocabolario e una sintassi proprio. Per vocabolario si

intende una serie di tags specifici che identificano gli oggetti grafici che verranno visualizzati a schermo,

mentre la sintassi è il modo di annidare i vari tag per produrre l’effetto grafico desiderato. Il linguaggio

è stato progettato per essere estendibile alla copertura di tutte le notazioni grafiche presenti nelle

partiture di musica occidentale del ventesimo e del ventunesimo secolo(la musica non occidentale verrà

probabilmente rappresentata attraverso un linguaggio XML separato).

L’obbiettivo principale dello standard MusicXML è di supportare l’interscambio tra ogni programma

di notazione musicale attraverso la specifica di un data format pubblico[5]. Così come l’MP3 è diventato

il formato di riferimento per l’interscambio(soprattutto online) di incisioni musicali, il MusicXML è

divenuto lo standard per la condivisione degli spartiti musicali. Con tale linguaggio un utente può

scrivere uno spartito con un editor proprio e condividerlo con chiunque altro che usa un qualsiasi

altro programma per l’editing musicale. Attualmente più di 150 applicazioni includono un supporto al

MusicXML.

3.3.1 Sintassi

In questo paragrafo saranno illustrati alcuni degli aspetti fondamentali riguardanti la struttura dei file

MusicXML. Si descriverà la maniera in cui una partitura viene rappresentata sotto forma di struttura

gerarchica, e si fornirà la definizione degli elementi fondamentali che compongono uno spartito in

MusicXML:top-level elements e score header entity. Infine verranno presentati alcuni tag fondamentali

per la stampa delle note musicali.

Struttura gerarchica di una partitura.

A livello strutturale una partitura musicale è composta da uno o più righi(a seconda del numero

di voci o strumenti che suonano contemporaneamente), ciascuno con una serie di misure e una certa

Page 38: Universitá degli Studi di Salerno Un analizzatore armonico

32 Capitolo 3. La rappresentazione digitale della musica

quantità di note, disposte in un ordine che può variare(praticamente sempre) da rigo a rigo. Il linguaggio

XML, come è noto, rappresenta i dati in ordine gerarchico e tale organizzazione sembra scontrarsi con

l’evidenza che uno spartito appare in una forma che è ben più complessa di un reticolo. Come si

possono relazionare le due rappresentazioni? Deve avere precedenza l’organizzazione orizzontale delle

parti musicali, o la visione verticale delle misure?

In realtà tale quesito ha suggerito la specifica di due diverse DTD con due specifici elementi radice.

La DTD che è stata utilizzata per produrre le partiture utilizzate in questo lavoro è la partwise DTD.

L’elemento radice è <score-partwise>; all’interno sono contenuti i tags relativi alle parti musicali che

compongono al partitura e, annidate in ogni singola parte, ci sono i tags che contengono le informazioni

riguardo le singole misure.

<score-partwise>..tutte le info riguardanti la partitura..</score-partwise>

Figura 3.3: Schema generale di un file MusicXML

Top-Level Elements.

Sono gli elementi che definiscono il tipo di codifica del nostro file. Uno spartito scritto il MusicXML

essendo un’estensione del linguaggio XML comincia sempre con la seguente riga: che è la dichiarazione

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

Figura 3.4: Codifica

di documento che è richiesta in tutti i file XML. Tale elemento è seguito dalla specifica del tipo di

codifica MusicXML. In questa sezione viene dichiarata la versione di codifica(score-partwise o score-

timewise). L’URL che è contenuto in questa dichiarazione è solo per referenza. Molte applicazioni che

leggono files MusicXML avranno bisogno di istallare una copia locale della DTD del MusicXML.

Page 39: Universitá degli Studi di Salerno Un analizzatore armonico

Capitolo 3. La rappresentazione digitale della musica 33

<!DOCTYPE score-partwise PUBLIC"-//Recordare//DTD MusicXML 3.0 Partwise//EN""http://www.musicxml.org/dtds/partwise.dtd">

Figura 3.5: Top Level Element

Score Header Entity.

All’inizio di un file MusicXML si possono inserire le informazioni riguardo la partitura(titolo, com-

positore) attraverso l’utilizzo di metadati(meta-tags). In tale sezione del file vengono indicata anche la

lista delle parti, che elenca tutte le parti incluse nella partitura che si vuole rappresentare.

Come esempio, ecco la parte iniziale del file MusicXML che codifica un lied8 di Franz Schubert in

figura 3.6:

<work><work-number>D. 911</work-number><work-title>Winterreise</work-title>

</work><movement-number>22</movement-number><movement-title>Mut</movement-title><identification>

<creator type="composer">Franz Schubert</creator><creator type="poet">Wilhelm Müller</creator><rights>Copyright c© 2001 Recordare LLC</rights><encoding>

<encoding-date>2002-02-16</encoding-date><encoder>Michael Good</encoder><software>Finale 2002 for Windows</software><encoding-description>MusicXML 1.0 example</encoding-description>

</encoding><source>Based on Breitkopf &amp; Härtel edition of 1895</source>

</identification><part-list>

<score-part id="P1"><part-name>Singstimme.</part-name>

</score-part><score-part id="P2">

<part-name>Pianoforte.</part-name></score-part>

</part-list>

Figura 3.6: Codifica di uno spartito

in questo esempio ci sono tutti i tipi possibili (cinque) di top-level elements:

- l’elemento <work> permette di memorizzare informazioni circa il titolo della composizione

- l’elemento <movement-number> contiene l’informazione circa il numero di catalogo

- l’elemento <movement-title> tiene traccia del movimento(es. I o II mov. di una sinfonia)

8 lied

Page 40: Universitá degli Studi di Salerno Un analizzatore armonico

34 Capitolo 3. La rappresentazione digitale della musica

- l’elemento <identification> permette di memorizzare informazioni come: il compositore, il paro-

liere, il software usato per la codifica e la versione di codifica ecc.

- l’elemento <part-list> è l’unico degli elementi dello score-header richiesto in tutti i file MusicXML.

E’ composto di una serie di tag <score-part>, ciascuno con un attributo obbligatorio(id) e un

elemento <part-name>.

come detto, solo l’elemento <part-list> è richiesto, mentre tutti gli altri sono opzionali.

Alcuni tags per la stampa delle note musicali.

Finora abbiamo descritto il processo di creazione di una partitura bianca. Adesso elenchiamo una

serie di costrutti che servono per poter scrivere tutte le informazioni che si possono ricercare in uno

spartito musicale, a cominciare dall’indicazione di tempo, per finire alle singole note che sono l’essenza

della composizione musicale.

Il primo elemento che consideriamo è l’elemento <attributes>. Un esempio di utilizzo lo troviamo

in figura 3.7. Esso contiene al suo interno informazioni circa l’indicazione di tempo, le alterazioni chiave,

<attributes><divisions>24</divisions>

<key><fifths>-3</fifths><mode>minor</mode>

</key><time>

<beats>3</beats><beat-type>4</beat-type>

</time></attributes>

Figura 3.7: Uso del tag

il modo, la chiave e altri dati musicali che sono generalmente inseriti all’inizio di una partitura.

Un altro elemento importante è <note>. Un esempio di utilizzo è mostrato in figura 3.8: all’interno

del tag <note> è possibile impostare tutte le informazioni riguardanti le singole note. con il tag <pich>

indichiamo il nome della nota(E9) l’eventuale alterazione transitoria(-1 che equivale ad un [) e la sua

altezza(5a ottava). Col tag <lyric> è possibile inserire eventuale testo sotto il rigo come per le canzoni.

9 Notazione anglosassone

Page 41: Universitá degli Studi di Salerno Un analizzatore armonico

Capitolo 3. La rappresentazione digitale della musica 35

<note><pitch>

<step>E</step><alter>-1</alter><octave>5</octave>

</pitch><duration>24</duration><lyric>

<syllabic>end</syllabic><text>meil</text>

</lyric></note>

Figura 3.8: Uso del tag

Page 42: Universitá degli Studi di Salerno Un analizzatore armonico
Page 43: Universitá degli Studi di Salerno Un analizzatore armonico

Capitolo 4

Algoritmo per l’analisi armonica automatica

4.1 Introduzione

Il problema trattato in questo lavoro di tesi riguarda l’analisi armonica di una composizione musicale

scritta a 4 parti e può essere definito sinteticamente così: dato un brano a 4 parti, composto da una

sequenza di accordi, definire la relazione armonica che intercorre tra i vari accordi in sequenza, la loro

connessione in termini di successione di gradi, e la loro appartenenza alla tonalità principale o a quelle

modulanti; il tutto in osservanza delle regole dell’armonia tonale.

4.2 Stato dell’arte

Il problema della costruzione di un algoritmo per l’analisi armonica automatica di composizioni

scritte è stato considerato in altri lavori, sebbene, in generale, non sia stato oggetto di grosso dibattito

in ambito scientifico, così come il problema dello sviluppo di un algoritmo per la composizione musi-

cale automatica. Potrebbe sembrare contro-intuitivo il fatto che, per certi versi, sia più facile scrivere

una procedura per produrre una partitura da zero, che analizzare le caratteristiche di un brano già

scritto(magari secoli prima!) A mio parere la spiegazione di questo “assurdo” consiste in una riflessione

“filosofica”.

Alla “pagina uno” di tutti i metodi di teoria musicale vi è la definizione di musica. Per molti anni

la definizione standard della musica è stata espressa con tre parole: l’arte dei suoni. Per fortuna il

dibattito tra gli studiosi dell’ultimo secolo ha allargato il significato e le possibili accezioni del termine

musica, e oggi, ad esempio, cliccando su wikipedia[12] possiamo trovare la seguente definizione:

La musica[. . . ] è l’arte e la scienza dell’organizzazione dei suoni nel corso del tempo. Si tratta di arte

in quanto complesso di norme pratiche adatte a conseguire determinati effetti sonori, che riescono ad

Page 44: Universitá degli Studi di Salerno Un analizzatore armonico

38 Capitolo 4. Algoritmo per l’analisi armonica automatica

esprimere l’interiorità dell’individuo che produce la musica e dell’ascoltatore; si tratta di scienza in

quanto studio della nascita, dell’evoluzione e dell’analisi dell’intima struttura della musica. Il generare

suoni avviene mediante il canto o mediante strumenti musicali che, attraverso i principi dell’acustica,

provocano la percezione uditiva e l’esperienza emotiva voluta dall’artista[. . . ]

Dunque la musica è qualcosa che abbraccia in se una serie di dati oggettivi(scienza) e e un insieme di

fenomeni soggettivi(arte).

Siccome la musica è arte, allora qualsiasi composizione che venga creata sia in modo automatico che

non può essere considerata una forma d’arte. Ne consegue che il processo di ideazione di un algoritmo

per la composizione automatica gode di una maggiore libertà da vincoli sia estetici che scientifici.

Al contrario, l’analisi automatica di una musica già scritta deve prevedere, di base, la conoscenza

dettagliata del linguaggio usato dall’autore, della tradizione, dell’uso di determinate cellule cadenzali

ecc, che rende il lavoro di sviluppo dell’algoritmo molto complicato già nelle prima fasi. Ma non basta!

Siccome la maggior parte delle composizioni scritte che sono oggetto di analisi sono capolavori d’arte

frutto dell’ingegno e della maestria di grandi compositori, presentano una grande quantità di eccezioni

o licenze alle regole codificate che rendono molto improbabile la costruzione di un algoritmo generico

per risolvere il problema dell’analisi armonica automatica. Se ci pensiamo bene, sarebbe pretenzioso

come voler ideare un algoritmo che calcoli la miscela esatta dei colori che compongono il volto de La

Gioconda di Leonardo!

Chiusa la parentesi “filosofica”, è bene citare alcuni studi condotti circa la materia che è oggetto

questo lavoro. Wei Chai[11] nella sua tesi affronta nel terzo capitolo il problema della analisi armoni-

ca automatica basandosi sull’analisi di segnali audio. Il suo algoritmo sfrutta il modello matematico

chiamato HMM(Hidden Markov Model) per determinare la sequenza di accordi contenuta in una data

composizione, e, attraverso lo studio probabilistico sulla distribuzione Gaussiana dei vari accordi, de-

termina l’appartenenza di essi alle varie scale e quindi fornisce indicazioni sulla presenza di eventuali

modulazioni. Un altro interessante approccio è quello utilizzato da Phillip B. Kirlin e Paul E. Utgoff[6]

attraverso l’analisi Schenkeriana1 che consiste in primo luogo nella ricerca delle dipendenze strutturali

tra le note di una composizione musicale e in secondo luogo nella organizzazione di tali dipendenze

in una gerarchia capace di descrivere la funzione di ogni singola nota. Sfruttando tale idea è stato

sviluppato un algoritmo (IVI Algorithm) che, basato sui DAG(grafi aciclici orientati), stabilisce una

dipendenza tra i vari accordi di una composizione. Un altro lavoro basato sull’analisi Schenkeriana è

quello di Lerdahl e Jackendoff[7] nel quale l’obbiettivo proposto è di cercare di descrivere la struttura

1 schenker

Page 45: Universitá degli Studi di Salerno Un analizzatore armonico

Capitolo 4. Algoritmo per l’analisi armonica automatica 39

della musica attraverso una prospettiva linguistica facendo uso dei principi che governano i vari aspetti

della musica. In particolare è stato proposto un insieme di regole per raggruppare le note in una voce,

un altro per comprendere la struttura metrica in termini di tempi forti e tempi deboli.

Tutte questi lavori sono accomunati da un approccio al problema dell’analisi armonica automatica

di tipo “probabilistico”, e per tale motivo i risultati da essi forniti riflettono questa caratteristica.

Proprio per questa ragione si è deciso in questo lavoro di tentare un approccio “deterministico” basato

sull’esperienza in ambito di analisi armonica “tradizionale”, acquisita con anni di studio di carattere

musicale affrontati al Conservatorio, combinata con l’uso di modelli informatici, in modo da procedere

nello sviluppo avendo sempre ben chiara la sottile linea di demarcazione tra l’arte e la scienza di cui si

è parlato sopra.

4.3 Analisi del problema

Il problema dell’Analisi Armonica automatica di una composizione a 4 parti può essere definito

formalmente come:

• data una sequenza di accordi, stabilire per ognuno di essi l’appartenenza ad una determinata scala

diatonica e la funzione che esso svolge in termini di posizione(o grado)

L’esempio in figura 4.1 mostra il frammento di un brano musicale a quattro parti (parte a)) e una sua

possibile analisi armonica(parte b)). Possiamo notare che per ciascun accordo vi è l’annotazione della

scala di appartenenza e il grado da esso occupato(per il primo accordo è indicato I(G+) che vuol dire

I grado della scala di sol maggiore).

Nel frammento in figura 4.1 tutti gli accordi appartengono alla stessa scala(Sol maggiore), e per

questo ne deduciamo che il frammento in questione è in sol maggiore. Come spiegato nel capitolo 2,

una delle caratteristiche che rendono piacevole e originale una composizione è la presenza di più di un

centro tonale(o tonalità) ossia di una o più modulazioni. Ne consegue che molto spesso c’è bisogno di

stabilire se un accordo appartiene ad una certa scala o ad un’altra, e che ruolo occupa in ciascuna di

esse. Sempre nel capitolo 2 è stato descritto il processo di modulazione che sintetizziamo in queste tre

fasi:

1. individuazione della tonalità A;

2. individuazione della zona di modulazione(zona grigia);

3. individuazione della tonalità B;

Page 46: Universitá degli Studi di Salerno Un analizzatore armonico

40 Capitolo 4. Algoritmo per l’analisi armonica automaticaăIG4

4

44

44

I

¯¯

a)

¯¯

IV

˘˘VI

˘˘˘˘ ˘˘

V

˘ ˘IV

˘˘˘˘ ˘˘

I

˘˘V

˘˘˘˘ ˘˘

I

¯¯¯ ¯

ăIG4

4

44

44

I(G+)

¯¯

b)

¯¯

IV(G+)

˘˘VI(G+)

˘˘˘˘ ˘˘

V(G+)

˘ ˘IV(G+)

˘˘˘˘ ˘˘

I(G+)

˘˘V(G+)

˘˘˘˘ ˘˘

I(G+)

¯¯¯ ¯

Figura 4.1: Una possibile analisi armonica del frammento

Per la prima e terza fase è sufficiente analizzare le forme cadenzali che determinano le tonalità in

oggetto, mentre per la seconda fase si pone un problema di interpretazione del passaggio armonico.

La teoria musicale, infatti, non fornisce delle regole generali per l’interpretazione della funzione degli

accordi in un passaggio modulante, e per questo motivo possono essere prodotte in teoria diverse analisi

armoniche per uno stesso frammento musicale. In generale l’obiettivo che ci si propone è di fornire un

risultato che sia coerente con l’impianto armonico del brano in esame, in cui la sequenza degli accordi

sia il più possibile in relazione con le caratteristiche compositive dell’epoca in cui il brano è stato scritto.

Nella musica tonale, data una tonalità α di partenza, esiste un range di tonalità β(b1, b2, b3, ecc.)

che possono essere raggiunte tramite una modulazione che però non si allontanano di molte posizioni

rispetto a quella di α nel circolo delle quinte(Capitolo 2.3).

Vista in quest’ottica, l’analisi armonica appare una materia oscura difficile da trattare. Bisogna però

tener presente che nella successione degli accordi che compongono una composizione, ci sono accordi

più importanti di altri in quanto preparano, forzano o guidano centri tonali. Questa considerazione

è alla base di alcune convenzioni che vengono usate nella pratica per realizzare una analisi armonica

convincente di un brano musicale.

In questo lavoro si è cercato di determinare un meccanismo automatico di selezione della funzione

di ogni singolo accordo e della sua appartenenza ad una data scala diatonica cercando di codificare

l’insieme delle convenzioni usate per l’analisi armonica tradizionale.

Page 47: Universitá degli Studi di Salerno Un analizzatore armonico

Capitolo 4. Algoritmo per l’analisi armonica automatica 41

4.4 Modello per il problema

In questo paragrafo si descrive l’elaborazione di un modello matematico usato nell’algoritmo per

l’analisi armonica automatica. La struttura utilizzata è quella del grafo a stadi di cui vediamo un

esempio in figura 4.2.

Figura 4.2: Un Grafo a Stadi

L’input del nostro problema è costituito da una sequenza di accordi:

Cm = C0, C1, . . . , Cm−1

dove ciascun Ci è un accordo della composizione musicale in esame. Definiamo inoltre una funzione

f che associa ad ogni accordo Ci tutte le possibili scale Sj che includono Ci come accordo nella loro

armonizzazione e il relativo grado dk occupato. Formalmente:

Sj ∈ {Do+, Re+, Si−, Sol−, Si[+, . . .}

dk ∈ {I, ii, iii, . . . , V ], . . . , vii[, vii}

e:

f : Ci → (Sj , dk) = tw con w ≥ 1

dove tw è una coppia scala-grado che indica il grado dk di Ci all’interno dell’armonizzazione della scala

Sj . Siccome w ≥ 1 possiamo scrivere:

Page 48: Universitá degli Studi di Salerno Un analizzatore armonico

42 Capitolo 4. Algoritmo per l’analisi armonica automatica

f : Ci → L = {t1, . . . , tz}

dove L è l’insieme delle possibili funzioni armoniche che Ci può assumere nell’ambito dell’armonizzazione

delle trenta2 possibili scale diatoniche utilizzabili nell’armonia tonale (esempio in figura 4.3).

Figura 4.3: Lista Li di possibili nodi generati dall’accordo di C+ (Do maggiore)

Avendo in input una lista C0, . . . , Cm−1 di accordi avremo un insieme λ = L1, . . . , Lv in cui di possibili

funzioni armoniche per ciascun accordo della sequenza in ingresso.

A questo punto si può procedere con la costruzione del grafo a stadi nel modo seguente:

1. ∀ elemento ti ∈ Lj si costruisce un nodo con label [ti = (Sz, dw)];

2. ∀ nodo ti ∈ Lj e ∀ nodo tk ∈ Lj+1 associare un arco pesato e = (ti, tk) sse ti e tk hanno la stessa

scala Sz in comune.

In pratica si è costruito un grafo pesato a stadi diretto a partire da una sequenza di accordi in input,

i cui vertici corrispondono all’insieme di tutte le possibili funzioni armoniche che ciascun accordo della

sequenza può assumere, e gli archi rappresentano le possibili relazioni tra gli accordi della sequenza in

base all’appartenenza di essi all’armonizzazione di una stessa scala.

Formalmente, il grafo costruito è un grafo pesato G = (V,E) tale che:

• V = {vi | vi = ti ∈ Lj ,∀Lj ∈ λ}

• E = {(u, v) | u, v ∈ V e Su = Sv}

Il problema dell’analisi armonica automatica può essere ricondotto alla ricerca di un sottoinsieme

di archi di G di peso massimo, per cui è possibile definire il seguente procedimento per risolvere il

problema in oggetto:

2 perchè 30?

Page 49: Universitá degli Studi di Salerno Un analizzatore armonico

Capitolo 4. Algoritmo per l’analisi armonica automatica 43

Figura 4.4: Grafo generato da una possibile sequenza di accordi (C+, F+, A-)

1. sia C1, . . . , Ck una sequenza di accordi in input;

2. costruire il grafo a stadi pesato G = (V,E) come descritto in precedenza;

3. calcolare il sottoinsieme ξ ∩ E di archi in G di peso massimo tali che tutti i vertici che sono estremi

degli archi e ∈ ε condividono una funzione nell’armonizzazione della la stessa scala Si;

4. selezionare i vertici risultanti dal passo 3 escludendo le eventuali ripetizioni.

In conclusione, è da notare che non è stato accennato al meccanismo di assegnazione dei pesi agli

archi del grafo, ma tale argomento verrà trattato nel paragrafo successivo in maniera dettagliata.

4.5 Progettazione dell’algoritmo

In questo paragrafo si descriverà nei dettagli l’algoritmo per l’analisi armonica automatica analiz-

zando in particolare il meccanismo di assegnazione dei profitti(pesi) agli archi del grafo a stadi di cui

si è mostrata la costruzione precedentemente.

4.5.1 Rappresentazione dei dati in input

Prima di addentrarci nei dettagli del funzionamento dell’algoritmo è necessario fornire un criterio

di astrazione dei dati in input al problema, in modo da utilizzare tale modello come riferimento nei

Page 50: Universitá degli Studi di Salerno Un analizzatore armonico

44 Capitolo 4. Algoritmo per l’analisi armonica automatica

paragrafi successivi.

Come detto in precedenza, l’input del problema dell’analisi automatica corrisponde ad una sequenza

di accordi Cm = C0, C1, . . . , Cm−1. Tale sequenza può essere vista come una lista di oggetti, sulla

quale l’algoritmo dovrà effettuare delle operazioni che in sostanza avranno lo scopo di impostare degli

attributi per ciascun oggetto dell’input. La sequenza completa degli accordi con gli attributi calcolati

costituirà l’output voluto.

4.5.2 Funzioni preliminari

All’inizio di questo capitolo, si è notato che l’ostacolo più importante nel calcolo dell’output è costi-

tuito dalla presenza, nella sequenza di accordi in input, di “sottosequenze” che costituiscono dei passaggi

modulanti. Una modulazione prevede una tonalità di partenza A e una di arrivo B ed una zona grigia

in cui in qualche modo coesistono tutti e due i centri tonali.

Sia la tonalità A che B per essere riconoscibili devono essere affermate in una forma cadenzale.

Questa proprietà necessaria, ha portato alla progettazione di una procedura preliminare che viene

eseguita sulla intera sequenza in input. In particolare questa funzione scandisce la sequenza, accordo

per accordo, cercando di discriminare la presenza di cadenze perfette o cadenze autentiche(Capitolo

2.8.4).

La procedura può essere schematizzata in due passi:

1. cerca e marca tutti le coppie di accordi consecutivi che corrispondono ad un passaggio del tipo

V-I(dominante-tonica);

2. tra le coppie trovate al passo 1, in corrispondenza dell’accordo che ha funzione di V grado(dominante),

verificare se esso è preceduto da un accordo che ha funzione di II(o V del V) o IV o I in modo da

ottenere una delle seguenti forme cadenzali: I-V-I, II-V-I, IV-V-I.

In tutti e due i passi di questo piccolo algoritmo viene utilizzata una funzione per calcolare la relazione

tra le coppie di accordi consecutivi. Essa prende in input due accordi e restituisce in output l’intervallo

tra le due fondamentali. Sia g tale funzione, allora possiamo formalmente scrivere:

g : (Cj , Ck)→ ij,k k = j + 1

dove ij,k è un intervallo tale che:

Page 51: Universitá degli Studi di Salerno Un analizzatore armonico

Capitolo 4. Algoritmo per l’analisi armonica automatica 45

ij,k ∈ {2amagg, 3amin, 5agiusta, . . .}

Nel primo passo della procedura saranno selezionate tutte le coppie per cui:

g : (Cj , Ck) = 4agiusta asc.

mentre nel secondo passaggio si cercheranno le coppie per cui vale almeno uno di questi risultati:

g : (Cj , Ck) = {4agiusta asc., 5agiusta asc., 2amagg asc.}

Alla fine di questa procedura preliminare, la sequenza di accordi in input sarà suddivisa in zone.

Chiameremo zona rossa ogni singola sotto-sequenza di accordi trovata grazie all’algoritmo appena

descritto, e chiameremo zona grigia ognuna delle restanti zone. La figura 4.5 schematizza il concetto.

Figura 4.5: Suddivisione in zone della lista degli accordi in input

Applicando tale criterio si determina una suddivisione in aree tonali della sequenza in input, dove

sono presenti delle “isole” che descrivono una tonalità chiara, e che serviranno come toni di partenza e

di arrivo(tonalità A e B) nel calcolo successivo della funzione armonica degli accordi delle zone grigie.

4.5.3 Algoritmo per le zone grigie

Si passa a descrivere il meccanismo per determinare la funzione armonica degli accordi delle zone

grigie. Ciascuna sotto-sequenza corrispondente ad una zona grigia descrive un passaggio armonico della

composizione in esame dove non è possibile determinare con chiarezza il centro tonale. Ciò detto porta

alla naturale considerazione che è proprio in queste zone che si possono trovare gli eventuali passaggi

modulanti(o modulazioni).

Page 52: Universitá degli Studi di Salerno Un analizzatore armonico

46 Capitolo 4. Algoritmo per l’analisi armonica automatica

Il primo passo dell’algoritmo è quello di costruire, per ciascuna zona grigia, un grafo a stadi pesato

con lo stesso criterio descritto al paragrafo 4.4. Per ogni accordo Ci della sequenza in input costruiamo

tanti nodi quante sono le diverse funzioni armoniche che Ci può avere nelle diverse scale diatoniche. La

tabella 4.1 costituisce un esempio per la costruzione di tutti i possibili nodi a partire dall’accordo di

Sol maggiore.

Accordo Funzione armonica

Sol+ (Sol+,I) (Do+,V) (Re+,IV) (Re-,IV)

(Mi-,iii[) (La-,vii[) (Do-,V) (Si-,vi[)

Tabella 4.1: Possibili funzioni armoniche dell’accordo di Sol magg. considerate nello sviluppo di questo algoritmo

Un fattore determinante in questo passo è costituito dalla funzione di assegnazione dei pesi agli archi

del grafo. Data una sotto-sequenza di accordi Ci, . . . , Cj che fanno parte di una zona grigia, definiamo

con F si,j la funzione che valuta la “qualità armonica” della della sequenza Ci, . . . , Cj . Tale funzione è

definita a partire da una funzione fh che assegna in corrispondenza di ciascuna coppia di nodi del grafo

vk, vz, che appartengono a due liste consecutive LweLw+1 e che hanno una funzione armonica in una

scala diatonica in comune, un peso (profitto) che quantifica numericamente la qualità armonica di una

coppia di accordi. Formalmente, la funzione fh è così definita:

fh : (vk, vz)→ Ph

dove Ph è definito il Peso Armonico della coppia (vk, vz). I valori dei profitti sono elencati sono elencati

nelle tabelle a seconda che la coppia di accordi condivida una tonalità maggiore o minore:

• Tavola dei profitti per le tonalità maggiori : vk e vz sono accordi che condividono la stessa scala s in

tonalità maggiore (Tabella 4.2);

• Tavola dei profitti per le tonalità minori : vk e vz sono accordi che condividono la stessa scala s in

tonalità minore (Tabella 4.3);

Una volta disegnato il grafo a stadi e assegnati ai suoi archi i relativi pesi, si passa a valutare la qualità

armonica della sequenza in esame fissata una scala s di riferimento. Definiamo F si,j come la somma dei

pesi per ogni coppia di vertici vt e vt+1 consecutivi nel grafo(cioè appartenenti rispettivamente a Lt e

Lt+1) riguardante la sotto-sequenza di Ci, . . . , Cj . Formalmente:

Page 53: Universitá degli Studi di Salerno Un analizzatore armonico

Capitolo 4. Algoritmo per l’analisi armonica automatica 47

I ii iii IV V vi viiI 2000 200 100 1000 5000 200 10ii 100 500 100 300 6000 150 10iii 100 100 500 200 100 500 10IV 2000 150 100 500 3000 400 10V 6000 100 100 100 3000 400 10vi 100 1000 150 150 1000 250 10vii 2000 50 150 30 50 100 200

Tabella 4.2: Tavola dei profitti per le tonalità maggiori.

I ii iii IV V vi[ vi vii[ viiI 2000 150 150 3000 3000 150 50 500 200ii 100 500 100 50 6000 10 20 10 250iii 100 10 500 150 100 200 10 200 150IV 1000 500 100 500 5000 150 50 250 150V 6000 50 150 50 3000 200 50 10 50vi[ 150 100 150 200 100 250 10 200 100vi 10 100 10 10 10 10 250 10 100vii[ 50 10 200 200 50 150 10 250 10vii 5000 100 50 50 100 10 10 10 250

Tabella 4.3: Tavola dei profitti per le tonalità minori.

F si,j =

j−1∑t=i

fh(vt, vt+1) con s fissato

Consideriamo l’esempio in Figura 4.1. Il peso totale degli archi calcolato dalla funzione armonica di

valutazione F si,j con i = 1 e j = 8 e s = Sol magg. è pari alla somma dei profitti sulla sequenza di

accordi I(G+)-IV(G+)-VI(G+)-V(G+)-IV(G+)-I(G+)-V(G+)-I(G+), ovvero 1000+100+1000+100+

2000+5000+6000 = 15200. La funzione F si,j dovrà essere calcolata in maniera esaustiva per ogni scala

diatonica s che prevede una funzione armonica per un qualche accordo Ci della sequenza. Alla fine

dell’algoritmo verrà scelto il sottoinsieme di archi del grafo tale che:

F (Ci, Cj) = max{F s0i,j , F

s1i,j , F

s2i,j , F

s3i,j , . . . , F

ski,j }

con sk che varia tra tutte le scale che includono un qualche accordo Ci della sequenza.

Sia F sti,j il valore massimo. Allora l’ultimo passo dell’algoritmo consiste nel selezionare i nodi che

vengono attraversati da tale cammino. Ogni nodo v del cammino selezionato, appartenente ad una

delle liste Li - per costruzione del grafo - ha come label la scala Si e il grado dk che rappresentano le

informazioni riguardo la funzione armonica che andranno memorizzate nell’accordo Ci all’interno del

passaggio in esame. Prima di terminare l’esecuzione di questo passo si marcano come zone rosse le zone

Page 54: Universitá degli Studi di Salerno Un analizzatore armonico

48 Capitolo 4. Algoritmo per l’analisi armonica automatica

coperte dall’algoritmo. La figura 4.6 mostra il grafo a stadi pesato risultante dalla analisi della sequenza

di accordi C+ → F+ → A−. Il sottoinsieme di archi di peso massimo è quello che si ottiene avendo

come tonalità di riferimento F+. In questo caso particolare, tale selezione costituisce anche un path di

peso massimo tra le liste L(C+), L(F+), L(A−). Ciò implica la determinazione della funzione armonica

degli accordi rispetto alla intera sequenza correntemente analizzata. Si precisa che tale eventualità non

si verifica sempre, anche se dai test si evince che questa situazione si presenta in più del 70% dei casi.

Figura 4.6: Calcolo del sottoinsieme di archi di peso massimo

Al termine di questo paragrafo occorre fare delle ulteriori precisazioni. Come è stato detto più volte

sopra, una modulazione prevede una tonalità di partenza A ed una di arrivo B. Per come è stato

progettato l’algoritmo, sia A che B apparterranno a delle zone rosse. Per questo motivo, durante la fase

di analisi di ciascuna zona grigia, c’è bisogno di tenere in qualche modo “traccia” di A e B. Da questa

riflessione è scaturita la scelta di includere nella sequenza di input Ci, . . . , Cj anche l’ultimo accordo di

A(denotato con RA) e il primo accordo di B(denotato con RB). Ne consegue che la sequenza in input è:

RA, Ci, . . . , Cj , RB . (In più, i pesi degli archi tra tra nodi che hanno le tonalità A e B in comune sono

aumentati di un fattore costante.)

Questa scelta è stata presa per enfatizzare un eventuale passaggio modulante tra A e B senza l’ausilio

di tonalità estranee a queste due. Nella prassi compositiva tonale questa caratteristica rappresenta la

Page 55: Universitá degli Studi di Salerno Un analizzatore armonico

Capitolo 4. Algoritmo per l’analisi armonica automatica 49

quasi totalità dei casi.

4.5.4 Criterio di stop

Siccome l’algoritmo ha come obbiettivo quello di massimizzare la qualità armonica degli accordi

selezionati, può capitare che, data una sequenza corrispondente ad una zona grigia, l’output dell’al-

goritmo non determini la funzione armonica di tutti gli accordi in input. In realtà l’esecuzione di un

passaggio dell’algoritmo descritto ha come obbiettivo quello di diminuire l’ampiezza delle zone grigie e

di aumentare quella delle zone rosse. Per questo motivo l’algoritmo per l’analisi delle zone grigie viene

ciclato per 5 volte al fine di coprire, iterativamente, tutta la lista di accordi che rappresenta la stesura

armonica della composizione in esame. Nei test descritti nel capitolo 6 si è analizzato che già con 3

iterazioni si determina una copertura maggiore del 90% degli accordi totali.

Page 56: Universitá degli Studi di Salerno Un analizzatore armonico

50 Capitolo 4. Algoritmo per l’analisi armonica automatica

4.5.5 Pseudo-codice

Al termine del capitolo viene presentata la stesura in pseudo-codice dell’algoritmo descritto sopra:

Algorithm 1 Analisi Armonica Automatica della sequenza di accordi C0, . . . , Cm−1

Cm ← C0, . . . , Cm−1

GRAYzone← {C0, . . . , Cm−1}for i = 0→ m− 1 do

if (g(Cj , Ck) = 4agiusta) con k = j + 1 thenCj ← VCk ← I

end ifend forfor (i = 0→ m− 1) do

if (Cj = V) thenif [(Cj−1 = ii) ∨ (Cj−1 = IV) ∨ (Cj−1 = I)] then

REDzone← {Cj−1, Cj , Cj+1}GRAYzone← GRAYzone\{Cj−1, Cj , Cj+1}

end ifend if

end forfor i = 1→ 5 do

for all seq. Cv, . . . , Cw ∈ GRAYzone docostruisci il grafo a stadi direttocalcola F (Cv, Cw) = max{F s1

v,w, . . . , Fskv,w}

sia F stv,w tale valore

sia PATH = {v1, . . . , vk} l’insieme dei vertici tale che F stv,w =

∑k−1z=1 fh(vz, vz+1)

for i = 1→ k doTonality(Ci)← Si

Degree(Ci)← diGRAYzone← GRAYzone\{Ci}

end forend for

end for

Page 57: Universitá degli Studi di Salerno Un analizzatore armonico

Capitolo 5

Implementazione

5.1 Introduzione

In questo capitolo viene presentata l’implementazione dell’algoritmo descritto nel Capitolo 4 attra-

verso l’utilizzo del linguaggio di programmazione Java[9]. Il software è stato sviluppato seguendo tre

fasi consecutive:

- Lettura dell’input e creazione della partitura digitale

- Analisi armonica

- Stampa dei risultati sotto forma di spartito elettronico, in formato MusicXML

Per ciascuna delle fasi suddette si illustreranno e commenteranno i blocchi di codice più significativi.

Ci si riferirà al software in oggetto chiamandolo jBach(la “j” iniziale deriva da Java che è il linguaggio

di programmazione alla base dell’implementazione e da Johann che è il nome di Bach, dal quale deriva

chiaramente la seconda parte finale “Bach”)

5.2 Lettura dell’input e creazione della partitura digitale

La prima funzionalità richiesta in un programma che “manipola” oggetti musicali è quella di es-

sere in grado di aprire dei file musicali, è di poter organizzare i dati letti in una struttura idonea

alla manipolazione degli stessi secondo le possibili esigenze delle eventuali funzionalità sviluppate

successivamente.

L’input previsto nello sviluppo di jBach è costituito da uno o più MIDI files1e quelli usati come

input di questo software corrispondono alla codifica MIDI dei Corali a 4 voci di Bach[13].

1 verrà chiarito successivamente

Page 58: Universitá degli Studi di Salerno Un analizzatore armonico

52 Capitolo 5. Implementazione

I metodi di gestione dei MIDI in Java sono forniti dalla libreria javax.sound.midi. Il frammento

di codice mostrato in figura 5.1 mostra il blocco di istruzioni essenziali per l’apertura di un file MI-

DI. In particolare l’istruzione alla linea 3 importa nell’oggetto Sequence S la sequenza MIDI del file

folder/filename. L’istruzione alla linea 4 importa il valore di quantizzazione degli eventi MIDI espres-

si in PPQ(Pulses Per Quarter) che può essere paragonato alla frequenza di campionamento dei formati

audio come il wave, l’mp3, ecc. E’ utile precisare che ogni traccia di un file MIDI corrisponde ad uno

strumento(voce) e per questa ragione in input è richiesto che si abbia un file formato da 5 tracce, in

cui la Traccia 0 contiene le informazioni generali del file, e le tracce da 1 a 5 contengono la sequenza

di note(e pause) di ciascuna delle voci del Corale(soprano,contralto,tenore,basso). Dopo aver estratto

1 Track[] tracks=null;2 Sequence S=null;3 S=MidiSystem.getSequence(new File(folder+"/"+filename));4 int PPQ=S.getResolution();5 tracks=S.getTracks();

Figura 5.1: Lettura delle tracce di una sequenza MIDI in Java

le tracce dal file, esse vengono passate come parametro alla classe Java che si occupa della loro lettura

e dell’organizzazione dei dati in esse contenute, al fine di memorizzarli in una struttura dati che astrae

il concetto di partitura. La figura 5.2 mostra il costruttore della classe Score.java che implementa tale

struttura.

1 public Score(Track[] tr,int ppq){2 InfoFile info=new InfoFile(tr);

.7 splitTracks(tr);

.13 for(int i=1;i<=info.getNumTracks();i++){14 readTrack(i);15 }16 divideInBeatS();17 divideInBeatC();18 divideInBeatT();19 divideInBeatB();20 setScore();21 info.ReadScalesXML();22 }

Figura 5.2: Creazione della partitura digitale

Alla linea 2 (5.2) viene istanziato l’oggetto InfoFile della classe InfoFile.java che ha la funzione di

leggere la traccia MIDI contenente le informazioni di carattere generale sul file(Traccia 0 ): indicazione

di tempo, alterazioni in chiave, tonalità (la figura 5.3 mostra un uso dei metodi della classe Info.java).

Page 59: Universitá degli Studi di Salerno Un analizzatore armonico

Capitolo 5. Implementazione 53

Il ciclo for delle linee 13-15 rappresenta la fase di lettura delle tracce. la funzione readTrack(i) legge

gli eventi MIDI (3.2.5) della traccia i-esima. Le procedure alle linee 16-19 si occupano della divisione

in beat(movimenti) delle note lette in ciascuna traccia, mentre alla linea 20 la funzione setScore()

organizza i dati calcolati nella partitura.

System.out.println("STAMPA DELLE INFORMAZIONI MUSICALI RIGUARDO IL CORALE SELEZIONATO");System.out.println("------------------------------------");System.out.println("NUMERO DI VOCI: "+info.getNumTracks());System.out.println("INDICAZIONE DI TEMPO: "+info.getSignature());System.out.println("ALTERAZIONI: "+info.getAlteration());System.out.println("TONALITA’: "+info.printTonality());System.out.println("NUMERO DI BATTUTE: "+info.getNumBars());System.out.println("------------------------------------");

STAMPA DELLE INFORMAZIONI MUSICALI RIGUARDO IL CORALE SELEZIONATO------------------------------------NUMERO DI VOCI: 4INDICAZIONE DI TEMPO: 3/4ALTERAZIONI: 1 # in chiaveTONALITA’: G majorNUMERO DI BATTUTE: 34------------------------------------

Figura 5.3: Esempio di uso della classe InfoFile.java sul corale BWV 70

La struttura creata fornisce dei metodi di accesso diretti alle informazioni contenute in essa(note,

pause, battute, tempo, alterazioni). Uno dei metodi forniti dalla classe Score.java è:

• getVoice(final int Voice,int measure,int beat);

tale funzione restituisce la lista delle note del rigo “Voice” contenute nel beat “beat” della misura

“measure”. La figura 5.4 descrive la gerarchia degli oggetti Java usati per rappresentare la partitura

digitale.

5.3 Analisi armonica

La partitura elettronica implementata durante la prima fase di sviluppo rappresenta la struttura di

riferimento dell’intera applicazione. E’ qui che vengono letti i dati usati in fase di analisi armonica e

dove vengono memorizzate le informazioni calcolate.

In questo paragrafo vengono presentati alcuni frammenti di codice particolarmente significativi per

descrivere i meccanismi fondamentali alla base del funzionamento dell’analizzatore armonico automa-

Page 60: Universitá degli Studi di Salerno Un analizzatore armonico

54 Capitolo 5. Implementazione

Figura 5.4: Struttura gerarchica della partitura elettronica

tico. La classe Java che implementa l’analisi è Analizer.java. La figura 5.5 mostra il codice del costrut-

tore di tale classe che implementa l’algoritmo descritto al capitolo 4. Le funzioni principali sono quelle

chiamate alle linee 6-11.

1 public Analizer(Score s){2 score=new Score();3 score=s;4 scala=score.getInfo().getScale();5 ChList=new ArrayList<Chord>();6 fillChords();7 findSecondaryDominant();8 findModPattern();9 findLastCadenza();10 for(int i=0;i<5;i++){11 GZonesChordFinder();12 }13 }

Figura 5.5: Analizzatore Armonico Automatico

fillChords() è la procedura che si occupa della lettura degli accordi risultanti dalla scansione verticale

delle note di ogni beat(soprano, contralto, ecc.). Per ogni beat, la funzione calcola il grado della nota

del basso rispetto alla scala della tonalità d’impianto e la numerica della triade realizzata dalle altre

tre voci; successivamente, con tali parametri, viene effettuata una ricerca all’interno di un database, in

cui ad ogni coppia di dati (nota basso, numerica) corrisponde una sigla (C, G, F)2 e un tipo (+, -, -7).

La sequenza nota/tipo viene memorizzata nel parametro che mantiene traccia della sigla dell’accordo

all’interno del beat correntemente analizzato. La figura 5.6 mostra alcune entries del file ChordTable.xml

che costituisce il database degli accordi.

Ad esempio: una ricerca con coppia di parametri di input (I,36) in tonalità di Fa maggiore (F+ in

2 sigle convenzionali in lingua anglosassone per le note. A=La, B=Si, C=Do, D=Re, E=Mi, F=Fa, G=Sol

Page 61: Universitá degli Studi di Salerno Un analizzatore armonico

Capitolo 5. Implementazione 55

inglese) darà in output l’accordo con sigla D- (si legge Re minore), mentre l’input (I,24) restituirà la

sigla G-7 (Sol minore settima).

<table>

<degrees mode="major">

<deg id="I">...<num id="36"><roman>vi</roman><type>-</type>

</num>

<num id="24"><roman>ii</roman><type>-7</type>

</num>

<num id="35"><roman>I</roman><type>+</type>

</num>...

Figura 5.6: Database degli accordi (in formato XML)

Con l’invocazione delle funzioni findSecondaryDominant(), findModPattern() e findLastCadenza() ha

inizio la fase principale della analisi armonica, che consiste nell’individuazione della funzione armonica

degli accordi del brano in esame. Tali procedure servono a determinare le Zone Rosse, cioè le sequenze

di accordi che costituiscono le cadenze autentiche. In particolare la funzione findSecondaryDominant()

marca tutte le coppie di accordi che costituiscono un salto del tipo V-I; successivamente con find-

ModPattern() si cercano (in corrispondenza dell’accordo V evidenziato precedentemente) l’eventuale II

o IV o I che precede; in tal caso si marca l’insieme scoperto come Modulation Pattern. La funzione

findLastCadenza() effettua le stesse operazioni delle altre due concentrandosi solo sulla fin del brano3

La funzione GZonesChordFinder() è il “cuore” dell’analizzatore. Essa implementa l’algoritmo per

l’interpretazione degli accordi delle Zone Grigie descritto nel paragrafo 4.5.3.

La figura 5.7 mostra la sequenza di istruzioni che implementa la funzione. Alla linea 1 viene istanziata

la variabile arr che contiene la lista degli accordi della composizione in esame; alla linea 2 viene creato

l’oggetto GZones che sarà il contenitore delle sequenze Grigie; una volta che sono state discriminate

tutte le zone grigie, attraverso il blocco di istruzioni del ciclo while alle linee 12-144, su ogni singola

3 testa l’eventuale possibilità che ci siano cadenze particolari(cadenze imperfette)4 in realtà il blocco contiene più istruzioni, ma sono state eliminate quelle secondarie (sostituite da punti) per una maggioreleggibilità del codice

Page 62: Universitá degli Studi di Salerno Un analizzatore armonico

56 Capitolo 5. Implementazione

0 private void GZonesChordFinder(){1 ArrayList<Chord> arr=score.getChordList();2 ArrayList<Chord> GZones=new ArrayList<Chord>();3 for(int i=0;i<arr.size();i++){4 if(!arr.get(i).isModPattern())5 arr.get(i).setGZone();6 }7 for(int i=0;i<arr.size();i++){8 if(arr.get(i).isGZone())9 GZones.add(arr.get(i));10 }11 while(count<GZones.size()){12 ArrayList<Chord> Zone=new ArrayList<Chord>();

.

.

.13 ArrayList<Chord> toEdit=organizeGraphInput(Zone);14 GenGraph genetic=new GZGraph(toEdit);15 }16 }

Figura 5.7: implementazione dell’algoritmo per le Zone Grigie

zona (variabile Zone nel codice) si applica l’algoritmo basato sui grafi a stadi. La funzione organizeGra-

phInput predispone in modo adeguato la sequenza di accordi Cm = C0, C1, . . . , Cm−1 da dare in input

all’algoritmo implementato dalla classe GZGraph.java.

0 public GZGraph(ArrayList<Chord> a){1 nodelist=new ArrayList<GZNode>();2 arclist=new ArrayList<GZArc>();3 startTon=a.get(0).printModTone();4 for(int i=0;i<a.size();i++){

.

.

.5 makeNodeList(a.get(i),i);6 }7 makeArcList();8 Iterator<GZNode> it=nodelist.iterator();9 while(it.hasNext()){10 maxSubSet(it.next().getS());11 }12 setSearchResults();

.

.13 }

Figura 5.8: Costruttore della classe GZGraph.java

La figura 5.8 mostra il codice relativo al costruttore della classe GZGraph.java. Alle linee 1 e 2

vengono istanziate rispettivamente la lista (ancora vuote) dei nodi e degli archi del Grafo da costruire. Il

ciclo for della linea 4 chiama la funzione makeNodeList(accordo, indice), che prende in input un accordo

della sequenza C0, C1, . . . , Cm−1 e un indice i e crea una lista di nodi, ognuno dei quali rappresenta

una sua possibile funzione armonica. 5.9.

Page 63: Universitá degli Studi di Salerno Un analizzatore armonico

Capitolo 5. Implementazione 57

.

.

.</table>

<table id="-">

<cell i="I" j="I">2000</cell><cell i="I" j="ii">150</cell><cell i="I" j="iii">150</cell><cell i="I" j="IV">3000</cell><cell i="I" j="V">3000</cell><cell i="I" j="vib">150</cell><cell i="I" j="vi">50</cell><cell i="I" j="viib">500</cell><cell i="I" j="vii">200</cell>

<cell i="ii" j="I">100</cell><cell i="ii" j="ii">500</cell><cell i="ii" j="iii">100</cell><cell i="ii" j="IV">50</cell>...

Figura 5.9: Tabella dei premi (o pesi) per gli archi del grafo a stadi

La funzione makeArcList() crea gli archi del grafo seguendo il criterio espresso in termini formali al

paragrafo 4.4.

.

.

.1 while(it1.hasNext()){2 GZNode current=it1.next();3 if(n.getS().equals(current.getS())){4 String d1=n.getD();5 String d2=current.getD();6 Iterator<Element> it3=table.iterator();7 while(it3.hasNext()){8 Element cur=it3.next();9 if(cur.getAttributeValue("i").equals(d1)&&cur.getAttributeValue("j").equals(d2)){10 int weight=Integer.valueOf(cur.getText());11 if(d1.equals(startTon)||d1.equals(finishTon))12 weight+=3000;13 addNewArc(weight,n,current);14 }15 }16 }17 }...

Figura 5.10: Verifica delle tonalità per l’assegnazione del premio supplementare

Il criterio di assegnazione dei pesi a ciascun arco è gestito, da parte di questa procedura, attraverso

l’accesso ai dati contenuti in una tabella (in formato XML) mostrata in figura. E’ da notare che all’in-

terno della funzione makeArcList(), per ciascun arco in esame, si effettua un test sulla tonalità dei nodi

Page 64: Universitá degli Studi di Salerno Un analizzatore armonico

58 Capitolo 5. Implementazione

da collegare (la figura 5.10 mostra alle linee 11-12 il codice che si occupa di tale verifica).

Nel caso tale tonica corrisponda ad una delle due tonalità corrispondenti alle zone rosse adiacenti alla

zona grigia che si sta correntemente analizzando, al valore del peso dell’arco risultante dall’interro-

gazione della tabella in figura 5.9 viene sommato un premio extra; tale aggiunta viene effettuata per

forzare la scelta di passaggi modulanti tra le due tonalità (A e B) che non usino transizioni (seppur

momentanee) centri tonali terzi a meno che questi siano confermati da passaggi di grado caratteristici

(esempio: V-I, II-V).

La funzione che computa il sottoinsieme di archi di peso massimo è maxSubSet() (linea 10 in figura

5.8), mentre quella che si occupa di memorizzare i dati elaborati (cioè le funzioni armoniche degli

accordi selezionati) è setSearchResults (linea 12 in figura 5.8).

5.4 Stampa dei risultati

Una volta che è stata completata l’analisi armonica si passa all’organizzazione dell’output. Si è

pensato di creare una partitura in formato MusicXML con l’annotazione delle informazioni calcolate.

0 public MusicXMLmaker(Score s, String path)throws FileNotFoundException, IOException{

1 score=s;2 pathxml=path;3 this.folder="OutputXMLFiles/";4 scala=score.getInfo().getScale();5 elabMusicXmlFile();6 }

8 public MusicXMLmaker(Score s, String fol, String filename)9 throws FileNotFoundException, IOException{10 score=s;11 pathxml=filename;12 this.folder=fol+"/";13 scala=score.getInfo().getScale();14 elabMusicXmlFile();15 }

Figura 5.11: Costruttore della classe MusicXMLmaker.java

La classe che si occupa di tale funzionalità è MusicXMLmaker.java, e il suo costruttore è mostrato

in figura 5.11. Il file generato dai metodi di questa classe sarà collocato nella cartella di default Outpu-

tXMLFiles (invocando il costruttore alla linea 0) nel caso non ne venga specificata un’altra (in tal caso

verrà invocato il costruttore alla linea 8).

Il metodo che si occupa della creazione del file MusicXML è elabMusicXMLFile(). La figura 5.12

mostra una selezione delle istruzioni più significative: alla linea 1 viene selezionata la cartella dove verrà

Page 65: Universitá degli Studi di Salerno Un analizzatore armonico

Capitolo 5. Implementazione 59

cercato il file sorgente che poi sarà modificato con l’aggiunta dei dati calcolati dal tool sviluppato; alla

linea 18 viene invocata una routine ausiliaria che aggiunge un rigo alla partitura in input che conterrà

le note della linea del basso e le annotazioni di cui sopra (a tale rigo verrà assegnato il nome “Analisis”);

all’interno del ciclo for alle linee 20-39 vi è la chiamata alle funzioni che scrivono i dati calcolati nel

file in input.

La funzione getElabChord() annota la sigla di ciascun accordo sopra il rigo “Analisis” in corrispon-

denza di ogni beat, mentre getElabModulations() scriverà sotto lo stesso rigo la sua funzione armonica

calcolata dall’algoritmo. Alla linea 36 viene invocata la routine getElabDegrees() che scrive in corri-

spondenza delle singole note del rigo del “Basso” il rispettivo grado in relazione alla scala della tonalità

di impianto del brano.

In conclusione viene mostrato un frammento del file in input alla classe elabMusicXMLFile() (figura

5.13) e la successiva stampa corredata delle informazioni elaborate in fase di analisi armonica (figura

5.14).

Page 66: Universitá degli Studi di Salerno Un analizzatore armonico

60 Capitolo 5. Implementazione

0 private void elabMusicXmlFile()throws FileNotFoundException,IOException{

1 String p="XMLScores/"+pathxml;2 File File2 = new File(folder+pathxml);3 File f=new File(p);4 File output=new File("xmlFiles/test.xml");

.

.

.5 SAXBuilder builder = new SAXBuilder();6 Document doc = null;7 try {8 try {9 doc = builder.build(output);10 } catch (IOException e) {11 e.printStackTrace();12 }13 } catch (JDOMException e) {14 e.printStackTrace();15 }16 XMLOutputter outp = new XMLOutputter();17 Element root = doc.getRootElement();18 addAnalisysPart(root);

.

.

.19 List<Element> l = root.getChildren("part");20 for (Iterator<Element> it = l.iterator(); it.hasNext();) {21 Element part = it.next();22 if (part.getAttributeValue("id").equals("P5")) {23 List<Element> measures = part.getChildren("measure");24 Iterator<Element> iterM=measures.iterator();25 while(iterM.hasNext()) {26 Element current = iterM.next();27 getElabChord(current);28 getElabModulations(current);29 }30 }31 if(part.getAttributeValue("id").equals("P4")){32 List<Element> measures = part.getChildren("measure");33 Iterator<Element> iterM=measures.iterator();34 while(iterM.hasNext()) {35 Element current = iterM.next();36 getElabDegrees(current);37 }38 }39 }

.

.

.40 }

Figura 5.12: Codice relativo al metodo elabMusicXMLFile()

Page 67: Universitá degli Studi di Salerno Un analizzatore armonico

Capitolo 5. Implementazione 61

Figura 5.13: File MusicXML in input alla classe MusicXMLmaker.java

Figura 5.14: File MusicXML restituito in output dalla classe MusicXMLmaker.java

Page 68: Universitá degli Studi di Salerno Un analizzatore armonico
Page 69: Universitá degli Studi di Salerno Un analizzatore armonico

Capitolo 6

Test e conclusioni

6.1 Introduzione

In questo capitolo vengono presentati una serie di test del tool jBach descritto precedentemente.

L’insieme scelto come input per i test effettuati è costituito dai circa 400 corali a quattro parti di J. S.

Bach[13]. Gli obiettivi delle sessioni condotte sono stati essenzialmente due:

1. Analisi armonica di un singolo Corale e valutazione statistica dei dati elaborati;

2. Analisi armonica dell’intero insieme dei Corali di Bach con conseguente studio statistico sullo “stile”

compositivo.

6.2 Progettazione dei test

Per quanto riguarda l’analisi di un singolo corale, le sessioni di test che sono state effettuate si sono

svolte secondo il seguente schema:

• lettura del MIDI file che rappresenta il corale;

• generazione della successione armonica del corale(sequenza di accordi);

• analisi armonica automatica del corale osservando le varie fasi

– individuazione delle zone rosse;

– analisi in sequenza dei 5 passaggi dell’algoritmo per le zone grige;

• generazione del file MusicXML con i risultati ottenuti;

• stampa della tabella con i dati relativi all’insieme dei passaggi armonici relativi al corale in in-

put(espressi in termini di numero totale di passaggi dall’accordo X a quello Y per ogni X e

Y)

Page 70: Universitá degli Studi di Salerno Un analizzatore armonico

64 Capitolo 6. Test e conclusioni

Per l’analisi dell’intero insieme di corali di Bach è stata implementata una procedura ad hoc, al

fine di produrre in output la tavola dei passaggi armonici utilizzati dal compositore tedesco secondo

l’interpretazione fornita dall’algoritmo descritto in questo lavoro. Tale studio ha avuto come obbiettivo

quello di descrivere in termini numerici lo “stile” di Bach nell’armonizzazione dei corali, inteso come

l’uso di determinate sequenze di accordi “privilegiate” a discapito di altre.

6.3 Test sul Corale BWV70

In questo paragrafo sarà effettuato un test dell’algoritmo per l’analisi armonica automatica sul corale

BWV701 di Bach. In figura 6.1 è riportato il frammento iniziale del corale su cui verrà eseguito il test.

Figura 6.1: Frammento iniziale del corale BWV70

Seguendo il criterio illustrato sopra, il primo passo è quello di leggere la sequenza MIDI corrispon-

dente al corale di test e creare la struttura logica che corrisponde alla partitura virtuale. Il lettore

crea una struttura che fornirà un accesso diretto agli oggetti contenuti nella partitura. Una possibile

interrogazione è mostrata in figura 6.2.

Dopo aver creato la struttura dati idonea si passa alla fase di analisi. Si genera la sequenza di accordi

che corrisponde alla stesura armonica del brano in oggetto. L’output dopo la lettura degli accordi è

mostrato in figura 6.3.

Da notare che la tabella di riferimento per la lettura degli accordi potrebbe non contenere una

entry per le coordinate passate in input. Tale eventualità è indicata attraverso la stampa di un punto

interrogativo(“? ”) in corrispondenza dell’accordo non riconosciuto. La figura 6.4 mostra tale situazione.

A questo punto si applica la procedura per la determinazione delle cadenze autentiche(II-V-I, IV-V-

I, I-V-I). La figura 6.5 mostra il frammento del corale BWV70 con le annotazioni riguardo le cadenze

1 numerazione dei corali

Page 71: Universitá degli Studi di Salerno Un analizzatore armonico

Capitolo 6. Test e conclusioni 65

Figura 6.2: Risultato della chiamata getBeat(Measure 3, Beat 1)

Figura 6.3: Lettura e annotazione della sequenza accordi

Figura 6.4: Eventuale accordo non riconosciuto

calcolate in questa fase.

Infine si procede con l’esecuzione delle 5 iterazioni dell’algoritmo per l’analisi degli accordi delle zone

grigie. Al termine dell’esecuzione si genera il file MusicXML che rappresenta la partitura del corale con

le informazioni calcolate. Tale file può essere visualizzato con un qualsiasi editor musicale(un editor

free è MuseScore[15]). Le figure ?? e ?? mostrano l’output del programma alla fine dell’esecuzione

Page 72: Universitá degli Studi di Salerno Un analizzatore armonico

66 Capitolo 6. Test e conclusioni

Figura 6.5: Individuazione delle zone grigie

dell’algoritmo per l’analisi armonica automatica.

Sono stati effettuati dei rilievi statistici sia sul funzionamento dell’algoritmo che sui dati ottenuti.

La figura 6.6 mostra la percentuale di accordi riconosciuti utilizzando le entry della ChordTable memo-

rizzata nell’applicazione mentre la figura 6.7 indica la percentuale di accordi la cui funzione armonica

Figura 6.6: percentuale di accordi riconosciuti

viene determinata, in relazione all’esecuzione delle singole fasi dello svolgimento dell’algoritmo. Si può

notare che le procedure invocate per la determinazione delle Zone Rosse individuano la funzione armo-

nica di circa il 50% degli accordi totali, e già con 2 passaggi dell’algoritmo per le Zone Grigie si riesce

a elaborare i dati della quasi totalità degli accordi2.

Il grafico in figura 6.8 e 6.9 mostra la percentuale dei passaggi di grado (consecutivi) utilizzati

nell’armonizzazione del corale BWV70 in riferimento a centri tonali sia maggiori (6.8) che minori (6.9).

2 l’eventuale margine di scarto rispetto al 100% è dovuto alla possibilità che il sistema non sia riuscito a leggerecorrettamente gli accordi della composizione

Page 73: Universitá degli Studi di Salerno Un analizzatore armonico

Capitolo 6. Test e conclusioni 67

Figura 6.7: percentuale di accordi elaborati durante lo svolgimento dell’algoritmo

Figura 6.8: Passaggi di grado nelle tonalità maggiori

Sapendo che il corale in oggetto è in tonalità di G+ (Sol maggiore), dalla osservazione dei due grafici,

è possibile dedurre che:

• nelle tonalità maggiori vengono utilizzati in prevalenza i gradi “forti” (I-IV-V);

• come era prevedibile il passaggio V-I, che afferma la tonalità, è usato molto spesso;

• data la tonalità d’impianto maggiore, i passaggi di grado in minore sono prevalentemente sul I e V

grado;

Il grafico in figura 6.10 mostra le modulazioni che sono state individuate dall’analizzatore armonico.

Da esso si evince che il centro tonale secondario maggiormente utilizzato (rispetto alla tonalità d’im-

pianto di Sol maggiore) è il tono costruito sul IV grado, cioè C+ (Do maggiore), così come da prassi

compositiva dell’epoca. La tonalità minore di riferimento risulta essere E- (Mi minore), che è la relativa

minore di G+ (Sol maggiore).

Page 74: Universitá degli Studi di Salerno Un analizzatore armonico

68 Capitolo 6. Test e conclusioni

Figura 6.9: Passaggi di grado nelle tonalità minori

Figura 6.10: Modulazioni presenti nel Corale BWV70

6.4 Test sull’insieme dei Corali di Bach

In questo paragrafo vengono riportati i risultati di uno studio statistico, effettuato con l’ausilio del

tool jBach, sull’insieme dei Corali di Bach3. Esso si è tradotto in una serie di “regole” che possono

rappresentare in qualche maniera una codifica dello stile compositivo del musicista tedesco.

I ii iii IV V vi viiI 8.1 2.5 0.5 0.7 18.5 1.7 0.3ii 0.9 0.6 0.4 0.2 10.4 0.2 0.2iii 0.9 0.3 0.6 0.5 0.8 0.6 0.1IV 0.6 0.5 0.1 0.3 5.3 0.1 0.2V 22.5 0.6 1.5 0.8 10.8 2.0 0.1vi 0.4 0.6 0.6 0.4 2.2 0.7 0.1vii 0.3 0.0 0.0 0.1 0.1 0.1 0.1

Tabella 6.1: Tavola dei passaggi di grado per le tonalità maggiori (i valori sono espressi in %).

I valori presenti nella tabella 6.1 riassumono statisticamente i passaggi di grado utilizzati da Bach

3 l’insieme di riferimento contiene 373 corali

Page 75: Universitá degli Studi di Salerno Un analizzatore armonico

Capitolo 6. Test e conclusioni 69

nell’armonizzazione dei corali. I passaggi V-I, I-V, ii-V e IV-V si confermano essere i più utilizzati, e

tale caratteristica segue lo stile compositivo dell’epoca. Una curiosità è legata al passaggio V-vi che in

musica rappresenta una forma cadenzale precisa: la Cadenza d’inganno. Tale cadenza venne utilizzata

molto spesso in epoca Classica da compositori come Mozart o Schubert, ma, come dimostra il valore in

tabella, già in epoca Barocca veniva impiegata per dare l’effetto di sospensione alla composizione.

I ii iii IV V vi[ vi vii[ viiI 17.1 0.7 1.4 6.4 15.6 1.4 0.8 2.1 1.4ii 0.0 0.0 0.0 0.0 3.3 0.0 0.0 0.0 0.0iii 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0IV 2.3 0.2 0.2 1.4 9.5 0.4 0.1 0.3 0.3V 22.6 0.0 0.0 0.8 8.0 0.0 0.0 0.0 0.1vi[ 0.1 0.3 0.1 0.1 0.2 0.0 0.0 0.0 0.1vi 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0vii[ 0.5 0.0 0.1 0.2 0.4 0.0 0.1 0.0 0.1vii 1.1 0.0 0.0 0.0 0.2 0.0 0.0 0.0 0.0

Tabella 6.2: Tavola dei passaggi per le tonalità minori (i valori sono espressi in %).

La tabella 6.2 riporta il valori percentuali rispetto al totale dei passaggi di grado nelle tonalità minori.

In tonalità minore i passaggi I-V e V-I sono in assoluto i più utilizzati4, ma si può notare un utilizzo

notevole del passaggio IV-V (facente sicuramente parte del pattern cadenzale IV-V-I) e I-IV (compreso

spesso nella cadenza I-IV-V-I). E’ da notare un inusuale utilizzo del passaggio IV-I che non rappresenta

forme cadenzali contemplate nella tradizione classica per le tonalità minori5. Il grafico in figura 6.11

Figura 6.11: Valori percentuali delle modulazioni più utilizzate

descrive le modulazioni più usate da Bach. Le informazioni che si possono ricavare dallo studio dei dati

in esso contenuti sono le seguenti:

4 anche il passaggio I-I ha una percentuale di utilizzo alta, ma non può essere considerato un passaggio armonico, bensìuna conferma del tono5 in tonalità maggiore il passaggio IV-I prende il nome di Cadenza Plagale

Page 76: Universitá degli Studi di Salerno Un analizzatore armonico

70 Capitolo 6. Test e conclusioni

• data una tonalità di partenza A, la modulazione arriva, nella maggior parte dei casi, alla tonalità B

che si trova su IV grado (modulazione tonica-sottodominante).

• data una tonalità di partenza A di modo maggiore, l’eventuale modulazione ad una tonalità minore

porta sempre (o quasi) alla relativa minore di A (esempio: C+/A-);

• data una tonalità di partenza A di modo minore, l’eventuale modulazione ad una tonalità maggiore

porta sempre (o quasi) alla relativa minore di A (esempio: G-/Bb+);

La figura 6.12 descrive la distribuzione dell’uso delle varie tonalità d’impianto per l’armonizzazione

dell’insieme dei Corali. Le tonalità più utilizzata (sia in maggiore che in minore) hanno come tonica

la nota Sol (G major e G minor). Tale scelta è dovuta presumibilmente al fatto che, essendo i corali

destinati al canto dell’assemblea durante le funzioni religiose, dovevano abbracciare un’estensione che

si trovasse in un registro medio (né troppo grave, né troppo acuto), tale da permetterne l’intonazione

anche da parte di un coro composto da persone che evidentemente non erano professionisti del canto.

Figura 6.12: Distribuzione delle tonalità utilizzate per l’armonizzazione dei Corali (in azzurro le tonalità maggiori e inarancio quelle minori)

In conclusione di questo paragrafo è possibile precisare che i valori indicati nelle tabelle 6.1 e 6.2 e

nel grafico in figura 6.11, possono essere utilizzati nell’applicazione dell’algoritmo EvoBassComposer [14]

per la composizione di corali a 4 parti nello stile Bachiano(argomento di studi del corso di Composizione

presso i Conservatori di Musica)).

Page 77: Universitá degli Studi di Salerno Un analizzatore armonico

Capitolo 6. Test e conclusioni 71

6.5 Conclusioni

L’obiettivo di questo lavoro è stato quello di costruire un tool che permettesse di poter produrre

l’analisi armonica in modo automatico di una composizione musicale a quattro parti. Nello sviluppo

dell’algoritmo (che rappresenta il contenuto centrale di questo lavoro) e nella sua implementazione, ci

si è imbattuti molto spesso nella difficoltà di codificare dei processi decisionali che a volte sembravano

andare contro una logica puramente matematica. Spesso il metodo scientifico si è “scontrato” con le

licenze che rendono unico il risultato dell’espressione artistica di un genio della musica.

L’algoritmo è stato sviluppato cercando sempre di mantenere il necessario equilibrio tra l’esigenza di

fornire risultati chiari (o non ambigui) e la consapevolezza di non poter codificare con concetti razionali

l’intero valore di un’opera d’arte (sia essa una scultura, un quadro o una composizione musicale).

L’utilizzo dei Corali di Bach come caso di studi ha costituito un ottimo strumento atto a testare

la bontà delle procedure sviluppate. Essendo tali composizioni caratterizzate da una certa “sobrietà

compositiva” è stato possibile determinarne una corretta interpretazione della struttura. I risultati

ottenuti nelle sessioni di testing hanno da un lato confermato la bontà dell’algoritmo sviluppato e

dall’altro hanno certificato, in termini numerici, le analisi sullo stile compositivo di Bach esposte nella

innumerevole serie di trattati storico musicali scritti da 200 anni a questa parte.

Il ritratto di Bach in figura 6.13 mostra il compositore che stringe nella mano destra una sua com-

posizione. Si tratta di un canone6 «enigmatico» che oggi viene catalogato come BWV 1076. Il titolo

precisa che si tratta di un Canon triplex a 6 voci, solo che i conti non sembrano tornare perché le

voci scritte sono solo tre e non sei. Dove sono le tre voci mancanti? Non è difficile, per chi conosce la

struttura di un canone «enigmatico», capire che esse si trovano “nascoste” nelle prime tre voci scritte,

e che per realizzare integralmente la composizione è necessario risolvere quello che è in sostanza una

sorta di gioco enigmistico musicale, che ha un numero di possibili combinazioni sovrapponibili a quelle

del Cubo di Rubik. Questo testimonia la grande preparazione in matematica e fisica che Bach aveva

sviluppato e che dimostra nelle sue opere, specialmente nella produzione musicale dell’ultima parte

della sua vita. Nell’ultimo numero di una rivista dal titolo Musikalische Bibliothek, che uscì fino al

1754, venne pubblicato il famoso canone del ritratto con delle riflessioni sulla musica e la matematica

che sintetizzano il significato intrinseco che si è voluto dare al lavoro è stato descritto in questa tesi. Di

seguito viene riportato l’estratto (a mio avviso) più incisivo:

Se vogliamo convincerci del tutto delle verità musicali, dobbiamo aggiungere anche la conoscenza

6 canone

Page 78: Universitá degli Studi di Salerno Un analizzatore armonico

72 Capitolo 6. Test e conclusioni

Figura 6.13: Ritratto di Johann Sebastian Bach

matematica, quale supremo grado della sapienza umana [...] Dove dunque sta scritto che gli antichi

non intendevano migliorare la musica con la ratio matematica? [...] Forse che i pitagorici non hanno

misurato i suoni allo scopo di potersi orientare nell’esercizio della musica? [...] Certo, se io voglio

approntare un pezzo di musica non è necessario che per prima cosa io mi metta a misurare i suoni

uno per uno col compasso, ma se io, con l’aiuto della matematica, avrò prima indagato esattamente

e conosciuto alla perfezione le proprietà dei suoni, allora potrò poi metterli insieme con la massima

sicurezza. La conoscenza matematica dei suoni dà dunque al compositore una grande luce, anche se in

forma mediata, non immediata, ed è molto utile per la preparazione di un pezzo di musica. Tuttavia,

poiché la stragrande maggioranza degli esperti di musica non ha mai percorso queste vie, essi non

riescono neppure a credere che le cose stiano così. Tutte le musiche consistono infatti di suoni, e i

suoni sono regolati da rapporti reciproci diversi, su cui si fondano tutti gli effetti che la musica ha su

di noi. Tuttavia, poiché tali rapporti sono costituiti da grandezze matematiche, e poiché le grandezze a

loro volta sono un corrispettivo della matematica, allora per l’amor del cielo la si smetta di disputare

contro la luce del sole, e di dire che le misurazioni matematiche dei suoni non appartengono alla teoria

della composizione musicale.

L’arte comincia quando si infrangono le regole, ma per infrangere le regole bisogna conoscerle!

Page 79: Universitá degli Studi di Salerno Un analizzatore armonico

Riferimenti bibliografici

1. W. Piston, De Voto, Armonia, E.D.T. Edizioni di Torino, 19892. http://www.alessiodibenedetto.it/Nuove%20vie%20delll’Analisi%20Musicale.html3. http://www.jsbchorales.net/index.shtml4. Dionisi - Toffoletti - Dardo, Studi sul corale, Ed. Zanibon 19695. Walter B. Hewlett and Eleanor Selfridge-Field, The Virtual Score: Representation, Retrieval, Restoration, MIT Press,

Cambridge, MA, 20016. Kirlin, P.B., Utgoff, P.E., A Framework for Automated Schenkerian Analysis, ISMIR(2008)363-3687. F. Lerdahl - R. Jackendoff, A Generative Theory of Tonal Music, MIT Press, Cambridge, Massachusetts, 19838. http://www.digitpress.com/library/techdocs/The_Complete_SCI_Midi-first_edition.pdf9. Java Technology, http://java.com/it/about/

10. http://www.midi.org/techspecs/midispec.php11. http://dspace.mit.edu/handle/1721.1/3387812. http://it.wikipedia.org/wiki/Pagina_principale13. Bach Chorales, http://www.jsbchorales.net/index.shtml14. R. De Prisco, G. Zaccagnino, R. Zaccagnino, EvoBassComposer: a multi-objective genetic algorithm for 4-voice

compositions, GECCO 2010: 817-81815. http://musescore.org/it/

73