Open for Enrollment

You can also start immediately after joining!
Join Now
Go at your own pace
8 Sessions / 6 hours of work per session
Included w/ premium membership ($20/month)
Skill Level
Video Transcripts
English, Spanish; Castilian, Chinese, Portuguese
Chuck, Digital Arts, Computer Programming, Sound Design, Coding Techniques
Open for Enrollment

Introduction to Real-Time Audio Programming in ChucK

Open for Enrollment
You can also start immediately after joining!

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
8 Sessions / 6 hours of work per session
Included w/ premium membership ($20/month)
Skill Level
Video Transcripts
English, Spanish; Castilian, Chinese, Portuguese
Chuck, Digital Arts, Computer Programming, Sound Design, Coding Techniques
Course Description

The course, lecture, and examples build on each other to teach the fundamentals of programming in general (logic, loops, functions, objects, classes) and also deals with advanced topics including multi-threading, events and signals. Throughout the course, students create meaningful and rewarding expressive digital “instruments” that make sound and music in direct response to program logic. The ChucK language provides precise high-level control over time, audio computation, and user interface elements (track pad, joysticks, etc.). ChucK is used (unknowingly in most cases, via SMule Apps) by millions of users throughout the world, and is the backbone of dozens of academic programs and laptop orchestras. Learning to program using ChucK, through the musical examples provided in this course, will prepare students to program in C++, Java, and other languages. There will be special guest lectures from creators of the ChucK language, Dr. Ge Wang (Stanford University) and Dr. Perry R. Cook (Princeton University).


This course is in adaptive mode and is open for enrollment. Learn more about adaptive courses here.

