I decided to share some of the tips and tricks that I have learned about programming in MaxMsp in my time with UBCIMPART. Many of the best objects in Max are not in the tutorials, and many of the issues that one runs into are seemingly too basic to be documented on forums.
-Check audio status in Max 6 (called DSP status in Max 5) to make sure inputs and outputs are properly selected. Do this AFTER connecting a input or output interface to your computer, and if changing interfaces, you will probably have to restart Max.
-Go into your computer’s sound settings and make sure the correct mic and speaker interfaces are selected, and all others disabled. There should be a way to test the speaker interface with a test tone here, as well as a way to listen to the microphone (but make sure to turn this off when done, otherwise it will cause confusion).
-Get CPU usage as low as possible by closing applications like email, internet browser, torrenting, Dropbox, AntiVirus software. Activate high performance mode if your computer has such a mode.
-Turn off automatic updates: you don’t want notifications coming in the middle of a performance
-For using sensors on a PC, device manager is your friend. Here you can see if a driver needs installing, if a device is being recognized, if multiple devices are conflicting, you can uninstall drivers etc.
Useful objects (you can access their reference and help files to see more specifics):
onebang – can let only one bang through and no others (although technically, to be more accurate, the one bang comes out the left inlet and the others, out the right). Incredibly useful if you want to trigger an event only once in a performance. Onebang can be reset by banging the right inlet.
split – This object avoids having to use logical operators or multiple objects. “If the number received in the left inlet is greater than or equal to the specified minimum, and it is less than or equal to the specified maximum, it is sent out the left outlet. Otherwise, it is sent out the right outlet.” – split reference file
zmap – unlike the scale object, zmap clips values outside of its range. It’s a little hard to appreciate this object at first, but it is very useful when dealing with sensors. Example: with scale, if you tell it to take data ranging from 0 to 100 and output between 10 and 20, any incoming data less than 0 will be output by scale as less than 10, and any incoming data greater than 100 will be output by scale as greater than 20. But what if you want to make sure that all of your values are scaled within 10 to 20, even if you get the occasional deviant incoming value that is outside of the 0 to 100 range? This is where zmap comes in. If you tell zmap to take data ranging from 0 to 100 and output between 10 and 20, an incoming -2 will still be output as 10, and an incoming 103 will still be output as 20. Zmap makes sure that incoming data that does not conform to your input range will not give wildly divergent results.
UBC Toolbox – great for effects modules like reverb, ringmod, flange. Basically they can be set up like effects pedals are with a guitar. You have to open them as bpatchers to use them (new bpatcher->inspector->choose patcher file) http://www.opusonemusic.net/muset/toolbox.html
Thanks to Johnty Wang, Kieran Coulter, Naithan Bosse, and Ian Lavery for teaching me these tricks.