Timetable information in the Course Catalogue may be subject to change.

University Homepage
DRPS Homepage
DRPS Search
DRPS Contact
DRPS : Course Catalogue : Edinburgh College of Art : Music

Postgraduate Course: Audio Programming (MUSI11066)

Course Outline
SchoolEdinburgh College of Art CollegeCollege of Arts, Humanities and Social Sciences
Credit level (Normal year taken)SCQF Level 11 (Postgraduate) AvailabilityAvailable to all students
SCQF Credits20 ECTS Credits10
SummaryThis course provides an introduction to programming creative audio applications. The focus is on developing competencies in professional level tools and practices. You will learn to code in C++ within the JUCE environment, a helpful framework for producing standalone audio applications for different devices and operating systems, and for producing VST plugins, audio units and related technologies.
Course description In this course you will explore professional-level audio software development as a creative process. A founding premise for the course is that creating musical software is a creative musical act. There is a strong technical core to the course as you will be learning to program in C++. This necessitates a focus on some of the fundamental aspects of computer programming. You will then use the JUCE environment, an open source framework for creating audio applications in C++, to bring your creative ideas into practice.

The course begins with the basics of coding in C++: creating variables, using arrays, and compiling code. You will progress to making simple sounds in the JUCE framework, looking at the DSP loop for generating sounds sample-by-sample. You will then move on to using the Maximilian library to bring standard audio building blocks such as oscillators, filters, envelopes and sample players, into play. This will allow you to build up more intricate sonic applications. Finally, you will design and build basic interface elements, creating sliders, dials and other controls to provide an interface to your application.

Despite the clear and deliberate technical emphasis throughout the course, a central aim is to demystify the act of programming, and to bring sound practitioners behind the curtain, so to speak, showing what is behind the technologies that enable real-time music creation. C++ and JUCE are industry standards, and provide an important technical skill set for artists, composers and acousticians to explore.
Entry Requirements (not applicable to Visiting Students)
Pre-requisites Co-requisites
Prohibited Combinations Other requirements None
Information for Visiting Students
High Demand Course? Yes
Course Delivery Information
Academic year 2023/24, Available to all students (SV1) Quota:  60
Course Start Semester 2
Timetable Timetable
Learning and Teaching activities (Further Info) Total Hours: 200 ( Lecture Hours 22, Seminar/Tutorial Hours 22, Programme Level Learning and Teaching Hours 4, Directed Learning and Independent Learning Hours 152 )
Assessment (Further Info) Written Exam 0 %, Coursework 100 %, Practical Exam 0 %
Feedback Regular unassessed programming challenges will be assigned for which verbal feedback will be given to the class cohort. This will go over the key issues and difficult elements from the challenges.

Example solutions for the more substantial formative assessment 1 will be provided for reference.

You will receive written feedback on all summative Components of Assessment.
No Exam Information
Learning Outcomes
On completion of this course, the student will be able to:
  1. Write well formulated C++ code according to industry standard practice
  2. Construct a range of digital signal processing algorithms in C++/JUCE, appropriate to the task of real-time audio processing
  3. Design and implement an audio application using C++/JUCE that explores a specific objective of your own construction
  4. Identify, assess, and resolve problems throughout the design and implementation phases of audio application development
  5. Conduct a critical evaluation of your audio application in the context of wider commercial and artistic practice
Reading List
- Boulanger, R. and Lazzarini, V. (2011) The Audio Programming Book, MIT Press
- Pirkle, W. (2013),Designing Audio Effect Plug-Ins in C++: With Digital Audio Signal Processing Theory, Focal Press

General online C++ learning resources:

More specialised C++ Audio DSP learning resources
* The JUCE Audio Programmer tutorial series:
* JUCE tutorials:
Additional Information
Graduate Attributes and Skills The University has identified several groups of abilities that should be developed as part of the University of Edinburgh training experience, and to enhance your employability as a graduate. These abilities take your skill-base beyond academic knowledge. They relate to this course in a number of specific ways, as outlined below.

Enquiry and lifelong learning
All components of the course provide this to some degree but your lectures, in particular, provide an important framework upon which you can build these attributes. This University considers itself to be a research-led institution and you will be exposed to cutting edge information. In this course, you will be shown how to develop your own programming skills, and more importantly, the ability to develop your skills by yourself during the course and beyond the course, so that you can continue to explore and develop creative avenues through coding practices.

Aspiration and personal development
The course should provide you with the tools to begin to explore your own creative projects through programming. Although we can only go so far with this course, the course can be a window into a new world, that you can explore. The foundations of professional level programming can open up the possibility of a wide range of avenues and lead to many more ambitious projects.

Research and enquiry
The practical skills you learn on this course are enhanced by encouraging further reading of books, online resources, research papers, and tutorials. The practical project will allow you to research and explore your chosen topic for yourself, and to find your way among the many resources available on the topic.

Personal and intellectual autonomy
By reading and engaging with materials for the various submissions, you will learn to develop your own coding skills, and the ability to solve your own problems, and to seek help when necessary from a variety of sources.

Personal effectiveness
The ability to organise and summarise your thoughts and material in a flexible and accessible way is a core feature required for personal effectiveness. Planning, time management and reflection are central to this. By providing you with a timetable where key submission dates are highlighted, we encourage you to develop your effectiveness throughout this course. These same skills extend to other courses and also to your overall ability to maximise your achievement while studying at this University.

It is important that you develop skills to interact constructively with others and convey knowledgeable and balanced views. In the practical classes you will be encouraged to share ideas and insights with other students, to seek help and provide help where necessary. You will also be encouraged to engage with online forums: asking for help in a clear, legible and friendly manner, and posting help yourself if possible.
Course organiserDr Tom Mudd
Tel: (0131 6)50 2808
Course secretaryMiss Laura Duff
Help & Information
Search DPTs and Courses
Degree Programmes
Browse DPTs
Humanities and Social Science
Science and Engineering
Medicine and Veterinary Medicine
Other Information
Combined Course Timetable
Important Information