Most Popular


The EM Poll




browse back issues

The Max Factor

Jun 1, 2002 12:00 PM, By Gary S. Hall



         Subscribe in NewsGator Online   Subscribe in Bloglines
 

CURRENT NEWSSTAND ISSUE

Read the full Table of Contents for the issue on sale now! Click here

Subscribe for only $1.84 an issue!

Please tell us about yourself so we can better serve you. Click here to take our user survey.

MixBooks Logo
Life in the Fast Lane

This collection of St.CroixÕs columns was assembled during the two years following his death of cancer in May 2006. Included are many of his most-read columns, as well as personal notes, drawings and photographs.

Click for more books
EM Podcasts

Listen to these latest podcasts and more:
Bela Fleck on recording Jingle All the Way.Go

What's New: software and sound products. Go

eDeals Newsletter for Discounts on Gear

Get First Dibs on Hot Gear Discounts, Manufacturer Close-Outs and Job Opportunities when you sign up to receive eDeals E-newsletter, sent twice a month. Check out an issue get advertising info or subscribe

FIG. 17: The selector~ Object provides an easy way to select an audio input by a numeric value. Combined with the umenu Object, it becomes easy to control audio signal routing in a multidelay Patcher.

FIG. 17: The selector~ Object provides an easy way to select an audio input by a numeric value. Combined with the umenu Object, it becomes easy to control audio signal routing in a multidelay Patcher.

INPUT SIGNAL ROUTING

Hopefully, you're now enjoying playing your instruments through your new dual-synchronized audio-loop delay. You may be thinking that it's kind of lame, though, because both delays get the same input, and the delays come back from both speakers equally.

There are any number of ways to control signal routing in Max, including drawing patch cords from point to point. For Patchers such as the one we created, I prefer to use pop-up menus to choose an input for each delay section. Fig. 17 shows our first delay unit modified to let the user choose from a list of inputs, along with a fragment that shows the changes needed with the delayline Patcher Object to accommodate menu selection. (Patcher Objects appear in brackets in the title bar of the edit window to indicate that you're editing a Subpatcher within a larger patch rather than a standalone Patcher.)

FIG. 18: The umenu  Inspector allows you to enter a text list, delimited with  commas, for the pop up menu. When an Object is selected, umenu  outputs a number corresponding to that item’s position in the list,  starting with 0.

FIG. 18: The umenu Inspector allows you to enter a text list, delimited with commas, for the pop up menu. When an Object is selected, umenu outputs a number corresponding to that item’s position in the list, starting with 0.

The user menu (“umenu”) Object provides a pop-up list that is defined in the Object's Inspector dialog (accessed by selecting the Object and then pressing Command + I), as shown in Fig. 18. Items in the list are delimited by commas. When the user clicks on the umenu Object, this list of items pops up. When an item is selected, umenu outputs a number corresponding to the item's position in the list, starting with 0.

Within the delayline Object, an audio “selector~” Object controls the actual audio source routed to tapin~. The selector~ provides some number of inputs, defined by the number that follows the name, and one input for control. The number routed from the user menu goes to the left-hand input of the selector~. Selector~ routes one signal at a time to its output, depending on the number sent to the left-hand control input. An input of 0 switches all signals off.

Up to this point, we've used the adc~ Object in its default Stereo mode. But this Object can accommodate any number of inputs from a physical interface; simply list the inputs in the Object's name. To illustrate, adc~ is set up in Fig. 18 to accommodate four inputs. It could just as easily be 8 or 16 ins.

You can also route the output of one delay unit to another's input by using send~ and receive~ Objects, which are the audio equivalents of the send-receive pair that we used for the master tempo. Space precludes detailing that in this article.

FIG. 19: You can create as many delay sections as you wish, all synced to the same bpm value. In this example, each section is fed by a different analog input, but you can also have a single source going to multiple delay sections.

FIG. 19: You can create as many delay sections as you wish, all synced to the same bpm value. In this example, each section is fed by a different analog input, but you can also have a single source going to multiple delay sections.

Now that you have a way to set different inputs for each delay unit, you might want to create even more iterations of the core delay, as shown in Fig. 19. Go ahead and have some fun with it.

PANNING AND MIXING

FIG. 20: A simple left right pan can be built using a knob control and simple arithmetic to create complementary control signals for each channel.

FIG. 20: A simple left right pan can be built using a knob control and simple arithmetic to create complementary control signals for each channel.

The last step we're going to take with our multisynced delay Patcher is to add output panning, first in stereo and then (for those with the means and inclination) in quad. For simplicity's sake, we'll stick with straight linear panning. Cycling '74 provides some excellent examples of equal-power panners and other variations in the user documents, and these are well worth studying and implementing. For the purpose of this exercise, though, we'll keep it simple.

Fig. 20 shows our main delay section with a stereo pan pot added, along with the portions of the delayline Patcher Object that are changed to accommodate it. The key here is the creation of two gain control signals from the single pan-pot output, accomplished by subtracting the maximum control range (127) and then multiplying by -1 to invert. After that both signals are scaled and sent to a pair of audio multipliers that implement the actual pan.

FIG. 21: Four channel panning is a little more complex  because left right and front back controls must be created  separately.

FIG. 21: Four channel panning is a little more complex because left right and front back controls must be created separately.

Our last trick will be to do the same in quad. Max provides a convenient x-y control that makes doing that easy. To make the actual panning work, we first have to create the left and right pan outputs and then use four additional audio multiplies to implement front-rear panning separately for left and right (see Fig. 21).

Fig. 22 shows the final result (well, a final result) of our efforts: a group of four long audio delays that are coordinated precisely with a common tempo. Try this Patcher out with slow-attacking guitar, synths, vocals, and so forth. You are guaranteed a spacious experience, especially if you can listen in quad! Of course, there's no reason to limit yourself to four modules. You can add as many as you like, until processing power or memory runs out.

FIG. 22: With the full version of the multidelay Patcher, you can route and control as many  delays as you like, with full 4 channel panning and common tempo sync.

FIG. 22: With the full version of the multidelay Patcher, you can route and control as many delays as you like, with full 4 channel panning and common tempo sync.

MAKING IT YOUR OWN

We've come a fair distance with our quad multibeat-synced delay lines, but the real purpose of this article has been to get you comfortable with creating and modifying audio-processing Patchers in Max/MSP. You should now be able to build your own creative signal-processing tools. Even starting with the Patcher presented here, you have ample room for expansion. Here are a few ideas if you want to continue exploring on your own.

  • Add a function to accept a tapped tempo to define bpm.

  • Add a MIDI-clock output to drive external sequencers, drum machines, and the like at the designated tempo.

  • Add a MIDI-clock input. (Take note: this is actually harder than it sounds!)

  • Modify the signal routing so one delay unit can feed into another.

  • Add MIDI-control inputs so all parameters can be changed with a MIDI control surface.

  • Add audio recording so you can grab your jams on the fly.

  • Add time-based automation so all control moves can be recorded.

All of this is possible within Max and MSP, although some tricks are more difficult than others. The real excitement will be in generating and implementing your own concepts. With Max/MSP there's simply no need to be limited by what's available in current fixed-function products, because you can build anything you like, on the spot, and totally from scratch if need be!


Gary S. Hall consults, writes, and composes from his home base in Alameda, California, and from custom remote facilities in Bahia and the Utah outback.



Acceptable Use Policy
blog comments powered by Disqus

Get Copyright ClearanceWant to use this article? Click here for options!
© 2009 Penton Media, Inc.

Back to Top