Computer science applied to sound

A.Y. 2019/2020
12
Max ECTS
96
Overall hours
SSD
INF/01
Language
Italian
Learning objectives
The course is structured into two teaching units. The first unit (6 CFU) aims at providing student with basic notions of digital audio signal processing. The second unit (6 CFU) aims at introducing the main concepts of object oriented programming, applying such concepts to real-time audio synthesis.
Expected learning outcomes
At the end of the first unit, the student shall be able to master the representations and the transformations of audio signal in the time domain and in the frequency domain, also by means of dedicated programming languages. At the end ot the second unit, the student shall be able to master the main concepts of object-oriented programming and to use them profitably in the development of real-time audio processing software projects.
Course syllabus and organization

Single session

Responsible
Lesson period
First year
Course syllabus
For the first module, the program is focused on the following topics
- Sound in the physical-acoustic domain and in the perceptual domain
Pure tones and mathematical models
Amplitude information and decibel (dB)
- Digital representation of sound
Analog to digital conversion (ADC)
Sampling and the sampling theorem
Quantization principle
- Representations in the frequency domain
Spectral analysis - computational model
Discrete Fourier Transform (DFT)
- Sound synthesis and processing
Additive, subtractive, frequency modulation synthesis
Filtering and convolution

For the second module, the program is focused on the following topics
- Introduction to Python:
Types, operators, variables, decisions, cycles, functions
- Iterations in Python:
counters, iterable types, iterators, comprehension
- Introductions to object-oriented programming:
classes, encapsulation, inheritance, polymorphism
- Object-oriented programming in Python:
constructors, methods, attributes, class and static methods
- Inheritance in Python:
types of inheritance, name trees
- Poymorphism in Python:
"Duck typing" and types of polymorphism, comparison Python vs. Java
- Real-time sound synthesis and processing in Python:
introduction to pyo, class hierarchy, audio effect programming
- Object-oriented audio programming:
extending pyo classes, constructors, method overriding
Prerequisites for admission
Having passed the exam of Programming is a compulsory requirement for this course. Moreover, having passed the exam of Acoustics is strongly recommended.
Teaching methods
The entire course is taught by lectures.
Teaching Resources
Web site:
http://favanziniias2.ariel.ctu.unimi.it

For the first module:
M. Malcangi: "Informatica Applicata al Suono per la Comunicazione Musicale - Musical Digital Audio: Teoria e pratica", Maggioli Editore

For the part on the Python language:
- 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/

For the part on object-oriented programming:
- 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/

For the part on audio programming:
- Official pyo documentation
http://ajaxsoundstudio.com/pyodoc/

Additional complementary material prepared by the instructor is made available through the web site of the course.
Assessment methods and Criteria
For the first module, the final exam consists of the development of a project, which has to be critically discussed in an oral test. The project can be developed individually or in a small group of students.
The evaluation is given in 30ths and is based on the following aspects: mastering of the course topics, ability to apply the acquired knowledge to solving actual problems, logical and critical thinking.

For the second module, the final exam consists of a test at the computer, which lasts 90 minutes and is composed of two sections: 1) multiple choice questions, 2) programming exercises. The exercises require to realize or complete programs in python with a focus on the development of simple class hierarchies as well as real-time audio processing algorithms.
The evaluation is given in 30ths and is based on the following aspects: mastering of the course topics, ability to apply the acquired knowledge to solving exercises, logical and critical thinking.
Consulting the documentation of python and of the used modules is allowed during the test.
Prima parte
INF/01 - INFORMATICS - University credits: 6
Lessons: 48 hours
Seconda parte
INF/01 - INFORMATICS - University credits: 6
Lessons: 48 hours
Professor: Avanzini Federico
Professor(s)
Reception:
Tuesday 9.30 - 11.30 a.m.
Via Celoria 20 - Settore Didattico - Edificio 3 - Second floor