Session 1: Introduction To The Course: What Is Creative Programming?
Introduction to Digital Audio in C++. In this session we will get started using an IDE, and then download the current version of Maximilian. We’ll be going through some of the examples, and building some really basic music software to get us started. Some of the most important things you will learn in this session include how simple waveforms can be used to create more complex ones, and how signals can be used to make sound, or to control sound, depending on how those signals are scaled.
Session 2: Sound Synthesis And Control
Building on the previous session's introduction, we will be learning more about waveforms and their construction, and looking at additive synthesis. After this we’ll be exploring how we can use simple statements to make an efficient metronome object that can be used to make things happen. At the end of the session, you will have all built synthesizers in C++ and made them play things that sound like music.
Session 3: Real-Time Recursive Filters, LFOs, And Sample Playback
In this session we will learn how to use Maximilian’s built-in filters to create a subtractive synthesizer and an LFO, and get some insight into how these work. We will also learn how to load in a sample and play it back.
Session 4: Building A Drum Machine/Sample Playback Device, Manipulating Samples, And Using Envelopes
During the first half of the lesson we will be working to create a drum machine using sample players and sequencer skills from the previous session. Following this we will be looking at various ways of manipulating sample playback to create interesting effects, and learn how to use basic envelope generators to control parameters. We will also look at an advanced example demonstrating how to create a polyphonic music device.
Session 5: Audio Visual Composition: Contemporary Work By Audiovisual Creatives
In this session we will look at the work of contemporary AV artists and talk about what inspires them, showing examples of their work and discussing what approaches they take to audiovisual composition. We will also briefly introduce openFrameworks, and begin to explore the fundamentals of algorithmic computer graphics design in C++.
Session 6: Using OpenFrameworks With Maximilian
This session will be a basic introduction on how to use openFrameworks in more detail, and how to augment it with Maximilian. We will look at the main openFrameworks methods, and demonstrate how to incorporate your existing audio DSP code and projects into openFrameworks to make interactive music applications that use graphics, mouse and keyboard interaction.
Session 7: Audiovisual Synthesis Using OpenFrameworks
This session will look at how to get basic information from our sound algorithms and use it to map graphical parameters to make basic audiovisual synthesizers. We will explore a range of generative drawing techniques including the geometric systems, non-linear systems and noise. We will also look at controlling generative drawing through audio, and using graphics parameters to control sound.
Session 8: VJ/DJ Techniques And Audiovisual Sampling
In this session we will be using audio signals to control aspects of a video signal using sampled footage and sound files. This means loading a video, understanding how to control a video, and then understanding how to map audio signals into a range that make them useful for video processing.
Session 9: Audio Features And Their Uses: FFT/IFFT/MFCC/Convolution
In this session we’ll be visualizing audio features using Maximilian’s FFT libs in openFrameworks. Here we can do great effects with not much coding, but getting started is a headache, and the FFT is always tough to conceptualize.
Session 10: Video Manipulation And Analysis
In this session we will look at an example that allows you to edit the pixels from a movie or a webcam, to create a background subtraction system for doing basic homegrown computer vision. This project also demonstrates how to load a char buffer into a sound object and play it like a sample. Lots of fun I’m sure you will agree. We will also introduce frag shaders as a mechanism for manipulating images.