Content You Need: William Kleinsasser's Shared Software Project
[Update April 2022: A new installment of the Shared Software Project now available.]
From time to time, a number of us have written blog posts and newsletter articles to direct your attention to Max/MSP content that we think will help you in your patching life. It's quite often the case that we'll point you to releases available to you as part of Max's Package Manager system.
This post is a little... different; both in terms of its form (it's not a Package) and its content (please read on).
I ran across this Project posting during one of my monthly reads through the Projects postings on the Max Forum (Keeping up with the Projects section is a great way to see what your pals and fellow Max users are up to, by the way). Little did I know what was to come. My eye fell on the first line:
All of the Max/MSP software that I have developed from 1992-present for my compositional and creative work
and I thought to myself, "Naah. All of it? Couldn't be. Well, maybe there's something cool here...."
I started clicking, and the next thing I knew, the "long" Memorial Day weekend was over, and I knew that I'd found my very first "Content You Need" posting ever written about a non-Max Project. Ever. Let me see if I can't run down why I was so excited, and give you some tips to orient yourself as you explore this amazing collection.
I'd met William Kleinsasser and knew of his work from waaaay back. He first came to my attention in a lengthy and interesting interview with David Zicarelli that appeared on the Cycling '74 website back in 2005. He also released a recording on the Cycling '74 label (Available Instruments) that I really enjoyed and have programmed (along with his later works) on my weekly radio program. What struck me at the time in his interview and in his music had to do with his concern with something we all think about pretty seriously - the notion of interaction. As you might imagine, the Max user in me read and listened and wondered how William went about implementing those ideas as a Max programmer.
I now have a way to start understanding how he did it. I've got the pieces. I've got the scores and recordings to listen to, and - perhaps more than this - I've got access to the tools he created and used to make those pieces in one spectacular download source.
Getting Started
There's one thing I want to mention up front: This really is a collection of several decades of work by a Max user who's serious about his craft, and that means that he's engaged in using Max in ways that you may not be familiar with. There's one big part of that that caught me up short once I started clicking on download links, and I hope I can explain my own mistake in a way that helps you get into the patching stuff with a minimum of confusion.
See that link up at the top called Supporting materials? Your eye may have strayed further down toward the enticing list of cool stuff to download, but hold on a minute: You're going to have to download the supporting materials before you start tearing through William's patches or you'll be confused.
One of the features of this repository is that it presents a consistent design in terms of its patching and user interfaces for all of the compositions and all of the tools you can download here. That consistency is achieved by means of William having done some serious UI tweaking for his Max objects. That supporting materials download is the folder that contains what you'll need to be able to use all the rest of the patches.
And you'll also find a little surprise there that I'm sure will interest a number of UI-centric Max users, too.
So: Do Not Pass "Go." Pause and download the Supporting materials .zip file and put it something in your search path before you start.
Here's why: All of William's patches use a color scheme that differs from the one you're currently using with your copy of Max 7 or Max 8. If you're impatient and you grab a folder full of patches and open them up and see this
...or notice this error message in your Max console
newobj: color_theme_notice: No such object
jsscriptnobox: can't find file jsp.border.js
it will be because you haven't got the Supporting materials installed.
And since William has been kind enough to assume that you don't necessarily want to run his particular theme and color set forever, he's included a great little patching utility in all of his high-level patches (double-click on the Max abstraction titled color_theme_notice at the top of the patches) that lets you switch back and forth from the theme/look he uses and the default Max settings.
Checking Those Borders
That supporting materials folder you've downloaded and installed also contains something that will make some Max users very happy. If you're particularly observant, you'll notice that the user interface objects in all of William's patches look a little different than your Max 8 objects.
They've got borders.
How's that possible?
Well, William read this Forum posting about the look of Max UI objects that includes a response from Joshua Kit Clayton. He sat down and worked out how to implement the look and feel that he wanted for this own work, and did all the heavy lifting. The supporting materials folder contains a folder called Adding borders to max objects using BBedit that documents what he did and how he did it. It's all there for your edification.
The Master Class Is Now In Session
Okay. You've got your supporting materials all installed, and it's time to start exploring. Download what's interesting to you and put it in your search path wherever you like to save supplementary materials.
I'm going to start with William's compositions, since they were the first thing I seized upon - they were my chance to finally see his ideas in action. You'll find that material under the Part 1 link - all of the performance software used for his computer music compositions - the mother lode.
You've got the choice to download a multi-gigabyte file with everything, or individual compositions. Since it's a big download, my suggestion would be to start by having a look at the download page for this section of his shared software and start by choosing an individual piece. The works are arranged by date (and the range of date should give you an idea of just how much of William's work is here - 1989 to 2012), and you'll find a link for each one that will let you download
The software for the composition
The score for the composition
A recorded performance that'll give you a sense of what it's supposed to sound like (available for all but a few of the compositions)
In some cases, you’ll also find a recording of a pre-concert talk from William about the composition, as well.
In any number of situations in which I've found myself, this collection of information for a single piece is Master Class material all by itself, let alone twenty-one of them. Although the sheer size of the body of work is daunting, there are things to be learned by perusing them together.
If you spend a little time with more than one of the compositions, it’s very difficult not to notice that there is a tremendous body and range of work here that - I think - shares a consistent compositional vision, but something else, as well: a consistency of the software tools and the presentation of the compositions for the performer.
Looking at the performance patches makes this clear - these patches not only work in a performance situation, but the user interface they present to a performer from piece to piece share a remarkable similarity. Unlocking the patches also suggests that they share the same or similar bits of Max patching under the hood - patches that have developed over time and been modified to meet the needs of a piece. I spend a lot of time writing and lecturing and just generally ranting about how powerful it is that Max lets you create bits of patching that function as reusable and modifiable tools, but this is as strong an example of that idea in action as I’ve ever seen.
Another idea that emerges from examining those patches side by side is a little more subtle observation - the answer to a pretty general set of questions:
If you’ve got a piece written in Max/MSP that you want someone to perform, what should the performer’s interface for a piece look like? If you’re not going to be the person next to the mixing board running the piece in performance, what should your control patch look like?
Keeping your performer in mind may extend beyond the piece itself, and lead to providing your performer with tools to help them rehearse a piece or to become fluent with some techniques that your composition involves. William's download page for compositions includes a few examples of that, too - in the form of practice metronomes for a performer.
The overall idea behind all this can be expressed pretty simply (although implementing solutions can take a while):
You’ve written a piece for a performer/ensemble and Max. You want an audience to hear the piece performed (hopefully, more than once), and you’d like the performer to find the act of learning, rehearsing, and playing the piece to be sufficiently pleasant that she wants to play it again. How can you encourage that?
There are things to be learned in the first section of William's shared software library.
A Warehouse Full of Tools, Exotic Particle Detectors, Cabling...
...and that thing you wanted but didn’t have the time to work on.
Every Max-based composition or performance instrument or installation ever created began its life in the same form: a Max patch that you wrote (or copied and borrowed) that did something cool. After that initial Attack of The Cool, you started connecting it to something else and gradually it turned into the thing you either wanted, or the thing that you were about to begin modifying very slightly over a long period of time.
Even if you haven’t made something huge or complex, I’ll wager you’ve done that - and I’ll also wager that your computer is littered with all kinds of ideas that you either reused, or ideas that you’re keeping around to develop later.
Like myself, you also may have quietly mused about how cool it might be to have a chance to pick through a folder of Max patches that <insert the Max programmer of your choice here> keeps on their machine to see what amazing things are there to open, spend some time puzzling over and picking apart, learning from, and - maybe - appropriating/modifying/improving to meet your ends or interests.
The remaining sections of William's Shared Software Library constitute an opportunity to do just that with the patching and the tools he’s developed in the course of learning and working with Max. You’d be right if you figured that there might be a considerable amount of patching behind the years of William's work, but he has helpfully grouped the bewildering array of patching into some groups that will assist you as you drink from the fire hose:
Tools for analysis of audio and music represented as MIDI data
Jitter multimedia patches
Tools for live media streaming and interaction over networks
Each of these collected topics opens with folders that contain the patch, any patches (apart from what is installed with the Supporting materials folder you uploaded when you got started), and helpful .doc or .rtf files that describe what the patching does and - helpfully - some comments about where the patches came from when William started working on them. The collection is also happily free of third-party Max objects you're likely to have trouble finding - about the only third-party object in regular use is Miller Puckette's fiddle~ object (Some of the older patches will require Java to be installed, and there is some reference to older equipment, as well. Hey, some of these piece may be older than you are.... :-) )
While some part of me just hates to spoil your fun in terms of making your way through what’s there, I hope you’ll forgive me to providing just a little previewing. Here are just some of the places where William's compositional practice have taken him where he’s dropped a group of Max patches like a trail of breadcrumbs guiding you to a potential future.
Single and multiband pitch detection/centroid analysis (these use the Max fiddle~ object)
Note/duration/velocity/chord analysis of MIDI data
Analysis of line/phrase/motive from MIDI input.
Eight-channel panning, spatialization and performance utilities
Eight-channel play and record and reverb
Samplers
Sequence interleaving/overlay/merging
Sequence to coll recording
Sound file segmenting and concatenation
Triggered event analysis and output
AV broadcast/reception over OSC/network
OSC iPhone_interface
Camera to matrix to MIDI note conversion
Using jit.matrix for musical control
Multiple color tracking
Multiple screen audio/video mixing
It's Your Turn Now
I expect that you've got an idea now of whether or not William's Shared Software project will be of interest to you. Your mileage may vary of course, but trust me — there is nothing else out there in terms of a collection of resources and examples that comes anywhere even close to what's here. Nothing. This is "Let's take up a collection and buy this guy a bottle of 20-year-old Pappy Van Winkle's Reserve Bourbon" material. As William Shakespeare said (and Willy Wonka quoted him):
How far that little candle throws his beams! So shines a good deed in a weary world.
(- The Merchant of Venice)
by Gregory Taylor on June 11, 2019