|
A Hands-On Guide to Audio Programming for Mac and iOS
by Chris Adamson and Kevin Avila.
- Paperback: 336 pages
- Publisher: Addison-Wesley Professional; 1 edition (April 9, 2012)
- Language: English
- ISBN-10: 0321636848
- ISBN-13: 978-0321636843
First let's start with stating how satisfied I am of having found that this book exists. Core audio is one of the most difficult programming topic I ever found, because of the subject matter and because of arcane, not very well documented, obscure and often inconsistent Api conventions and naming. OpenGl is difficult as it requires loads of mathematics, but is wery well documented. Core Audio is as difficult as OpenGL, mayebe more, but knowledge about it is much harder to be found.
The authors take their time to tell their readers what this book is not, it is not a book for wannabe programmers, it is not a beginners guide, beginners and less than determined programmers, please look elswhere. Audio is not for everybody, it involves doing computations in real time and is an order of magnitude more difficult than say, Ruby web based design.
A prerequisite for a beginner's book on Audio on Mac OsX and iOS, is being a rather advanced programmer in all three major languages required by the platform: Objective C, C (on which Core audio is based) and C++ (because of OpenAL 3d audio). You should be confortable with structs, pointers and memory allocation. The approach of the authors is keeping the UI side to a bare minimum, as UI is not what this book is all about: on the Mac side this choice implies having to deal with command line programs, and ignoring the Cocoa side of things. As this book is centered on Audio programming this choice is very logical. On the iOS chapter, a barebone simple View controller is used (as iOS does not support CLI.). Learning Core Audio explains how to use all the major audio engines available on Apple platforms, which are basic Core Audio services, Core audio queues, Audio units and Open AL, the final chapter is about Core Midi. Differences between the iOS and Mac approach is detailed in the 10th chapter, after the Mac platform has been explained.
What you won't find in this book: this is not a complete treatment of the matter, which would have been simply impossible, but is rather gentle (as gentle as possible, not too much) introduction to the main aspects of the matter. The authors do attempt to let the reader acquire a full view on the general phylosophy, unwritten conventions and way of thinking necessary in order to deal with the frameworks, enabling the reader to go on and research further on his or her own after reading this book. The authors do manage to render Core audio understandable and practically approachable by determined and cabable programmers, and out of the restricted circle of über-Hackers and programming demi-gods. At least a book on Core Audio for us normal humans, the authors seem to discourage casual potential readers by stating how difficult Core Audio is, well I do believe the subject is difficult, but they did an excellent job in making it practically understandable.
How to build a complete commercial Audio Unit is not dealt with, nor is in any way treated the required knowledge of electronic music principles and digital signal processing. These subjects require separate reading of the typical well known and usually large tomes on the subject (e.g. Boulanger, Openheim-Shafer).
I cannot but recommend this book as required reading on the matter of Core Audio programming. Personally I would have liked to see at least an introductory chapter on DSP and some coverage of Audio Unit development, but these subjects were obviously either too complex or not completely related to Core Audio learning, for which this book is THE starting point. I am also very grateful to the publisher, for the courage shown in publishing a book which will not be of interest for a very large audience, but which was nonetheless desperately needed. |