Session 1: Basics: Sound, Waves, and ChucK Programming (January 25, 2022)
Let's begin with the basics of ChucK and computer science, including variables, types, conditional statements, and looping structures.
10 lessons
1. Course Introduction (Premium Exclusive)
2. Chuck History and Introduction
3. Download and Install
4. Hello Sine
5. Hello Sine Score (Premium Exclusive)
6. Data Types and Variables
7. Time in Chuck
8. Control Structures: If and Else
9. Control Structures: For and While Loops
10. Example: Making Sound with Oscillators
Session 2: ChucK Libraries and Intro to Arrays (February 1, 2022)
This session introduces libraries built in ChucK, and shows how random numbers and different mathematical equations can be used to make more expressive compositions. We also introduce arrays and show how to use them to make melodies.
6 lessons
1. Introduction to Session 2
2. Standard Library and Unit Conversion
3. Random Numbers
4. Math Library, Panning & Multi-channel Audio (Premium Exclusive)
5. Arrays
6. Example: Make Melody (Premium Exclusive)
Session 3: Sound File Manipulation in ChucK (February 8, 2022)
This session we introduce how to use sound files in ChucK and how you can use them to create soundscapes and a techno song.
10 lessons
1. Samples and Sound File Manipulation
2. Sound File Setup
3. Samples and Sound Files
4. SndBuf
5. SndBuf looping (Premium Exclusive)
6. Reverse a Sample (Premium Exclusive)
7. Sample Management
8. Stereo Playback
9. Modulo
10. Make a Sequencer (Premium Exclusive)
Session 4: Functions in ChucK (February 15, 2022)
This session will introduce the concept of functions and how they can be used in modularizing and organizing your code, and help you create more expressive compositions.
10 lessons
1. Introduction to Session 4
2. Introduction to Functions
3. Basic Function Examples
4. Local vs. Global
5. Functions Through Music I
6. Functions Through Music II (Premium Exclusive)
7. Functions Through Music III (Premium Exclusive)
8. Functions to make form
9. Recursion
10. Functions for Chords (Premium Exclusive)
Session 5: Unit Generators and Physical Models (February 22, 2022)
This session we are going to learn how to make audio effects! Through ChucK we will be using built-in synthesis techniques and other concepts to strongly enhance the sounds you use to make your.
13 lessons
1. Introduction to Session 5
2. Introduction to Unit Generators
3. Oscillator Unit Generators
4. Envelope Unit Generators
5. Frequency Modulation
6. Introduction to Physical Models
7. Filters (Premium Exclusive)
8. Audio Effects (Premium Exclusive)
9. Physical Models - Strings
10. Physical Models - Wind Instruments (Premium Exclusive)
11. Modal Bar
12. Shakers
13. Example: Raga Jam
Session 6: Multi-Threading and Concurrency (March 1, 2022)
This session our topic will be multi-threading, or how you can make your ChucK program "juggle" multiple things at the same time.
11 lessons
1. Introduction to Concurrency
2. Concurrency in Chuck - Part I
3. Concurrency in Chuck - Part II (Premium Exclusive)
4. Machine Commands
5. Composition Architecture - Example: Creating a Jazz Band
6. Jazz Band: Bass - Part 1
7. Jazz Band: Drums - Part 2
8. Jazz Band: Piano - Part 3
9. Jazz Band: Flute - Part 4 (Premium Exclusive)
10. Jazz Band: Score - Part 5 (Premium Exclusive)
11. Jazz Band: Initialize - Part 6
Session 7: Classes and Object-Oriented Programming (March 8, 2022)
Our focus this session will be object-oriented programming and how you can create your own "objects" to use in your ChucK code.
13 lessons
1. Introduction to Object Oriented Programming
2. Objects
3. Classes
4. Simple Class
5. Overloading
6. Private vs. Public
7. DrumCircle Example: BPM Class
8. DrumCircle Example: Kick
9. Static Member Variables
10. DrumCircle Example: Cowbell (Premium Exclusive)
11. DrumCircle Example: Composition Architecture (Premium Exclusive)
12. Advanced: Inheritance (Premium Exclusive)
13. The Smart Mandolin Example (Premium Exclusive)
Session 8: Live Control: Keyboard, Mouse, MIDI & OSC (March 15, 2022)
Learn how to bring your programming skills into a Live Performance using external input such as HID, MIDI and OSC to control your ChucK programs.
14 lessons
1. Introduction to Session 8
2. Introduction to Events
3. Keyboard Input
4. Mouse Input
5. Event Signal
6. Event Broadcast
7. Extending Events with Sound
8. Introduction to MIDI
9. MIDI Controllers in ChucK: Piano (Premium Exclusive)
10. MIDI Controllers in ChucK: Drum Pad (Premium Exclusive)
11. MIDI Out: ChucK and Robots
12. Networking with OSC
13. Networking with OSC II (Premium Exclusive)
14. Conclusion
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
  • Materials: The ChucK Book
  • Equipment: Computer with installation privileges
  • Software: Download the ChucK software for MacOS X, Windows, and Linux here. It is recommended you have ChucK open and running while watching the lectures so that you can try out some of the concepts as you move through the videos.

Knowing how to navigate and utilize your computer beyond surfing the web will be a vital asset to this course. If you haven’t already, start looking into the command line of your operating system and get a feel for how it works. You will find yourself reaching a point with your projects that miniAudicle cannot handle everything you want it to do.

Not everyone will come from a musical background or have the ability to compose but this class is not just about music. It uses music as a creative and stimulating environment for programming. In the end, you will be learning computer science as well as how to use programming skills for creative projects.

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 California Institute of the Arts.

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.

Plagiarism: Plagiarism is the use of ideas and/or quotations (from the Internet, books, films, television, newspapers, articles, the work of other students, works of art, media, etc.) without proper credit to the author/artist. While the argument in a paper can be enhanced by research, students are cautioned to delineate clearly their own original ideas from source material. Students should introduce source material (either quoted or paraphrased); note when the source material ends; and provide citations for source materials using standard documentation formats. According to CalArts policy, students who misrepresent source material as their own original work and fail to credit it have committed plagiarism and are subject to disciplinary action.

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.