
ChucK: Strongly-Timed Music Programming Language - FrankyHollywood
http://chuck.cs.princeton.edu/
======
retroafroman
For some reason, Coursera doesn't seem to have the page up any more, but there
was a great MOOC about programming for musicians[0] that featured ChucK as the
main language. They even featured the creator of ChucK in some of the videos.
He's also the creator of some of the popular Smule Apps for iPhone, like the
autotuning app "I am T-Pain"[1], which all feature ChucK under the hood.

[0] [https://www.mooc-list.com/course/introduction-programming-
mu...](https://www.mooc-list.com/course/introduction-programming-musicians-
and-digital-artists-coursera?static=true) [1]
[https://www.youtube.com/watch?v=5HaIMA9YkSg](https://www.youtube.com/watch?v=5HaIMA9YkSg)

~~~
ingenieros
That same course is now being offered on Kadenze:
[https://www.kadenze.com/courses/introduction-to-
programming-...](https://www.kadenze.com/courses/introduction-to-programming-
for-musicians-and-digital-artists/info)

~~~
885895
Would this also work as a "music for programmers" course?

------
zebproj
I'm currently taking a class taught by the creator of Chuck, Ge Wang. Great
guy. He always tells people that Chuck "crashes equally on every platform".

I find ChucK to be a pretty easy language to get into. It lends itself really
well for algorithmic composition and live coding. I have quite a bit of fun
with it!

A big downside to ChucK is that it has a very limited set of unit-generators
for sound, and it's very hard to do any sophisticated synthesis and sound
design. That being said, it's pretty easy to build third party chuck plugins
(called "chugins"). I really like working with Csound, so I built a Csound
chugin:
[https://github.com/PaulBatchelor/ChuckSound](https://github.com/PaulBatchelor/ChuckSound)

------
georgeglue1
For people unfamiliar: ChucK is probably one of the easiest ways to get
started programming synths, and still one of the best ways to play live,
layered audio. It comes with some nice tools (miniaudicle) to mix/arrange live
music.

Supercollider (or less programming-focused tools) are more stable and can even
more configurable, though there's a bit more of a curve. They're also not as
explicitly focused on live performers.

~~~
catshirt
> "ChucK is probably one of the easiest ways to get started programming
> synths"

i have to disagree. if you compare to SC, maybe. but because time is a first
class citizen of ChucK, it actually complicates the process of programming
sound. in that sense, i think something like Overtone is actually much
simpler.

there are higher level methods for programming synths... the highest level, of
course, being an actual (hardware or software) synth with an interface. which
is certainly the easiest way to start programming sounds.

~~~
Angrycrow
Do you have any experience with cSound ? ChucK is kinda hard to make a wrapper
for.. So you have to run it parallel with other controller or audio
workstations... At least as far as I've learned. But I've only been into ChucK
for a few months.

~~~
catshirt
no I don't. I only dabble with these languages for fun. as a musician before a
programmer, I find live coding very novel, but never the optimal way to
produce live music.

so I know this is not the answer you are looking for at all, and I know people
will argue with this, but, my 2 cents: if you find yourself trying to sync
multiple live coding environments, start a band, or learn something like FL
Studio.

music is solely about output. the means to create it are irrelevant.

~~~
Angrycrow
I totally agree. Just exploring. I'm also a musician first.

------
keypulsations
i'm really interested in chuck. ge wang is a brilliant guy

here's some SuperCollider music i wrote if anyone is interested.

source:
[https://github.com/keypulsations/variations/tree/master/lilj...](https://github.com/keypulsations/variations/tree/master/liljedahl_abiogenesis_1)

audio:
[https://soundcloud.com/keypulsations/liljedahl_abiogenesis_1](https://soundcloud.com/keypulsations/liljedahl_abiogenesis_1)

~~~
keehun
Will you ever annotate/comment the source? It seems really interesting that
the little amount of code can produce such a long work. Would love to learn
how it all fits together. Will also have to look at the docs and figure out
what's happening...

~~~
keypulsations
Hey keehun, I'd be happy to add some annotations if you're really interested.
shoot me an email keypulsations at gmail

------
gdubya
See also: Programing as Performance using SonicPi.
[https://www.youtube.com/watch?v=TK1mBqKvIyU](https://www.youtube.com/watch?v=TK1mBqKvIyU)

------
afandian
I wrote some blog posts about ChucK a couple of years ago. I thought it would
be interesting to teach programming from the point of view of music.

[http://blog.afandian.com/tag/oxlork/](http://blog.afandian.com/tag/oxlork/)

It was a rewarding experience, and quite fun to start from musical principles,
which have many common concepts, ranging from control structures to continuous
and integer variables.

This was part of the Oxford University Laptop Orchestra, which was a spin-off
from the Princeton project.

The blog posts went the way of all side-projects...

------
geoffroy
Last time I checked, it was way less powerful than SuperCollider, and
development was kinda stalled. Happy to see there is a new version though.

~~~
Isamu
In what sense, I am honestly curious. I have only glanced over Supercollider
and dabbled in ChucK. I imagine there are higher-level constructs in SC?

~~~
geoffroy
When I tried it a few years ago, there was no way to read a stereo wave file
:-) Looking at the changelog, it seems it was introduced around version 1.3.0.
It was a showstopper for me then. At that time, I could not find an equivalent
of SuperCollider's Patterns library which is fantastic :
[http://doc.sccode.org/Tutorials/A-Practical-
Guide/PG_01_Intr...](http://doc.sccode.org/Tutorials/A-Practical-
Guide/PG_01_Introduction.html)

------
zeckalpha
The JavaScript version:
[https://github.com/aknuds1/chuckjs](https://github.com/aknuds1/chuckjs)

Demos in the browser: [http://chuckdemos.com/](http://chuckdemos.com/)

