Digital Sound & Music: Concepts, Applications, & Science, Chapter 6, last updated 6/25/2013
It is assumed that you're proficient in the basics of MAX. If you're not familiar with an
object we use or discuss, please refer to the MAX help and reference files for that object (Help
Open [ObjectName] Help in the file menu, or Right-click Open [ObjectName] Help). Every
object in MAX has a help file that explains and demonstrates how the object works.
Additionally, if you hover the mouse over an inlet or outlet of an object, MAX often shows you a
tooltip with information on its format or use. We also try to include helpful comments and hints
within the solution itself.
At this point in the chapter, you should be familiar with a good number of these synthesis
blocks and how they are utilized. We’ll look at how you might create an audio oscillator, an
amplification stage, and an envelope block to control some of our synth parameters. Before we
get into the guts of the synth blocks, let’s take a moment to think about how we might want to
use these blocks together and consider some of the features of MAX that lend themselves to this
modular approach.
It would be ideal to have a single window where you could add blocks and arrange and
connect them in any way you want. The blocks themselves would need to have input and
outputs for audio and control values. The blocks should have the relevant and necessary controls
(knobs, sliders, etc.) and displays. We also don't necessarily need to see the inner workings of
the completed blocks, and because screen space is at a premium, the blocks should be as compact
and simply packaged as possible. From a programming point of view, the blocks should be
easily copied and pasted, and if we had to change the internal components of one type of block it
would be nice if the change reflected across all the other blocks of that type. In this way, if we
wanted, say, to add another waveform type to our oscillator blocks later on, and we had already
created and connected dozens of oscillator blocks, we wouldn’t have to go through and
reprogram each one individually.
There is an object in MAX called the bpatcher. It is similar in a sense to a typical
subpatcher object, in that it provides a means to create multiple elements and a complex
functionality inside of one single object. However, where the subpatcher physically contains the
additional objects within it, the bpatcher essentially allows you to embed an entire other patcher
file inside your current one. It also provides a “window” into the patcher file itself, showing a
customizable area of the embedded patcher contents. Additionally, like the subpatcher, the
bpatcher allows for connection to and from custom inlets and outlets in the patcher file. Using
the bpatcher object, we're able to create each synth block in its own separate patcher file. We
can configure the customizable viewing window to maximize display potential while keeping
screen real estate to a minimum. Creating another block is as simple as duplicating the one
bpatcher object (no multiple objects to deal with), and as the bpatcher links to the one external
file, updating the block file updates all of the instances in our main synthesizer file. To tell a
bpatcher which file to link, you open the bpatcher Inspector window (Object Inspector in the
file menu, or select the object and Right-click Inspector) and click the Choose button on the
Patcher File line to browse for the patcher file, as shown in Figure 6.46.
Previous Page Next Page