Vol. 36 Issue 4 Reviews

Alessandro Cipriani and Maurizio Giri: Electronic Music and Sound Design: Theory and Practice with Max/MSP, Vol. 1

Softcover, 2010, ISBN 978-88-905484-0-6, 534 pages, illustrated, references, index, foreword by David Zicarelli; available from ConTempoNet s.a.s., Via Sorelle Marchisio, 16, Rome 00168, Italy; telephone (+39) 06-35502025; fax (+39) 06 35502025; electronic mail post@virtual-sound.com; http://www.virtual-sound.com/ or http://www.contemponet.com/.

Reviewed by James Harley
Guelph, Ontario, Canada

Book CoverAlessandro Cipriani, together with Riccardo Bianchini, authored Virtual Sound (ConTempoNet, 2000), a book on computer music, essentially outlining a course for learning about digital sound using Csound as the programming environment. One of the main aims, of course, was to introduce the student reader to Csound, a program for working with audio, but with enough information on computer music concepts that other, supplementary texts would not be necessary. Cipriani, with colleague Maurizio Giri, has taken on an ambitious new project: a three-volume publication that can also make up a comprehensive course in computer music, this time using Max as the programming language (Volume Two is announced as appearing sometime in 2012).

Electronic Music and Sound Design, Vol. 1 (EMSD1) is dedicated to digital synthesis and sound design. Vol. 2 will cover additional topics such as dynamics processing, delay lines, reverberation and spatialization, digital audio and sampled sounds, MIDI, OSC, and real-time synthesis. Vol. 3 will cover nonlinear techniques (AM and FM synthesis), granular synthesis, analysis and resynthesis, convolution, physical modeling, micromontage, and computer-aided composition. The first volume is logically organized with chapters on theory alternating with practice-based chapters, enabling concepts introduced in one chapter to be applied in the next. One presumes the succeeding volumes will follow suit. The authors have given much thought to pedagogy, and have even provided guidelines for the amount of time they estimate will be required to master the material, both within a class and on one’s own (180 hours as a class, 300 as self-study).

Max has become the primary programming environment for computer music (and much else). Most universities that offer computer music courses teach Max. However, since Todd Winkler’s book Composing Interactive Music (1998) came out, at a time when MSP had not yet been added to the Max programming environment, there has not been another text that could be used in such a course setting (Miller Puckette’s Theory and Techniques of Electronic Music uses PureData as its programming environment). One reason for this may be that Max comes with an excellent set of tutorials, and the built-in Help utility is extremely useful. The tutorials and other Max documentation include sections on “theory,” so one can learn a great deal from these resources alone, but the assumption is that the user will access other sources to fill in any required knowledge. EMSD1 has been designed to cover both the theoretical and programming aspects of computer music, the “knowing” and “doing.”

The first pair of chapters (1T - Theory, and 1P - Practice) concentrates on basic sound synthesis. While there is not space here to discuss the contents of the book in detail, I think it is worthwhile to make note of the Learning Agenda section that begins each chapter, as these sections are very helpful for the instructor and for students, to both know what’s coming and to evaluate whether the content and one’s engagement with it meet the stated goals. These sections are organized into the following headings, with point-form listings under each: Prerequisites for the Chapter; Learning Objectives (sub-headings include Knowledge and Skills for the theory chapters, and Skills and Competence for the programming chapters); Contents; Activities; Testing; Supporting Materials (for theory chapters this could include Fundamental Concepts, Glossary, and Discography; for programming chapters this could include List of Principal Max/MSP Commands, List of Max/MSP Objects, Commands, Attributes and Parameters, and Glossary).

The Learning Objectives for Chapter 1T are as follows:
1. To learn about the signal paths one uses in sound synthesis and signal processing
2. To learn about the principal parameters of sound and their characteristics
3. To learn how pitch and sound intensity are digitally encoded
4. To learn about musical intervals in different tuning systems
5. To learn about audio file formats

1. To be able to hear changes of frequency and amplitude and to describe their characteristics
2. To be able to hear the stages of the envelope of a sound or a glissando

