Computer science applied to sound

A.Y. 2020/2021
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
year
Teaching methods
Lectures will be held on the Zoom platform, can be attended both synchronously based on the official timetable and asynchronously as they will be recorded and uploaded on the course website.

Course syllabus and Teaching Resources
The contents and reference material will not be changed.

Assessment methods and Criteria
Oral tests will be held on the Zoom platform, with no further modifications.
Only for the second module, the test at the computer will be held on the Zoom and Labonline platforms, by subdividing students in turns composed of small groups. The overall structure of the test will remain unchanged.
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 and an oral test.
The test at the computer is composed of multiple choice/open questions, and programming exercises with a focus on the development of simple class hierarchies. Consulting the documentation of python and of the used modules is allowed during the test.
THe oral test can be given only after having passed the test at the computer, and consists of the discussion of a project on real-time audio programming.
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.
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