Informatica applicata al suono
A.A. 2019/2020
Obiettivi formativi
L'insegnamento è articolato in due unità didattiche. La prima unità didattica (6 CFU) si propone di fornire agli studenti le nozioni di base sull'elaborazione digitale del suono. La seconda unità didattica (6 CFU) si propone di introdurre i principali concetti della programmazione orientata agli oggetti, applicando tali concetti alla sintesi ed elaborazione audio in tempo reale.
Risultati apprendimento attesi
Al termine della prima unità didattica lo studente deve essere in grado di padroneggiare le rappresentazioni e le trasformazioni di segnali audio nei dominii del tempo e della frequenza anche attraverso linguaggi di programmazione dedicati. Al termine della seconda unità didattica lo studente deve essere in grado di padroneggiare i principali concetti della programmazione object-oriented e di usarli autonomamente nello sviluppo di progetti software di elaborazione audio real-time.
Periodo: Primo annuale
Modalità di valutazione: Esame
Giudizio di valutazione: voto verbalizzato in trentesimi
Corso singolo
Questo insegnamento non può essere seguito come corso singolo. Puoi trovare gli insegnamenti disponibili consultando il catalogo corsi singoli.
Programma e organizzazione didattica
Edizione unica
Responsabile
Periodo
Primo annuale
Programma
Per il primo modulo il programma verte sui seguenti argomenti
- Il suono nel dominio fisico acustico e in quello percettivo
Tono puro e sua modellazione matematica
Informazione di ampiezza e decibel (dB)
- Rappresentazione digitale del suono
Conversione analogico-digitale (ADC)
Campionamento e teorema del campionamento
Principio di quantizzazione
- Rappresentazioni in frequenza
Analisi frequenziale - Modello computazionale
Trasformata Discreta di Fourier (DFT)
- Sintesi ed elaborazione del suono
Sintesi additiva, sottrattiva, per modulazione di frequenza
Filtraggio e convoluzione
Per il secondo modulo il programma verte sui seguenti argomenti
- Introduzione a Python:
Tipi, operatori, variabili, decisioni, cicli, funzioni
- Iterazioni in Python:
contatori, tipi iterabili, iteratori, comprehension
- Introduzione alla programmazione orientata agli oggetti:
classi, incapsulamento, ereditarietà, polimorfismo
- Programmazione a oggetti in Python:
costruttori, metodi, attributi, metodi di classe e statici
- Ereditarietà in Python:
tipi di ereditarietà, name trees
- Polimorfismo in Python:
"Duck typing" e tipi di polimorfismo, confronto tra Python e Java
- Sintesi ed elaborazione audio in tempo reale in Python:
introduzione a pyo, gerarchia di classi, programmazione di effetti audio
- Programmazione audio ad oggetti:
estensione di classi in pyo, costruttori, sovrascrittura di metodi
- Il suono nel dominio fisico acustico e in quello percettivo
Tono puro e sua modellazione matematica
Informazione di ampiezza e decibel (dB)
- Rappresentazione digitale del suono
Conversione analogico-digitale (ADC)
Campionamento e teorema del campionamento
Principio di quantizzazione
- Rappresentazioni in frequenza
Analisi frequenziale - Modello computazionale
Trasformata Discreta di Fourier (DFT)
- Sintesi ed elaborazione del suono
Sintesi additiva, sottrattiva, per modulazione di frequenza
Filtraggio e convoluzione
Per il secondo modulo il programma verte sui seguenti argomenti
- Introduzione a Python:
Tipi, operatori, variabili, decisioni, cicli, funzioni
- Iterazioni in Python:
contatori, tipi iterabili, iteratori, comprehension
- Introduzione alla programmazione orientata agli oggetti:
classi, incapsulamento, ereditarietà, polimorfismo
- Programmazione a oggetti in Python:
costruttori, metodi, attributi, metodi di classe e statici
- Ereditarietà in Python:
tipi di ereditarietà, name trees
- Polimorfismo in Python:
"Duck typing" e tipi di polimorfismo, confronto tra Python e Java
- Sintesi ed elaborazione audio in tempo reale in Python:
introduzione a pyo, gerarchia di classi, programmazione di effetti audio
- Programmazione audio ad oggetti:
estensione di classi in pyo, costruttori, sovrascrittura di metodi
Prerequisiti
Il superamento dell'esame di Programmazione è propedeutico a questo insegnamento. E` inoltre fortemente consigliato il superamento dell'esame di Acustica.
Metodi didattici
L'intero insegnamento viene svolto mediante lezioni frontali.
Materiale di riferimento
Sito web:
http://favanziniias2.ariel.ctu.unimi.it
Per il primo modulo:
M. Malcangi: "Informatica Applicata al Suono per la Comunicazione Musicale - Musical Digital Audio: Teoria e pratica", Maggioli Editore
Per la parte relativa al linguaggio Python:
- Mark Lutz,
"Learning Python", fifth edition. O'Reilly (2013).
- Allen B. Downey,
"Think Python", second edition. Green Tea Press (2016).
https://greenteapress.com/wp/think-python-2e/
Per la parte relativa alla programmazione orientata agli oggetti:
- Michael T. Goodrich, Roberto Tamassia, Michael H. Goldwasser,
"Data Structures and Algorithms in Python". Wiley (2013)
- Michael H. Goldwasser, David Letscher,
"Object-Oriented Programming in Python", Prentice Hall (2008).
https://cs.slu.edu/~goldwasser/oopp/
Per la parte relativa alla programmazione audio:
- Documentazione ufficiale di pyo
http://ajaxsoundstudio.com/pyodoc/
Ulteriore materiale integrativo preparato dal docente viene reso disponibile sul sito web dell'insegnamento.
http://favanziniias2.ariel.ctu.unimi.it
Per il primo modulo:
M. Malcangi: "Informatica Applicata al Suono per la Comunicazione Musicale - Musical Digital Audio: Teoria e pratica", Maggioli Editore
Per la parte relativa al linguaggio Python:
- Mark Lutz,
"Learning Python", fifth edition. O'Reilly (2013).
- Allen B. Downey,
"Think Python", second edition. Green Tea Press (2016).
https://greenteapress.com/wp/think-python-2e/
Per la parte relativa alla programmazione orientata agli oggetti:
- Michael T. Goodrich, Roberto Tamassia, Michael H. Goldwasser,
"Data Structures and Algorithms in Python". Wiley (2013)
- Michael H. Goldwasser, David Letscher,
"Object-Oriented Programming in Python", Prentice Hall (2008).
https://cs.slu.edu/~goldwasser/oopp/
Per la parte relativa alla programmazione audio:
- Documentazione ufficiale di pyo
http://ajaxsoundstudio.com/pyodoc/
Ulteriore materiale integrativo preparato dal docente viene reso disponibile sul sito web dell'insegnamento.
Modalità di verifica dell’apprendimento e criteri di valutazione
Per il primo modulo l'esame consiste nello sviluppo di un progetto da discutere criticamente in una prova orale. Il progetto può essere sviluppato individualmente o in piccoli gruppi.
La valutazione è espressa in trentesimi e tiene conto dei seguenti parametri: grado di conoscenza degli argomenti, capacità di applicare le conoscenze alla risoluzione di problemi concreti, capacità di ragionamento logico e critico.
Per il secondo modulo l'esame consiste di una prova al calcolatore della durata di 90 minuti e articolata in due sezioni: 1) domande a risposta multipla, 2) esercizi di programmazione. Gli esercizi richiedono di realizzare o completare programmi in python riguardanti lo sviluppo di semplici gerarchie di classi, nonché di algoritmi di elaborazione audio in tempo reale.
La valutazione è espressa in trentesimi e tiene conto dei seguenti parametri: grado di conoscenza degli argomenti, capacità di applicare le conoscenze alla risoluzione di esercizi, capacità di ragionamento logico e critico.
Durante la prova è consentita la consultazione della documentazione di python e dei moduli utilizzati.
La valutazione è espressa in trentesimi e tiene conto dei seguenti parametri: grado di conoscenza degli argomenti, capacità di applicare le conoscenze alla risoluzione di problemi concreti, capacità di ragionamento logico e critico.
Per il secondo modulo l'esame consiste di una prova al calcolatore della durata di 90 minuti e articolata in due sezioni: 1) domande a risposta multipla, 2) esercizi di programmazione. Gli esercizi richiedono di realizzare o completare programmi in python riguardanti lo sviluppo di semplici gerarchie di classi, nonché di algoritmi di elaborazione audio in tempo reale.
La valutazione è espressa in trentesimi e tiene conto dei seguenti parametri: grado di conoscenza degli argomenti, capacità di applicare le conoscenze alla risoluzione di esercizi, capacità di ragionamento logico e critico.
Durante la prova è consentita la consultazione della documentazione di python e dei moduli utilizzati.
Moduli o unità didattiche
Prima parte
INF/01 - INFORMATICA - CFU: 6
Lezioni: 48 ore
Docente:
Malcangi Mario Natalino
Turni:
-
Docente:
Malcangi Mario Natalino
Seconda parte
INF/01 - INFORMATICA - CFU: 6
Lezioni: 48 ore
Docente:
Avanzini Federico
Turni:
-
Docente:
Avanzini FedericoDocente/i