Programming - By Andrew R. Brown
A critical aspect of digital instrument building is the
skill of computer programming. It is the equivalent of wood working for
the violin maker, or bronze casting for the bell builder. Leaning to
program a computer for instrument building is a serious endeavour
which, like other worthwhile activities, rewards persistence and
regular practice.
Programming for musical applications introduces a number
of issues beyond those of interface design and data structure which are
common for many programming tasks. These issues include connection with
hardware devices and scheduling.
To connect with an audio or MIDI device, or a gestural
controller of some sort, the digital instrument builder will need to
manage the communications to and from the computer to these interfaces
and devices. The protocols for such input/output are often different on
each platform, although some attempts to provide standards are
available – for example the Port Audio and Port MIDI
projects. When working in Java or Max/MSP these environments provide a
programming layer to shield the developer from the operating system
differences, however the downside of this approach is that at times
this layer may not provide all the features the developer requires.
Having music play in time is a critical requirement for
digital instruments, but not many computing platforms are designed to
meet time critical (real time) processes. Because the appropriate
scheduling of music and sound events is related to sending or receiving
them to external devices many of the systems mentioned above handle
both scheduling and communication. The programming issues relate to how
much processing can be achieved in-between events and how fine and
reliable the event resolution can be. The instrument builder needs to
be aware that these issues will arise and investigate strategies
designed to cope with these situations.
This web site provides many examples of simple and
intermediate level digital instrument programs from which you can learn
useful tips and techniques. However, the site does not focus on
programming in Java Max/MSP or any other environment in depth. There
are many good resources for learning this, both in book form and
online. Here are a few links as examples.
Java
http://java.sun.com/docs/books/tutorial/
http://www.dickbaldwin.com/toc.htm
http://developer.apple.com/java/javatutorial/
Max/MSP
http://www.cycling74.com/products/dldoc.html
http://www.arts.rpi.edu/crb/iap/maxmidi.html
|