Max 8.3 and The Ramps That Make Music
Most "non-integer" releases of Max tend to be a grab bag of bug fixes, a few scattered features, and if we're lucky, a new object or two. Max 8.3 includes over 20 new Max objects, and most of them are built around the idea of making music in Max - with special attention given to MSP audio signals as a medium for driving musical parameters. Some of these objects were inspired by modular synthesis and avant garde music ideas, and others are just obvious solutions that came up as we explored this territory. Like a lot of Max features and patches we make, some of these are simply an answer to, "What happens if we try this?"
Rethinking the phasor~
A big theme of these new tools begins with a phasor~ as a source of musical information. A phasor~ is the simplest of oscillators in Max, generating ramps from 0-1 over some amount of time. This simple signal might not sound great hooked up to your speakers, but you can derive lots of useful information about time from these ramps if you have the right tools that respond to it. Imagine you have a phasor~ set to the length of a measure and you can do some simple math to subdivide that ramp into notes. The new subdiv~ object allows you to do this simply, with a couple of very useful bonus features - probability and patterns - that make it an object that will find its way into many patches.
Once you have a musically interesting ramp signal, the next step is thinking about how that could be used to actually generate sound. The most obvious might be to connect that ramp to a wave~ and play back some sample material, but Max 8.3 also offers up a few new ways to respond to this ramp. The shape~ object works similar to line~ with input from a function but is driven by a ramp signal to generate its envelope, and updown~ provides an output similar to trapezoid~ but uses millisecond ramp times instead of scaling to the ramp itself. The simple twist~ also provides a drop-in solution to add a little curve to your ramps and envelopes.
The classic table object now also has a signal-based sibling called table~ that can easily remap incoming signal values and even generate random numbers from incoming pulses similar to how table responds to bang messages.
Among other new ways to store and recall signal values are stash~, mc.pattern~, mc.assign, and mc.chord~. If you're looking for new ways to generate those ramps check out mc.snowphasor~ and ramp~, and don't overlook the new attributes for phasor~ as well. MC also got some serious attention in this update, with new useful objects like mc.generate~, mc.assign, mc.pattern~, and mc.chord~, as well as new easing and randomness functions for generating values across MC signals. I've only scratched the surface, so be sure to dive into help patches, make experiments, and keep an eye on our Instagram for weekly demos of the new objects in action. We look forward to seeing and hearing what you create with these new objects.