The Learning Objectives for Chapter 1P are listed as follows:
1. To be able to use all of the basic functions of Max/MSP
2. To be able to synthesize both sequenced and overlapping sounds using sine wave oscillators, as well as square wave, triangle wave, and sawtooth wave oscillators
3. To be able to continuously control the amplitude, frequency, and stereo spatialization of  sound (using linear and exponential envelopes for glissandi, amplitude envelopes, and the placement of sound in a stereo image)
4. To be able to generate random sequences of synthesized sound
5. To be able to work with and manage elements of sampled soun

1. To successfully realize a first sound study based on the techniques you have acquired in this chapter, and save your work as an audio file

These objectives then match up with the sections of the chapters, listed here for comparison:
Chapter 1T
1. Sound synthesis and signal processing
2. Frequency, amplitude, and waveform
3. Changing frequency and amplitude in time envelopes and glissandi
4. The relationship between frequency and musical interval
5. Introduction to working with sampled sound
6. Introduction to panning

Chapter 1P
1. First steps with Max/MSP
2. Frequency, amplitude, and waveform
3. Changing frequency and amplitude in time: envelope and glissandi
4. The relationship between frequency and musical interval
5. Introduction to working with sampled sound
6. Introduction to panning
7. Some Max/MSP basics

Obviously, there are strong correspondences in the organization of the paired chapters, concepts being introduced in the first, and Max implementations of these concepts presented in the second.

The second pair of chapters introduces additive and vector synthesis, while the third pair moves on to noise generators, filters, and subtractive synthesis. The final pair of chapters focuses on control signals. In addition to these four theory-practice pairs of chapters, the book includes two substantial “interludes.” The first, which comes right after the chapter pair on sound synthesis, is a detailed, 50-page engagement with Max/MSP. The Contents listing covers integers and floating-point numbers, random number generators, generating rhythmic events using the metronome object, constructing subpatches and abstractions, managing lists and variable arguments, and connecting objects without using patch cords. The aim of this interlude is to develop enough familiarity with Max/MSP that the student reader can then carry on with the more advanced synthesis topics, while more easily grasping how they can be expressed and manipulated in the programming environment.

The second Interlude occurs just before the final pair of chapters on control signals. Also 50 pages in length, this section carries on with fundamental programming tools. The Contents listing includes basic uses of the MIDI protocol, recursive operations and repeating sequences, arpeggiators and probabilistic intervals, comparing and converting values, routing signals and messages, taking lists apart and generating random lists, and generating Shepard tones.
This book, then, is carefully organized with the aim of maximizing learning potential. I think it would be helpful to collect all the terms listed in the glossary sections for each chapter at the end, for easier reference, and similarly for the Max/MSP commands that are listed and defined at the end of each programming chapter (including the two Interludes). Also, the discography included at the end of a few chapters would be usefully gathered together. These compiled lists could be placed online, to not waste paper, for a more handy reference.
There is a Web site associated with EMSD1. It does not contain compiled glossaries and the like, but it does include interactive examples referenced in the book (providing audio to enhance the text-based discussions), instructions on how to install Max/MSP, a macros library (Max/MSP objects created by the authors) that the user can download and add to Max/MSP, supporting materials (including all programming examples discussed in the text), and a link to useful bibliographic materials (hosted by the Computer Music Journal).
The book has numerous graphic examples, concerning both audio and synthesis concepts and programming examples (Max/MSP is an object-oriented, graphic programming environment, after all), on practically every page. The production quality of the book is high, and while I did not notice any glaring errors, there is an Errata section on the EMSD1 Web site. This is one more useful function of the online extension of a print publication, as problems are reported and posted by readers.

The authors of EMSD1 have done their utmost to create a book (and related resources) that is organized with the learner in mind. The engagement with the book is, of necessity, highly interactive. They have not compromised on depth, it should be said. The material is dense, and requires focus and commitment on the part of the reader. This text, along with the future volumes, will be able to provide the basis for a comprehensive course, or series of courses, of computer music, whether in the classroom or working on one’s own.