Enrollment Closed

You can also start immediately after joining!
Join Now

Would you like to enroll?

Enrollment for this course has closed. But you can enroll in a future offering (please select)

Enrollment has closed

Go at your own pace
10 Sessions / 8 hours of work per session
Included w/ premium membership ($20/month)
Skill Level
Video Transcripts
English, Spanish; Castilian, Chinese, Portuguese
Interactive Artwork, Interactive Sound, Sound Generation, Computer Graphics, Audiovisual Interaction

Not available for purchase in India

Starts Jun 1, 2016

Creative Programming with Javascript

Coming Soon

Would you like to enroll?

Enrollment for this course has closed. But you can enroll in a future offering (please select)

Enrollment has closed

Go at your own pace
10 Sessions / 8 hours of work per session
Included w/ premium membership ($20/month)
Skill Level
Video Transcripts
English, Spanish; Castilian, Chinese, Portuguese
Interactive Artwork, Interactive Sound, Sound Generation, Computer Graphics, Audiovisual Interaction

Not available for purchase in India

Course Description

Creative Programming with Javascript aims to enhance student skills and experience in the development of software for the creation and manipulation of sounds and images, both in real and non-real time. The course explores the intersection and similarities between sound and image signal processing through the exploration of combined audiovisual approaches. As such it is suitable for those with a strong interest in creative technologies from either an engineering or creative arts background.

This course extends the principles of creative engineering for use in arts, games, and more general interaction scenarios so that students can develop their own projects through the use of computational approaches to audiovisual processing. The lessons will be taught using Javascript. It is recommended that students have some experience with using Processing and some background in digital audio and/or digital image manipulation before taking this course.

Materials on how to use Javascript will be made available, and we will be using bespoke tools and libraries to make this a lot easier. At first we will use ready made code to apply creative techniques. Following this, you’ll be expected to develop your own code based on what you’ve learned. Throughout this process, you should pick up some great skills.

We will spend the first few sessions exploring Digital Audio Signal Processing. This will cover synthesis, sequencing, filtering, sample loading and playback, panning and rudimentary analysis. Following this we’ll be looking at audiovisual interaction using video and 3D graphics.


This course is in adaptive mode and starts Jun 1, 2016. Learn more about adaptive courses here.

