Audio Software Development

About this course

Developing software that processes audio, especially in real-time, presents challenges that are related to advanced subjects in digital signal processing, computer science, software engineering and mathematics. This course presents the principles that are necessary for audio software development within each of these subjects. Even though it is assumed that the student already has some basic understanding of the basics the aforementioned disciplines, the course starts from the fundamentals and takes the shortest route toward developing close to product-level synthesisers and audio effects, in the form of standalone applications (Mac, Windows, Linux), smart devices (iOS, Android) and VST-plugins. The course starts with python but transits to C++ using JUCE, a framework that facilitates rapid product-level development. Aim of this course is to provide the necessary components of digital signal processing and mathematics as well as the computational background in computer science and software engineering to enable students to develop software that processes audio, mainly in real time.

Expected learning outcomes

On completion of this course, students will be able to:
– Understand the basic workflow and fundamental difficulties of real-time audio processing software development.
– Identify and debug common theoretical (e.g. aliasing) and technical (e.g. buffer overflow) issues that arise when developing audio software
applications.
– Develop basic software that implements basic effects and sound visualisations.
– Export the software they develop for computer devices (Mac, Windows, Linux and VST-plugins) and smart devices (iOS and Android).
– Use git to store, distribute and showcase their work.

Indicative Syllabus

    The course starts with fundamental issues on digital signal processing in python, along with an introduction of some python libraries that facilitate and enable real-time audio processing. From the beginning, all code is provided through GitHub and, therefore, the philosophy and basic manipulation of GitHub is discussed. After an introduction to real-time audio processing in Python, object oriented programming is introduced, which leads to an introduction in C++. The JUCE framework is presented and simple software is developed for synthesisers and sound effects.

    Teaching / Learning Methodology

    Recommended Reading

    [1] Géron, A. (2022). Hands-on machine learning with Scikit-Learn, Keras, and TensorFlow. ” O’Reilly Media, Inc.”.
    [2] Foster, D. (2022). Generative deep learning. ” O’Reilly Media, Inc.”.

    Prerequisites

    Start Date

    TBA

    End Date

    TBA

    Apply

    TBA

    Local Course Code

    TBA

    Cycle

    TBA

    Year of study

    TBA

    Language

    English

    Study Load

    Lectures 2 hours per week, Practiacal 2 hours per week,  In total 4 hours per week  7 ECTS

    Mode of delivery

    TBA

    Instructors

    Dr. Maximos Kaliakatsos

    Course coordinator

    Dr. Maximos Kaliakatsos

    E-mail

    TBA