• Stars
    star
    814
  • Rank 56,027 (Top 2 %)
  • Language
    C++
  • License
    GNU General Publi...
  • Created over 10 years ago
  • Updated about 1 month ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

ChucK Music Programming Language

ChucK macOS - Build and Unit Tests Linux - Build and Unit Tests

Strongly-timed Music Programming Language

ChucK is a programming language for real-time sound synthesis and music creation. It is open-source and freely available on macOS, Windows, and Linux. ChucK presents a unique time-based, concurrent programming model that is precise and expressive (we call this strongly-timed), with dynamic control rates and the ability to add and modify code on-the-fly. In addition, ChucK supports MIDI, OpenSoundControl, HID devices, and multi-channel audio. It's fun and easy to learn, and offers composers, researchers, and performers a powerful programming tool for building and experimenting with complex audio synthesis/analysis programs, and real-time interactive music.

Welcome to ChucK!

Installing ChucK

To download and install ChucK, visit the official ChucK release page.

For more information, including documentation, examples, research publications, and community resources, vist the ChucK homepage or its Princeton mirror.

Homebrew

brew install chuck

Building ChucK

To build the latest ChucK from source, clone the chuck repo from github:

git clone https://github.com/ccrma/chuck.git

macOS

navigate to the chuck/src directory, and run make:

cd chuck/src
make mac

OR to build a universal binary (intel + apple sillicon):

make mac-ub

This should build a chuck executable in chuck/src.

Linux

Dependencies: gcc, g++, make, bison, flex, libsndfile, ALSA (for linux-alsa builds), PulseAudio (for linux-pulse builds), JACK (for linux-jack builds)

To set up a build environment for chuck on Debian or Ubuntu:

sudo apt install build-essential bison flex libsndfile1-dev \
  libasound2-dev libpulse-dev libjack-jackd2-dev

For other Linux distributions, the setup should be similar although the package install tools and package names may be slightly different. (NOTE: setups that do not need JACK or PulseAudio can omit either or both of these packages. ALSA is needed for MIDI support on Linux.)

To build chuck (with all suppported drivers: ALSA, PulseAudio, JACK), navigate to the chuck/src directory and run make:

cd chuck/src
make linux-all

FYI make linux-all is equivalent in outcome to combining individual drivers:

make linux-alsa linux-pulse linux-jack

To build chuck for a subset of ALSA, PulseAudio, or JACK, run make with the desired driver(s). For example, to build for ALSA and PulseAudio only:

make linux-alsa linux-pulse

Or, to build for ALSA only:

make linux-alsa

This build process should build a chuck executable in chuck/src.

Windows

To build chuck using Visual Studio (2019 or later recommended), navigate to chuck\src\visual-studio, open chuck.sln, and build.

ChucK History

ChucK was created in the early 2000s at Princeton University by Ge Wang and Perry R. Cook, while Ge was a Ph.D. student advised by Perry in the Computer Science Department. The first version of ChucK was released under a GPL license in 2003. Many researchers, teachers, and artists have contributed to ChucK's evolution over the years. Spencer Salazar created miniAudicle, a GUI-based integrated development environment for ChucK in 2004 (this IDE, in addition to the command line version of ChucK, remains largely how ChucK is distributed and used today). The Princeton Laptop Orchestra (PLOrk), founded by Dan Trueman and Perry Cook in 2005, began using ChucK for teaching as well as instrument and sound design. In 2006, Rebecca Fiebrink and Ge Wang created ChucK's audio analysis framework, expressed through unit analyzers--the analysis counterpart to unit generators. Ge join the faculty at Stanford University's CCRMA in 2007, and ChucK research and development became distributed, with developers at Princeton, Stanford, and elsewhere. The Stanford Laptop Orchestra (SLOrk) was founded in 2008 at CCRMA, where ChucK continued to be a tool for instrument design and teaching. In that same year, the mobile music startup Smule was co-founded, which used ChucK on the iPhone (codenamed "ChiP") as a real-time audio engine for its early apps: Ocarina, Sonic Lighter, Zephyr, and Leaf Trombone: World Stage. Meanwhile, ChucK continued to find its way into computer music curricula, including at Stanford, Princeton, CalArts. In 2015, the book Programming for Musicians and Digital Artists: Creating music with ChucK was published, authored by Ajay Kapur, Perry Cook, Spencer Salazar, and Ge Wang. Around the same time, Kadenze introduced the online course Introduction to Real-Time Audio Programming in ChucK. Romain Michon and Ge Wang integrated FAUST and ChucK to create FaucK. In 2017, Jack Atherton created Chunity, which enables one to program ChucK inside the Unity game development framework. In 2018, Ge write about ChucK in Artful Design: Technology in Search of the Sublime, a photocomic book about the importance of cultural awareness in the shaping of technology. ChucK now runs natively in web browsers (WebChucK) and can be programmed directly in the WebChucK IDE.

ChucK has been extensively documented in published articles and books (see list). For an overview, check out:

β€œChucK: A Strongly-Timed Music Programming Languageβ€œ comic book excerpt from Artful Design: Techonlogy in Search of the Sublime

Wang, G., P. R., Cook, and S. Salazar. 2015. "ChucK: A Strongly Timed Computer Music Language" Computer Music Journal 39:4. doi:10.1162/COMJ_a_00324

ChucK Media

Non-source code documents (papers, logos, soundbites, comics) have been migrated to the chuck-media repository.

ChucK Community

Join us! ChucK Community Discord | ChucK-users Mailing list

Happy ChucKing!