F57033 - Programmazione per la Musica [a.a. 2006-07]


Indice


Informazioni generali

Il corso di Programmazione per la Musica è un insegnamento fondamentale del corso di laurea (triennale) in Scienze e Tecnologie della Comunicazione Musicale.


Orario delle lezioni

Visto che il numero di iscritti al secondo anno del corso di laurea in STCM e' pari circa al doppio delle postazioni di lavoro presenti in Aula 2, il corso viene erogato su due turni. Piu' precisamente, ogni settimana verranno tenute due lezioni (nel seguito denominate "Lezione A" e "Lezione B") di due ore ciascuna, che verranno ripetute due volte nel corso della stessa settimana come segue:

Il corso puo' essere seguito combinando liberamente, per ciascuna settimana, una qualunque Lezione A con una qualunque Lezione B (non necessariamente le stesse per tutta la durata del corso).


Programma del corso

Il programma consiste di tutti e soli gli argomenti trattati a lezione, secondo quanto viene via via pubblicato nella sottostante sezione Diario delle lezioni tenute.


Modalità d'esame

La prova di esame si svolge in Silab (via Comelico 39), e consiste nella realizzazione di un programma in linguaggio Java conforme a specifiche date.

Viste norme entrate in vigore il 1 gennaio 2005, la verbalizzazione può avvenire ESCLUSIVAMENTE in occasione di un appello ufficiale, gestito tramite il sistema SIFA, al quale il candidato risulti regolarmente iscritto. Si tenga presente che dette norme rendono praticamente impossibile la verbalizzazione di un voto al di fuori del normale regime degli appelli a calendario, e che la soluzione in extremis di problemi burocratici legati alla ritardata o mancata verbalizzazione di un voto sarà estremamente problematica. (Per situazioni di emergenza -- p.es. imminenza dell'esame di laurea, scadenza dei termini per la presentazione di domande di borse di studio, etc. -- presentarsi durante l'orario di ricevimento dopo aver concordato una linea d'azione con la segreteria didattica del corso di studi di appartenenza e/o della Facoltà.)


Diario delle lezioni tenute

  • Lezioni 01-02 -- Lun 05.03.07 -- Introduzione a JDK (Java Development Kit), alla libreria Java Sound e alla documentazione della specifica MIDI.
  • Lezioni 03-04 -- Ven 09.03.07 -- Classi vuote; commenti; metodi vuoti; stampa di stringhe; produzione (MIDI) di singoli suoni, di diadi e di triadi.
  • Lezioni 03'-04' -- Ven 09.03.07 -- Ripetizione delle Lezioni 03-04.
  • Lezioni 05-06 -- Lun 12.03.07 -- Costrutto iterativo for. Array di stringhe: importazione di argomenti da linea di comando.
  • Lezioni 07-08 -- Lun 12.03.07 -- Scale a gradi equidistanti (cromatiche, esatonali, etc.).
  • Lezioni 09-10 -- Ven 16.03.07 -- Lezione sospesa.
  • Lezioni 11-12 -- Lun 19.03.07 -- Scale a gradi non equidistanti (maggiore, minore, frigia, etc.).
  • Lezioni 13-14 -- Lun 19.03.07 -- Costrutti iterativi while e do-while: scale ascendenti e discendenti.
  • Lezioni 15-16 -- Mar 20.03.07 -- Classi e oggetti: riscrittura in modalita' object-oriented degli esempi precedenti.
  • Lezioni 17-18 -- Ven 23.03.07 -- Lezione sospesa (concomitanza con altra lezione del docente)
  • Lezioni 19-20 -- Lun 26.03.07 --
  • Lezioni 19'-20' -- Lun 26.03.07 --
  • Lezioni 21-22 -- Mar 27.03.07 --
  • Lezioni 21'-22' -- Ven 30.03.07 --
  • Lezioni 23-24 -- Lun 02.04.07 --
  • Lezioni 23'-24' -- Lun 02.04.07 --
  • Lezioni 25-26 -- Mar 27.03.07 --
  • Lezioni 25'-26' -- Ven 06.04.07 -- Lezione sospesa (vacanza accademica)
  • Lezioni 27-28 -- Lun 09.04.07 -- Lezione sospesa (vacanza accademica)
  • Lezioni 27'-28' -- Lun 09.04.07 -- Lezione sospesa (vacanza accademica)
  • Lezioni 29-30 -- Mar 10.04.07 -- Lezione sospesa (vacanza accademica)
  • Lezioni 25'-26' -- Ven 13.04.07 --
  • Lezioni 31-32 -- Lun 16.04.07 --
  • Lezioni 31'-32' -- Lun 16.04.07 --
  • Lezioni 33-34 -- Mar 16.04.07 --
  • Lezioni 33'-34' -- Ven 20.04.07 --
  • Lezioni 35-36 -- Lun 23.04.07 --
  • Lezioni 35'-36' -- Lun 23.04.07 --
  • Lezioni 37-38 -- Mar 24.04.07 --
  • Lezioni 37'-38' -- Ven 27.04.07 -- Lezione sospesa (indisponibilita' aula)
  • Lezioni 39-40 -- Lun 30.04.07 -- Lezione sospesa (vacanza accademica)
  • Lezioni 39'-40' -- Lun 30.04.07 -- Lezione sospesa (vacanza accademica)
  • Lezioni 41-42 -- Mar 01.05.07 -- Lezione sospesa (festivita' nazionale)
  • Lezioni 37'-38' -- Ven 04.05.07 --
  • Lezioni 43-44 -- Lun 07.05.07 --
  • Lezioni 43'-44' -- Lun 07.05.07 --
  • Lezioni 45-46 -- Mar 08.05.07 --
  • Lezioni 45'-46'-- Ven 11.05.07 --
  • Lezioni 45-46 -- Lun 14.05.07 --
  • Lezioni 45'-46' -- Lun 14.05.07 --
  • Lezioni 47-48 -- Mar 18.05.07 --
  • Lezioni 47'-48'-- Ven 18.05.07 --
  • Lezioni 49-50 -- Lun 21.05.07 --
  • Lezioni 49'-50' -- Lun 21.05.07 --
  • Lezioni 51-52 -- Mar 22.05.07 --
  • Lezioni 51'-52'-- Ven 25.05.07 --
  • Lezioni 51-52 -- Lun 28.05.07 -- Lezione sospesa (missione del docente fuori sede)
  • Lezioni 51'-52' -- Lun 28.05.07 -- Lezione sospesa (missione del docente fuori sede)
  • Lezioni 53-54 -- Mar 29.05.07 -- Lezione sospesa (missione del docente fuori sede)
  • Lezioni 53'-54'-- Ven 01.06.07 -- (a turni riuniti, per ricupero lezione del 28.05.07)
  • Lezioni 55-56 -- Lun 03.06.07 -- (a turni riuniti, per ricupero lezione del 29.05.07)
  • Lezioni 55'-56' -- Lun 03.06.07 -- (a turni riuniti)
  • Lezioni 57-58 -- Mar 04.06.07 -- Esercitazione di preparazione all'esame
  • Lezioni 57'-58' -- Ven 08.06.07 -- Esercitazione di preparazione all'esame


    Agenda delle lezioni da svolgere

    Il corso e' terminato.


    Materiale Didattico

    Testo di riferimento

    Non viene adottato alcun testo di riferimento particolare. Qualunque testo introduttivo alla programmazione nel linguaggio Java è adeguato ai fini del corso. Uno dei migliori testi attualmente in commercio è il seguente:

    al quale sono associati un CD-ROM (distribuito con il libro) che (oltre a una copia del Java Development Kit versione 1.5 di Sun Microsystems per i sistemi operativi Windows e Linux) "contiene alcune librerie da affiancare a quelle standard di Java, utilizzate principalmente per gli esempi e per gli esercizi, oltre al codice sorgente dei principali esempi", nonché un sito che riporta un errata corrige aggiornato.

    Nessuno degli argomenti è stato svolto a lezione a un livello di dettaglio paragonabile a quello del testo. Viceversa, in alcune lezioni sono stati svolti alcuni argomenti non trattati nel testo, oppure trattati in maniera meno approfondita. Per questi ultimi, un utile ausilio didattico sono le slide (vedi sotto) utilizzate dal docente nel corso di precedenti anni accademici. (Si tenga presente che non tutto il materiale contenuto in dette slide è stato presentato a lezione.)

    Documentazione online

    In alternativa o in aggiunta al testo di cui sopra, può essere utile consultare il Java Tutorial pubblicato nel sito di Sun Microsystems dedicato a Java, nel quale si trova anche la documentazione delle API.

    Per quanto riguarda la libreria Java Sound, sono disponibili online la Java Sound Programmer Guide, di cui ai fini del corso è rilevante la sola Parte II.

    Per una piena comprensione dello standard MIDI, può essere utile consultare la specifica non ufficiale contenuta nell'eccellente sito di Jeff Glatt.

    La specifica ufficiale dello standard MIDI è pubblicata (solo a stampa) dalla MIDI Manufacturers Association.

    Slide di Gianfranco Prini

    Raccolta completa [versione a.a. 1999-00]

    Capitoli separati [versione a.a. 1999-00]

    Esempi di programmazione


    Gianfranco Prini (gianfranco.prini@unimi.it)