Content You Need: A Visit to CNMAT

    Sometimes the "content you need" is a tackle box full of lures for specific situations – computer vision and great toolboxes for physical modeling Max externals, for example.
    This time, I want to remind you about something you might already have: the CNMAT tools.
    Most of the time, Max users who’ve visited the CNMAT website at UC-Berkeley are looking for the Max OSC (Open Sound Control) objects because they want to move data between sensors and actuators or talk to their or Apple or Android mobile devices.
    Or sometimes people have wandered over looking for a copy of Tristan Jehan’s analyzer~ object [think of it as the fiddle~ object with racing stripes, spinners, and an LED-illuminated undercarriage].
    What? You don't have 'em yet? No worries - click here and click on the CNMAT Max/MSP Externals for Mac link. In Max 7, you'll want to put the downloads in your Shared Library folder (/Users/Shard/Max 7/Library on a Mac and C:\ProgramData\Max 7\Library\ on Windows) for easy access.
    OSC is great and all, but you might want to have a look around the rest of the helpful Max externals in the download. Among other things, you'll find
    • Max externals that perform tasks that people ask about all the time on the forum (finding least common multiples? Try lcm)
    • Max objects that you might have done back-of-the-napkin cogitatin' about (signal routing using Jitter matrices? Yep, cnmatrix~)
    • Max externals added that one thing you wish that the standard MSP object had (e.g., the accumulate~ object works just like +=~, but you can reset it at signal rate).
    • Nifty objects that perform functions that you'd have to build enormous MSP patches to manage (need a big bank of parametric EQs? Say hello to my leetle fren' peqbank~)
    Turning It Up to Eleven
    But for me, the point at which the CNMAT externals moves beyond The Greatest Easter Egg Hunt Ever are right here:
    • Resonant filter banks (basicresonators~, resonators~, and their cousin res-transform, whose name alone should give you the vapors)
    • Banks of harmonic, sinusoidal oscillators (harmonics~)
    • Banks of exponentially-decaying sinusoids (decaying-sinusoids~ and its associated helper objects) that play well with SDIF (Sound Descriptor Interchange Format) files [You can use Michael Klingbeils amazing SPEAR application for Macintosh and Windows to read, display, modify and export audio files as SDIF files].
    Can you can feel the rabbit hole calling your name? If not, fire up the CNMAT migrator help file. If you don't just sit there listening with a big, stupid smile on your face, see your therapist.
    A Trip To The Depot
    The CNMAT website has one more must-see attraction: The Max/MSP/Jitter Depot. It's a treasure trove of interactive tutorials (Want a good tutorial on those decaying sinusoid objects? Check. Tuning and temperament tutorials? You betcha. A great intro to FM synthesis? Bien sûr. It's all there.), bits of Max patching all ready to copy and paste, and lots of programming tips to make your life richer (if not easier).
    Here's a little glimpse at some of the helpful resources in the MMJ Depot collection about working with data in Max. See anything here that might be of interest?
    Yeah. This is also Content You Need. To grab yourself a copy click here and click on the MMJ Depot links.
    Once you've spent a little time, I figure that you (like me) will owe the folks at CNMAT a pint, at some point. But before I go - I'd like to pause a moment, raise my glass (Bookers neat with a splash of water.) and toast the memory and work of David Wessel, who directed the Center for so many years and was such an inspiration to us all. We love and miss you, David. May your name be for a blessing.

    • Oct 28 2015 | 4:58 pm
      Cheers to David, and thanks for the writeup.
    • Oct 28 2015 | 8:21 pm
      thanks! but as often there are no Windows versions of externals :-)
    • Oct 29 2015 | 8:21 am
      Cheers, Gregory!
    • Oct 30 2015 | 3:23 pm
      @Alfonso: creating Windows versions involves quite a bit of extra work until a developer is set up to do it (and Windows developers tend to find cross-compiling for Mac OS every bit as difficult as Mac developers find cross-compiling for Windows).
      The short answer: try to find someone who is willing to take on the task of building for Windows. Once a developer is set up for developing for a platform (and knows whats involved with building Max externals), most externals can be built fairly painlessly. Although there are exceptions…
    • Oct 30 2015 | 5:53 pm
      For those who are interested.. be sure to check out the ODOT library. Aside from it's obvious use in OSC applications, the 'bundle' data-type allows for named variables at the top of a patch to be called anywhere further down - much like 'normal' programming . No need for spaghetti routing or roundabout methods of storage and retrieval of variables that are so common in data flow patching. Data is also passed in full packets (like a jitter matrix) which makes for faster performance than trying to manage complex routing with standard Max objects. Once you get the hang of it, converting to and from standard messages and bundles is no more difficult than going in and out of Jitter. Okay. That's my spiel. Enjoy.
    • Oct 30 2015 | 6:43 pm
    • Dec 01 2015 | 6:33 pm
      cnmat site has been down - it's hard to find any updates, mirrors or contacts to reach out to. Anybody any ideas?
    • Dec 01 2015 | 10:50 pm
      Here are the odot externals and MMJ Depot files. I grabbed 'em out of my downloads folder. They are for Mac and fairly recent (September 2015). Nothing was added to them but I'm not absolutely sure I didn't pull a file or folder from one of them. I don't think I did though. Just replace them with the official version when CNMAT's site is up again. Enjoy.
    • Mar 02 2016 | 6:47 pm
      Does anybody know if there's a 64-bit version coming? Running Max 7.1, the resonators~ object sometimes doesn't work. Others with the same problem?
    • May 08 2017 | 4:57 pm
      the right-inlet of +=~ can reset it at audio rate, tested in max5. I just noticed this a few months ago.