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.
Lesson period: First year
(In case of multiple editions, please check the period, as it may vary)
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.
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/
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.