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).
Session 1: Basics: Sound, Waves, And ChucK Programming
Let's begin with the basics of ChucK and computer science, including variables, types, conditional statements, and looping structures.
Session 2: Libraries And Arrays
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.
Session 3: Sound File Manipulation
This session we introduce how to use sound files in ChucK and how you can use them to create soundscapes and a techno song.
Session 4: Functions
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.
Session 5: Unit Generators And Physical Models
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.
Session 6: Multi-Threading And Concurrency
This session our topic will be multi-threading, or how you can make your program "juggle" multiple things at the same time.
Session 7: Objects And Classes
Our focus this session will be object-oriented programming and how you can create your own "objects" to use in your code.
Session 8: Live Control: Keyboard, Mouse, MIDI & OSC
Learn how to bring your programming skills into a Live Performance using HID, MIDI and OSC.