Open For Enrollment

Starts in 4 days

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
Portuguese, Chinese, Spanish; Castilian, English
Chuck, Digital Arts, Computer Programming, Sound Design, Coding Techniques
Open For Enrollment

Introduction to Programming for Musicians and Digital Artists

This course is also part of the program:

Would you like to enroll?

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

Enrollment has closed

Enrollment for this course is currently closed, but the next offering will be available shortly. Check back soon!

Go at your own pace
8 Sessions / 6 hours of work per session
Included w/ premium membership ($20/month)
Skill Level
Video Transcripts
Portuguese, Chinese, Spanish; Castilian, English
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 (June 26, 2018)
Let's begin with the basics of ChucK and computer science, including variables, types, conditional statements, and looping structures.
10 lessons
1. Course Introduction
2. Chuck History and Introduction
3. Download and Install
4. Hello Sine
5. Hello Sine Score
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: Libraries and Arrays (July 3, 2018)
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
5. Arrays
6. Example: Make Melody
Session 3: Sound File Manipulation (July 10, 2018)
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
6. Reverse a Sample
7. Sample Management
8. Stereo Playback
9. Modulo
10. Make a Sequencer
Session 4: Functions (July 17, 2018)
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
7. Functions Through Music III
8. Functions to make form
9. Recursion
10. Functions for Chords
Session 5: Unit Generators and Physical Models (July 24, 2018)
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
8. Audio Effects
9. Physical Models - Strings
10. Physical Models - Wind Instruments
11. Modal Bar
12. Shakers
13. Example: Raga Jam
Session 6: Multi-Threading and Concurrency (July 31, 2018)
This session our topic will be multi-threading, or how you can make your 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
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
10. Jazz Band: Score - Part 5
11. Jazz Band: Initialize - Part 6
Session 7: Objects and Classes (August 7, 2018)
Our focus this session will be object-oriented programming and how you can create your own "objects" to use in your 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
11. DrumCircle Example: Composition Architecture
12. Inheritance [OPTIONAL]
13. The Smart Mandolin Example
Session 8: Live Control: Keyboard, Mouse, MIDI & OSC (August 14, 2018)
Learn how to bring your programming skills into a Live Performance using HID, MIDI and OSC.
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
10. MIDI Controllers in ChucK: Drum Pad
11. MIDI Out: ChucK and Robots
12. Networking with OSC
13. Networking with OSC II
14. Conclusion
Learning Outcomes

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

Instructors & 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.