Session 1: Introduction to the course: What is Creative Programming? (July 24, 2024)
Introduction to Digital Audio in Javascript. In this session we will get started using the CodeCircle 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.
7 lessons
1. Course Introduction
2. What is Creative Programming? - Part A
3. What is Creative Programming - Part B (Premium Exclusive)
4. Getting Started
5. Maximilian
6. Oscillation
7. Adding Sounds Together (Premium Exclusive)
Session 2: Sound Synthesis and Control (July 31, 2024)
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 Javascript and made them play things that sound like music.
6 lessons
1. Generating Oscillations
2. Amplitude Modulation
3. Frequency Modulation
4. Keeping Time (Premium Exclusive)
5. Basic Sequencing
6. Assignment (Premium Exclusive)
Session 3: Real-time recursive filters, LFOs, and Sample playback (August 7, 2024)
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.
6 lessons
1. Subtractive and Wavetable Synthesis
2. Filters in Maximilian
3. Subtractive Synthesis
4. Subtractive Synthesis II (Premium Exclusive)
5. Loading Samples (Premium Exclusive)
6. Assignments
Session 4: Building a Drum Machine/Sample Playback Device, Manipulating Samples, and Using Envelopes (August 14, 2024)
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.
5 lessons
1. Playing Samples
2. Manipulating Samples
3. Drum Machine
4. Envelope Generators
5. Envelope Generators II (Premium Exclusive)
Session 5: Audio Visual Composition: Contemporary Work by Audiovisual Creatives (August 21, 2024)
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 begin to explore the fundamentals of algorithmic computer graphics design in Javascript.
6 lessons
1. Audiovisual Art
2. Audiovisual Art II
3. Audiovisual Art III (Premium Exclusive)
4. Audiovisual Art Criticism (Premium Exclusive)
5. Recent Examples
6. Audiovisual Artists
Session 6: Using The Javascript Canvas With Maximilian (August 28, 2024)
This session will be a basic introduction on how to use the Javascript canvas in more detail, and how to augment it with Maximilian. We will look at drawing methods, and demonstrate how to integrate your existing audio DSP code and projects with the Javascript canvas to make interactive music applications that use graphics, mouse and keyboard interaction.
7 lessons
1. Working with Graphics
2. JS
3. Drawing
4. Drawing Continued (Premium Exclusive)
5. Keyboard and Mouse Interaction
6. Keyboard and Mouse Interaction Continued (Premium Exclusive)
7. Interactive Sound Assignment
Session 7: Audiovisual Synthesis Using Javascript (September 4, 2024)
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.
7 lessons
1. Visual Synthesis
2. Visual Synthesis Continued (Premium Exclusive)
3. Visual Synthesis Continued
4. Visual Synthesis II
5. Using Amplitude
6. Using Amplitude Continued (Premium Exclusive)
7. Assignment
Session 8: Memo Akten Guest lecture (September 11, 2024)
Memo will take you through a bunch of simple systems for the creation of audiovisual art.
9 lessons
1. Visual Synthesis (Guest Lecture: Memo Akten)
2. Basic Sketch (Guest Lecture: Memo Akten) (Premium Exclusive)
3. Particle Class (Guest Lecture: Memo Akten)
4. Array Dynamics (Guest Lecture: Memo Akten)
5. Particle Behaviours (Guest Lecture: Memo Akten)
6. Adding Tails (Guest Lecture: Memo Akten)
7. Adding Tails Continued (Guest Lecture: Memo Akten)
8. Adding Sound (Guest Lecture: Memo Akten) (Premium Exclusive)
9. Session Summary (Guest Lecture: Memo Akten)
Session 9: Pixel Pushing – 2D and 3D systems using algorithmic and generative graphics (September 18, 2024)
In this session we will look at a range of approaches for creating images using pure pixel pushing. We’ll make classic fractals, Chladni patterns, and look at how to create our own DIY 3D environments without any openGL, including an introduction to generative 3D geometry and superformulae.
8 lessons
1. Pixel Pushing
2. The Mandelbrot Set
3. The Mandelbrot Set Continued (Premium Exclusive)
4. Generating Pixels
5. Using a Complex 3D Scene
6. Using a Complex 3D Scene Continued (Premium Exclusive)
7. Complex 3D Scene Using Geometry
8. Major Assignment
Session 10: Audio Features And Their Uses (September 25, 2024)
In this session we’ll be visualizing audio features using various forms of analysis. Here we can do great effects with not much coding, but getting started is a headache, and we can make this part easier. We will also introduce frag shaders as a mechanism for manipulating images.
5 lessons
1. Extracting Features
2. Using the FFT
3. Using the FFT Continued (Premium Exclusive)
4. Fragment Shaders
5. Goodbye
Show off your Certificate of Accomplishment

Verify Your Achievements
Whenever you complete a course as a premium member, you can earn a verified Certificate of Accomplishment. These certificates are proof that you completed an online course on our platform.

Easily Shareable
Using its unique link, you can share your certificate with everyone from future employers and schools, to friends, family, and colleagues. It's the perfect tool to help you land that new job or promotion, apply to college, or simply share your achievements with the world.

Learning Outcomes

Below you will find an overview of the Learning Outcomes you will achieve as you complete this course.

Instructors And Guests
What You Need to Take This Course
  • Equipment: Mac/Windows computer with installation privileges.
  • Software: Chrome, Edge, or Safari browser
Additional Information

Please note: Taking part in a Kadenze course as a Premium Member, does not affirm that the student has been enrolled or accepted for enrollment by Goldsmiths University of London. 

Peer Assessment Code of Conduct: Part of what makes Kadenze a great place to learn is our community of students. While you are completing your Peer Assessments, we ask that you help us maintain the quality of our community. Please:

  • Be Polite. Show your fellow students courtesy. No one wants to feel attacked - ever. For this reason, insults, condescension, or abuse will not be tolerated.

  • Show Respect. Kadenze is a global community. Our students are from many different cultures and backgrounds. Please be patient, kind, and open-minded when discussing topics such as race, religion, gender, sexual orientation, or other potentially controversial subjects.

  • Post Appropriate Content. We believe that expression is a human right and we would never censor our students. With that in mind, please be sensitive of what you post in a Peer Assessment. Only post content where and when it is appropriate to do so.

Please understand that posts which violate this Code of Conduct harm our community and may be deleted or made invisible to other students by course moderators. Students who repeatedly break these rules may be removed from the course and/or may lose access to Kadenze.

Students with Disabilities: Students who have documented disabilities and who want to request accommodations should refer to the student help article via the Kadenze support center.  Kadenze is committed to making sure that our site is accessible to everyone. Configure your accessibility settings in your Kadenze Account Settings.