F57033 - Programmazione per la Musica [a.a. 2004-05]
Indice
Il corso di Programmazione per la Musica è un insegnamento complementare
del corso di laurea (triennale) in Scienze e Tecnologie della Comunicazione
Musicale.
Lunedi dalle 8:30 alle 11:30 in aula Alfa (Via Comelico 39).
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.
La prova di esame consiste nella realizzazione di un programma
in linguaggio Java, le cui specifiche di massima, proposte dal
candidato, dovranno essere preventivamente approvate dal docente.
L'interazione docente-candidato e la specifica del programma da
realizzare (d'ora in poi detta "SPECIFICA") dovranno conformarsi
alle seguenti norme, che potranno variare nel tempo per accogliere
i suggerimenti e le richieste di chiarimenti da parte dei candidati,
nonche' per correggere gli eventuali errori.
[Versione attuale delle norme: release 0.2 del 17.03.05]
- La SPECIFICA dovra' essere riportata in una pagina HTML (d'ora in
poi detta "PAGINA") appositamente costruita dal candidato (URL a scelta
del medesimo), la quale dovra' altresi' riportare come prima informazione,
in posizione ben visibile, le generalita' del candidato (nome, cognome,
numero di matricola, corso di studi, anno di corso).
- Il docente valutera' la SPECIFICA e quanto prodotto dal candidato in
tutte le fasi successive del progetto esclusivamente consultando
la PAGINA.
- Il candidato potra' variare la SPECIFICA una o piu' volte nel corso
del progetto, previa approvazione da parte del docente.
- La SPECIFICA dovra' prevedere la realizzazione di una applet (d'ora
in poi detta "APPLET") mediante l'uso della libreria java.applet
o di altra libreria equivalente.
- La APPLET dovra' essere attivabile dalla PAGINA, che dovra'
anche riportare un mini-manuale d'uso della APPLET, in posizione
contigua a quella della APPLET nella PAGINA.
- L'utente dovra' essere in grado di interagire con la APPLET per
mezzo di un'interfaccia grafica (d'ora in poi detta "GUI") da
realizzare con l'ausilio della libreria java.awt o
di altra libreria equivalente.
- L'attivazione della APPLET dovra' avere come effetto l'esecuzione
udibile di un brano monodico (d'ora in poi detto "BRANO") rappresentato
conformemente allo standard MIDI.
- Il modulo di programma preposto all'esecuzione del BRANO dovra'
essere realizzato con l'ausilio della libreria java.sound
o di altra libreria equivalente.
- Il BRANO dovra' essere prodotto (costruito) da un apposito modulo
di programma che potra' fare o non fare uso di tecniche di generazione
di numeri casuali, a scelta del candidato.
- L'esecuzione del BRANO dovra' essere alterabile dinamicamente agendo
sul valore di alcuni parametri che sara' compito del candidato scegliere
e specificare.
- Il valore di detti parametri dovra' essere modificabile per il
tramite della GUI, la quale dovra' comprendere almeno due diversi
strumenti grafici, di cui uno continuo (p.es. selezione di valori
sulla base della posizione corrente di una barra di scorrimento) e
uno discreto (p.es. selezione da menu di un valore tratto da un insieme
di valori predefiniti).
- L'esecuzione del BRANO non si dovra' interrompere mentre il valore
di un parametro e' in corso di modifica da parte dell'utente, e dovra'
proseguire conformemente al nuovo valore del parametro a partire
dall'istante in cui la scelta di detto nuovo valore sara' stata confermata
dall'utente medesimo (p.es. mediante rilascio del bottone del mouse dopo
aver agito su di una barra di scorrimento).
- La APPLET dovra' comprendere un pannello di controllo, dotato di
tasti (button) o di oggetti grafici equivalenti, che
consentano di avviare (START), di arrestare temporaneamente (PAUSE) o
di arrestare a titolo definitivo (STOP) l'esecuzione del brano.
- L'esecuzione della APPLET dovra' altresi' prevedere la presentazione
in forma testuale, in un'apposita area contenuta nella rappresentazione
grafica della APPLET medesima, della sequenza di suoni che vengono prodotti
(di mano in mano che vengono prodotti), consistente almeno del codice MIDI
del suono attualmente ascoltabile, del nome della corrispondente nota
musicale e della sua frequenza in Hz.
- Dopo un arresto temporaneo (pause) dovra' essere possibile riprendere
l'esecuzione tornando ad agire sul tasto che aveva provocato l'arresto.
- Dopo un arresto a titolo definitivo (stop) dovra' essere possibile
eseguire un nuovo brano tornando ad agire sul tasto di avvio (start).
- La PAGINA dovra' contenere il codice sorgente della APPLET, oppure
un link al codice medesimo, a scelta del candidato.
La presentazione del progetto da parte del candidato e la sua
discussione verranno effettuate su appuntamento, da richiedere
al docente via
email.
Con lo stesso messaggio, il candidato dovra' comunichera' al docente
la URL della PAGINA. La medesima procedura (messaggio di email con
indicazione della URL della PAGINA), dovra' essere utilizzata
ogniqualvolta il candidato riterra' opportuno consultasi con il
docente in corso d'opera, a partire dalla fase di prima definizione
e di consolidamento della SPECIFICA.
I voti riportati nelle prove di esame potranno essere verbalizzati
in occasione degli appelli ufficiali di cui al calendario che segue
(il quale potra' subire modifiche anche dell'ultima ora -- si
consulti periodicamente questa pagina o la
homepage del docente
per le ultime novita', tenendo presente che, in caso di discrepanza,
fa fede la homepage del docente).
- Appello 1 a.a. 2004-05 - Silab - Ore 11:30 - 28 Gen 05 -
- Appello 2 a.a. 2004-05 - Silab - Ore 09:30 - 01 Mar 05 -
- Appello 3 a.a. 2004-05 - Silab - Ore 09:30 - 01 Apr 05 -
- Appello 4 a.a. 2004-05 - Silab - Ore 09:30 - 16 Jun 05 -
- Appello 5 a.a. 2004-05 - Silab - Ore 09:30 - 15 Jul 05 -
- Appello 6 a.a. 2004-05 - Silab - Ore 09:30 - 30 Sep 05 -
- Appello 1 a.a. 2005-06 - Silab - Ore 09:30 - 27 Gen 06 -
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à.)
- Il diario verrà pubblicato prossimamente.
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:
- Giovanni Pighizzini e Mauro Ferrari
- DAI FONDAMENTI AGLI OGGETTI - Corso di programmazione Java
- Addison Wesley (2003), ISBN 88-7192-205-0 (Prima Edizione)
cui sono associati un CD-ROM (distribuito con il libro) che (oltre a
una copia del Java Development Kit versione 1.4 di Sun Microsystems)
"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",
nonche' 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, puo' essere utile
consultare il
Java Tutorial
pubblicato nel
sito di Sun Microsystems dedicato a Java.
Per quanto riguarda la libreria Java Sound, e' disponibile online la
Java Sound Programmer Guide, di cui ai fini del corso e'
rilevante la sola Parte II.
Per una piena comprensione dello standard MIDI, puo' essere utile consultare la
specifica non ufficiale
contenuta nell'eccellente
sito di Jeff Glatt.
La specifica ufficiale dello standard MIDI e' 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]
- Copertina
- Introduzione -- Motivazioni, prerequisiti, argomenti
- Capitolo 1 -- Un tuffo nel linguaggio e nell'ambiente
- Capitolo 2 -- Introduzione al linguaggio Java e all'ambiente HotJava
- Capitolo 3 -- Elementi di programmazione object-oriented
- Capitolo 4 -- Linguaggio Java: costrutti di base
- Capitolo 5 -- "La" microapplicazione: come la si scrive in Java [link temporaneamente non disponibile]
- Capitolo 6 -- La gestione delle eccezioni in Java
- Capitolo 7 -- Java: multithreading e programmazione concorrente
- Capitolo 8 -- Le applet di Java e lo strumento appletviewer [link temporaneamente non disponibile]
- Capitolo 9 -- Java: primitive grafiche e programmazione di GUI [link temporaneamente non disponibile]
Esempi di programmazione
- Esempio [link temporaneamente non disponibile]
Gianfranco Prini (
gfp@dico.unimi.it)