Some tips for beginning Max/MSP users:
- Check out the examples (Extras menu > Examples) and unlock the patcher to see how they are built up. Try to understand how they work.
- Every help file of every object is a Max-patcher too: you can unlock them, select and copy what you need and paste it into your own patch. Watch out with editing the help patches: if you then save it, it permanently overwrites the help file.
- Check out the Object Thesaurus in the Reference, with it you can search for a certain functionality and it will list the object to use.
- Learn the hotkeys: cmd-e to lock/unlock the patcher, i for new int box, f for new float box, n for new object, m for new message, t for new toggle, b for new bang, c for new comment, cmd-shift-e to group the selected items into a subpatcher, cmd-k (on windows, cmd = ctrl) for hide on lock, cmd-l for show on lock, cmd-y and cmd-shift-y for align objects/patch cords (this is ctrl-shift-a on windows) and more.
- Comment your work. Max/MSP is a programming language, and if you create some complex logic during a eureka-moment you will thank yourself later if you annotated it with a short explanation on how it works. It makes debugging a lot easier.
- Turn on 'probing' in the Debug menu so that when you hover with the mouse over a signal cord, you will see its current amplitude.
- Use [print] often in the creation process to check if objects output the values you expect them to. You can remove the print objects later on when you have verified that everything works.
- Make yourself familiar with the difference between Max and MSP, meaning the differences of doing stuff at scheduler rate vs at audio rate.
- Learn what the settings in the 'DSP Status' window do and what to check when the sound isn't working.
- Learn how pattrstorage works early on and build your patches with that in mind. Adding preset-storage capability later on is a pain in the ass.
- Before trying to build something, search the forum for it ( http://cycling74.com/forums ) Chances are someone had the same idea before you and has posted an example patch. This also applies when you get stuck with something: search the forum because you probably won't be the first to have this particular problem.
- Talking about the forum: read this topic http://cycling74.com/forums/topic.php?id=26095 - it tells you how to post patches on the forum and other basic, need to know stuff.
- If you have created something awesome, return the favor and share it on the forum!
- Check out http://maxobjects.com : there are lots and lots of abstractions and cool externals that add to the functionality of Max/MSP or make your life a little bit easier. Watch out with externals that are for one platform only though, you might run into compatibility problems later.
- While you're there, download the following libraries: ejies, jasch, jb (use the search function). Very useful stuff.
- Watch out for feedback loops in a data (or signal) stream (an object feeding data back to itself at the same rate as it receives it). Max often catches this situation and shuts down the scheduler with a warning, but sometimes it doesn't and Max will become unresponsive or even crash. Speaking about crashes:
- There are bugs in the program, and it will crash. So save often and think of some kind of versioning strategy. If you think you found a bug, search the forum first. When nothing comes up, make a new post that explains how to reproduce the bug, along with a tiny example patch. It will then most likely be fixed in the next version (this goes quite quickly, and the staff is very responsive).
Sound-design specific stuff:
- Watch the volume when using headphones. If you're working with signals while they are connected to the dac (output), unexpected stuff might cause very loud output.
- In the same vein, limit the input values of resonant filters, because they can produce nasty output. [clip] and [clip~] are your friends.
- Make yourself familiar with sfrecord~, sfplay~, groove~, record~ and buffer~. Writing and reading audio files is essential if you have created something cool and want to save it. In the Extras menu is a little tool called Quickrecord, this lets you record and save whatever is being sent to the dac.
- To avoid clicks when changing the volume of a signal with a non-signal number, or some other signal parameter (of a filter for example), put an [append 20]---[line~] in the signal flow to smooth the values in the audio domain.
- Check out pfft~ and the examples regarding fft and convolution. Quite advanced stuff, but it can be loads of fun too.
- Do you have a midi controller? Check out midiin, and create a little patch with you specific controller settings already set up and routed so that you only need to drop it in any patch you make to add midi functionality. Doing sound design with knobs is more intuitive and more fun than with the mouse only.
- Check out Max for Live if you want better integration of your Max-creations with a DAW.
- Build or find a constant-power fading and panning patcher, you will need it when crossfading or panning between signals.
- Learn how poly~ works early on and build patches with lots of parallel stuff around poly from the beginning. Think synths and other layered or multi-timbral sound generators and modifiers.
Some more ideas to build:
- A phaser;
- A multi-tap delay;
- An LFO-driven variable filter;
- An amplitude-driven filter with smoothing;
- A basic subtractive synth, which you can then extend with frequency modulation, the above effects, ADSR envelopes (using [function] or [adsr~], a step sequencer [techno], other waveforms (you can steal this from the X.FM~ synth in the examples) and more crazy stuff.
As you can tell, I spent far too much time with Max/MSP, and I still am. And yet, though I can create anything I want with Max+MSP, the world of Jitter (video) is still relatively unexplored territory where even more wonders await...