Modeling Responsive SFX with MaxMsp

Typically, when I'm working on a sound design project for an IOS or web app, things are pretty much static. Sounds are triggered by the user depending on some action, and their volume, duration, and playback speed is all defined by the sound file, and is usually left unchanged in the end product. More and more frequently though, these sounds need to have some dynamic capabilities: change pitch, or duration, or volume according to an interaction with the user in the app (finger swipe, phone tilt, etc). From my end of things though in pre-production, it's hard to model how a 'static' sound will hold up when being looped, or sped up in the actual game/app.  

This week, while working on an upcoming project, I put together a quick patch in Max to model a sort of ADSR of playback speed and duration, using a few line and scaling functions with the groove object.    

Here I'm able to quickly change the rate a sound is being played back at, and also the length of the loop. Both of these variables will change how quickly the sound repeats itself, while the playback speed will also change the sound's pitch. By chaining each line function to the next I'm able to hear an acceleration, sustain, and deceleration of the sound.    

Once the sound is loaded, starting from the left side, the first line object dictates a start and end value and period in ms during for which to change between the two (300, 120 200 in the gray box). Here I start with a playback duration of 300 ms and go to 120 ms, in 200ms. Meaning the length of the clip that I'm looping is shrinking by a little more than half over the course of 200ms. These number then talk to the groove object which is responsible for looping the sound. This models the 'acceleration' of the sound. At the same time these values are scaled and then also sent to the groove object for playback speed. In the first line function, I'm ever so slightly increasing the playback speed to shift up the sound's pitch.

This whole process repeats two more times to mimic the arc of a sound being sped up, sustained and then slowed down. The cool thing is that, if it's done right, the app only requires a single sound to take on much larger dynamic life, which in the end, only takes up a small amount of memory as well.

While this is a useful tool for me to use in testing sounds that will be looped in various way, it's really just glancing at the surface of what sound programing is. Back in the early release of NES, Nintendo hired Koji Kondo to act as the in house composer, sound designer, and sound programmer. One of his big tasks was coming up with creative ways to reuse sounds in order save space on the typically .4MB games!