Authors: Ajay Kapur, Perry R. Cook, Spencer Salazar and Ge Wang
Audience: Technically minded musicians and would-be musicians
Reviewer: Mike James
There are lots of people interested in making music. Computers can help - especially if you program.
This is not really a book about general purpose programming. It isn't Python or any other popular language targeting readers with a musical background. This is a book about using ChucK as a big flexible super synth. It is open source and there is an appendix that tells you how to download and install it on Windows, OSX and Linux. There is also a simple onscreen editor/tool that lets you try out your ChucK programs.
The book is divided into two parts an introduction to ChucK and a look at advanced ways of using the system.
The first part attempts to introduce programming ideas to the complete beginner. It probably works enough for the beginner interested in using ChucK but I doubt that the real ideas of flow of control, variable, loops and conditionals would sink in very quickly and I don't think they would generalize well. ChucK isn't a standard language. It is a real time sound generator. You do a little programming to set things up and then advance time a little so that all the things you set up get to play. i.e. make some noise.
Chapter 1 starts you off with some basic oscillators and you get to make some random notes. If you were hoping to sit down with a keyboard (piano) or some other input device and start making music this is going to be a disappointment. Even if you thought that you were going to have to program to make the music this is going to be a underwhelming. But you need to start this simple. It really does get better and does so quickly.
The rest of the first part walks you through the various stages of using ChucK - the libraries and built-in tools, sound files, and finally building functions. There are some fundamental programming ideas introduced but not in very standard ways. You get to learn about data types, variables and so on, but the ChucK system is very different to most programming environments.
What you don't get is much in the way of music theory. There are a few comments about the frequency of notes and how musical intervals fit together, but you are either going to carry on using ChucK with minimal musical knowledge or you'll need to find another source of information. .
By the end of the introduction you have discovered the basics of ChucK, put together a drum machine and used some basic oscillators. In Part 2 things get much, much more interesting - and it is worth sticking the course and getting through the first 100 pages.
Chapter 6 introduces what you might call classical electronic music techniques - oscillators, ADSR envelopes and FM synthesis. This is the sort of thing you encounter in programming music for games. Then we get on to the relatively recent technique of physical modelling. If you have tried to do this from first principles, don't, ChucK makes it easy.
Chapter 7 continues on to more synthesis - wind instruments, stringed instruments, rigid objects, particle models, voice acoustics, and classic analog and digital synthesizer sounds.
The remaining chapters become ever more sophisticated and specialized. Chapter 8 is on multithreading, 9 is about objects and classes, 10 is about events and syncing to the outside world and 11 is about integrating with other systems - MIDI, OSC, serial etc.
If you just want to sit down and play a synthesizer then go and buy a synthesizer with a keyboard. This book is what you need to read if you plan to experiment with making sounds and perhaps even creating whole new musical instruments. The authors are pioneers in the area and one of them, Ge Wang, is the creator and implementor of the ChucK language so this really is cutting edge.
If you want to learn more about ChucK the book's authors are the course instructors for Introduction to Programming for Musicians and Digital Artists, also referred to as the The Kadenze ChucK Programming course. This has been in session on the Kadenze platform since June but you can still enroll and it runs until January 1, 2016. with this book as its course textbook. A follow on course Physics-Based Sound Synthesis For Games And Interactive Systems co-taught by Perry Cook, started on October 16, 2016. See Stanford Online MOOC For Sound Synthesis for more details.
As long as you want to be a cutting edge musician then this book is highly recommended. If you are just a programmer who likes to play around then it is also great fun. This book and ChucK can get you places that otherwise would be very slow and difficult to arrive at by other means.
Follow @bookwatchiprog on Twitter or subscribe to I Programmer's Books RSS feed for news addition to Book Watch and for new reviews.
To have new titles included in Book Watch or reviewed here contact BookWatch@i-programmer.info