The field of computer music has grown to include a huge range of methodologies, algorithms, musical styles and types of hardware, and this growth shows little sign of slowing up. The author has set out to cover as much as possible, while bringing an overall sense of order and unity. Naturally this limits the depth, but a great deal of information has been packed in to a book that does not feel overly bulky. While it includes details of the author’s own work, it is not a narrow personal account, but genuinely seeks to cover as wide a range as possible. The style is mainly technical with many descriptions of practical systems. Discussion of aesthetics is measured, and mainly reserved for dedicated places in the later chapters. For this reason Introduction to Music Computing may be a more appropriate if less appealing title.
The chapters are well structured. Each begins with a list of objectives and ends with a summary and exercises. Subjects are introduced economically in a precise but easy to read style. Occasionally it may come over a little over worded, depending on the reader’s taste. The reader is drawn to the point where they know enough to become interested, and then usually references provide a launch pad to original sources and more detailed material. The referencing is unusually comprehensive, and is one of the real strengths of the book. The complete list of references is 20 pages long.
More advanced text, for example detailing the Fourier transform, appears in highlighted boxes. Pseudocode is sometimes used to describe an algorithm in detail. Although I found this useful, it is unlikely that a reader would use this as a basis to write code, and so additional working code would be attractive. Such code has become increasingly common in many texts, and is often made available by website. Block diagrams are used to some extent here, especially for signal processing. Perhaps they could be used a little more elsewhere, where they can provide a more direct picture of naturally concurrent processes than pseudocode-type descriptions.
The chapters divide roughly into three groups. ‘Introduction’ and ‘Recording’ cover audio theory and practice background, and some history. The focus on perceptual fundamentals is particularly helpful here. The second group, ‘Analysis’, ‘Processing’, ‘Synthesis’ and ‘Interaction’, covers what could be termed the core signal-level functions in computer music systems. Within this are many subsections, including Fourier analysis, auditory models, feature extraction, convolution (which is described at length in an accessible way), digital effects, synthesis algorithms, physical modelling, interfaces, performance and musical agents. I sometimes found the detail too lacking here, even for an introduction, one example being the lack of discussion on time constants on dynamic compression. However, this is usually in areas that are very well covered in other places. The last group turns to topics less likely to be found elsewhere. ‘Networks’ examines a variety of systems including networked performance, web music and music databases. ‘Composition’ is the main focus for discussing aesthetics. Many examples are provided from the history of computer music. Algorithmic music is particularly well presented, as befits one of author’s main interests. Finally, ‘Modelling’ deals with musicology, sonification and information. There are links here with previous machine learning topics, but the end goals are more about analysis and high-level perceptual understanding, rather than music generation.
In summary this is a very useful book, providing introductions on many subjects, and as many references as could be desired. It is sometimes difficult to pull apart the spaghetti-like strands that cross over different areas of music computing, but here the spaghetti has been kept in excellent order. Very highly recommended.