AUDIO PROGRAMMING - 2024/5

Module code: TON3016

Module Overview

The Audio Programming module comprehensively explores C++ programming and the JUCE framework within the context of audio applications. You will gain skill and expertise in fundamental programming concepts before delving into the challenges of audio programming, covering audio file processing and real-time audio and MIDI application design. A key focus of this module is utilising the JUCE framework for building cross-platform audio applications in the form of audio plugins, including graphical user interfaces (GUIs) and efficient handling of real-time audio data. Emphasis is placed on debugging, optimisation, documentation and code analysis practices. The module will equip you with entry-level industry skills essential for audio software development and plugin design, fostering a deep understanding of programming principles and their application in the digital audio industry.

Module provider

Music and Media

Module Leader

CHOUSIDIS Christos (Music & Med)

Number of Credits: 15

ECTS Credits: 7.5

Framework: FHEQ Level 6

Module cap (Maximum number of students): N/A

Overall student workload

Workshop Hours: 44

Independent Learning Hours: 81

Guided Learning: 20

Captured Content: 5

Module Availability

Year long

Prerequisites / Co-requisites

  • TON1023 Audio Signal Analysis
  • TON1024 Computer Systems
  • TON1027 Acoustics and Psychoacoustics
  • TON1029 Audio Electronics 1 

Module content

Indicative content includes:
•    The C++ programming language.
•    Procedural and object-oriented paradigms.
•    Programming techniques, including modular construction, reuse, and testing.
•    Handling audio data and audio files.
•    Using existing audio libraries.
•    Implementing basic DSP algorithms in software.
•    Using the JUCE framework for digital audio plugin development. 

Assessment pattern

Assessment type Unit of assessment Weighting
Coursework Basic Programming Assignment 20
Coursework Intermediate Programming Assignment 30
Coursework Advanced Programming Assignment 50

Alternative Assessment

N/A

Assessment Strategy

The assessment strategy is designed to allow you to demonstrate practical programming skills, especially in processing audio files and data.

Thus, the summative assessment for this module consists of:


  • Coursework – Three coursework assignments:

  • coursework 1 – Command-line-based programming task (addresses learning outcomes 1-2, 5-7);

  • coursework 2 – Audio-file-based programming task (addresses learning outcomes 1- 3, 5-7);

  • coursework 3 – Plugin-based programming task (addresses learning outcomes 1-7).



Formative assessment and feedback:

Formative assessments and feedback will be given during Workshops, based on performance exercises/tasks.

Feedback

Written feedback on the coursework will be given to you. Verbal feedback will be given during the workshops.

Module aims

  • Introduce techniques and processes in designing and programming software.
  • Provide an in-depth background of the C++ programming language.
  • Investigate good practices in coding.
  • Investigate the concept of object-oriented programming.
  • Investigate the audio programming framework and characteristics.
  • Explore audio data processing methods and implement basic audio signal processing algorithms in C++.
  • Investigate audio file formats and file processing methods.
  • Explore the JUCE framework for developing real-time audio applications, emphasising its role in simplifying audio application development, GUI design, and cross-platform compatibility.
  • Develop audio and MIDI plugins, such as reverbs, delays, EQs, and arpeggiators.
  • Develop debugging and optimisation skills in real-time audio applications design.
  • Promote collaborative coding practices, encouraging students to collaborate on projects to simulate industry-like teamwork.

Learning outcomes

Attributes Developed
001 Specify a program design using pseudo-code and flow charts. CT
002 Code, test, and debug a software audio processor using C++. CT
003 Realise a time-domain DSP algorithm using C++. KCPT
004 Create programs using both procedural and object-oriented paradigms. KCPT
005 Programming. PT
006 Use of the command line. PT
007 Problem-solving. PT

Attributes Developed

C - Cognitive/analytical

K - Subject knowledge

T - Transferable skills

P - Professional/Practical skills

Methods of Teaching / Learning

The learning and teaching strategy is designed to: develop your programming skills using the C and C++ programming languages, particularly with respect to processing audio files and audio data. These skills are developed via workshops, which are designed to develop: practical skills (e.g. using an IDE and the command line), your knowledge of C and C++, your problem solving skills (in order to debug your programs), your approach to program design and construction, your knowledge of time-domain DSP, and your knowledge of procedural and object-oriented programming paradigms.

 

The learning and teaching methods include:


  • regular workshops;

  • coursework assignments and feedback.




 

Indicated Lecture Hours (which may also include seminars, tutorials, workshops and other contact time) are approximate and may include in-class tests where one or more of these are an assessment on the module. In-class tests are scheduled/organised separately to taught content and will be published on to student personal timetables, where they apply to taken modules, as soon as they are finalised by central administration. This will usually be after the initial publication of the teaching timetable for the relevant semester.

Reading list

https://readinglists.surrey.ac.uk
Upon accessing the reading list, please search for the module using the module code: TON3016

Other information

Employability:
This module offers a robust foundation for students seeking employment in the dynamic field of audio programming. By gaining essential skills in C++ programming with a focus on audio applications and by investigating the JUCE framework, you will be well-equipped to start a digital audio developer career, designing plugins, developing audio applications, and working in the emerging domain of AI for audio. As part of the coursework assignments, you will work on practical projects, such as audio file processing programs, virtual synthesizers, audio effects plugins, and MIDI applications that will deepen your technical expertise and help you develop a portfolio showcasing your capabilities. The module's hands-on approach ensures that you will be equipped with the proficiency needed to meet the demands of the evolving audio programming industry.

Digital Capabilities:
At the core of this module lies the cultivation of solid digital skills. Through hands-on experience in C++ programming and the JUCE framework, you will develop essential skills for digital problem-solving, coding, and application development. This proficiency in programming will help you confidently approach every area related to digital audio and give you an innovative view of all audio-related challenges. The module's emphasis on real-world applications ensures that you will be able to understand theoretical concepts and gain practical digital skills that are highly transferable across various disciplines within the broader audio industry.

Sustainability:
A significant aspect of this module is its contribution to sustainability through digital design. By promoting the creation of audio applications in the form of digital programs or plugins, the module contributes to reducing the environmental impact associated with traditional hardware. This shift towards digital solutions aligns with contemporary industry trends and signifies a sustainable approach by reducing the required resources for physical production. The module thus implants in students an awareness of the environmental implications of their work, fostering a commitment to sustainable practices.

Resourcefulness and Resilience:
The Audio Programming module goes beyond technical expertise, supporting students to develop personal skills. You learn to deal with the complexities inherent in engineering problems through challenging projects and real-world applications. The requirement to troubleshoot, debug, and optimise code cultivates resourcefulness, fostering an ability to find solutions in dynamic and fast-changing environments. Resilience is developed through the iterative process of refining and optimisation and the determination to overcome challenges. These skills enhance your ability to succeed and contribute to your broader professional development, preparing you to face challenges in any technological domain confidently.
 

Programmes this module appears in

Programme Semester Classification Qualifying conditions
Music and Sound Recording (Tonmeister) BSc (Hons)(YEAR LONG) Year-long Optional A weighted aggregate mark of 40% is required to pass the module
Music and Sound Recording (Tonmeister) BMus (Hons)(YEAR LONG) Year-long Optional A weighted aggregate mark of 40% is required to pass the module

Please note that the information detailed within this record is accurate at the time of publishing and may be subject to change. This record contains information for the most up to date version of the programme / module for the 2024/5 academic year.