Sustain Patch (to be used on live woodwinds)

    Sep 27 2012 | 8:11 pm
    Hello All!
    I have been experimenting with building "sustain patches" to take sounds from a live instrument and sustain them for an adjustable amount of time--something that would work much like a sustain pedal on a piano would, but be able to used on a flute, clarinet, etc. I have some completed patches, but they are all rather clunky, to say the least.
    Can anyone help walk me through the process/give any pointers? Does anyone have a demo patch or download that would do something like this/get me on the right track? I have been actively working with MAX for 4 months, so am a relative newbie. Thanks very much for any help you can throw my way!

    • Sep 27 2012 | 9:37 pm
      Hi Davyray This is a cool concept, and a few approaches spring to mind. I can't post example patches for all of these, but hopefully they can start you looking into the right things (or maybe they're not?), or start further discussion here.
      a) A big reverb Most simply, take a mic signal from your clarinet or flute, and use a pedal to send/mute that signal going into a big reverb. This might work for your purposes, but might not sound like anything special.
      b) Sample and time-stretch parts of the sound Send the instrument signal into a constantly recording buffer. Whenever the pedal is pressed (or however the effect is activated), that buffer is granulated or phase-vocoded to "freeze time" on the most recent sound it heard. This gives you a static sound, which could be a bit ugly, but you of course have control over the sound that results from the "freezing", either fading it out nicely or even making your granulator or phase-vocoder trace through time as slowly as you like to the next point of silence. Both these processes can result in possibly nasty sonic artifacts. Phase vocoder might be good on clarinet though, and granular for flute. Give these effects a look...
      c) Loads of parallel reverbs A reverb just being switched on and off might be a bit simplistic and smudgy. Perhaps make a subpatcher that lets (say) half a second of sound in, fade that half-second in then out, and feed that to a reverb with a lot of feedback. Use a few of these subpatchers in a poly~ perhaps, with each half-second's worth of reverb individually feeding back on itself, and you can sustain certain bits of the sound for ages without them just clouding into each other in one big reverb. [This idea is half-thought-through and might take a lot of tinkering.]
      Any other suggestions?
    • Sep 27 2012 | 10:28 pm
      Hi zh!
      Thanks so much for your expertise, I really appreciate it. Do you have any ideas on how a simpleton like me could start testing out the "parallel reverb" idea from square one?
      Thanks again!
    • Sep 27 2012 | 11:01 pm
      this is in ableton live but the ideas could be used anywhere a took a picture with the midi mapping information and uploaded it below
      this is quite a bit of fun to mess around with
      while it may not be just what you want it may give you some inspiration
    • Sep 28 2012 | 11:05 am
      A nice out-of-the-box solution is the Olaf Matthes freeverb~ object, which has a 'freeze' parameter. The object seems to have disappeared from it's original source, but you can find it as part of Jamoma - see
      I don't know if this feature made it into the new Freeverb3 plug-ins which you can find on Sourceforge - there are several plugs there, including a nice convolution reverb, but none of the ones I've tried so far seem to include that freeze button.
      Alternatively I built a Pluggo wrapper for it years ago, which may work for you, but you're probably better off getting the object via Jamoma Cheers Roger
    • Sep 28 2012 | 12:20 pm
      Elaborating on some already touched on methods here: On relatively stable (non-evolving) sounds, some of the most pure 'freezes' can be had by frequency domain methods (frame capture). Once upon a time I used to use fiddle~ to do that. Do a search on J. F. Charles, who a while back uploaded a whole suite of jitter based spectral patches (maybe in projects). Any object/patch that enables a spectral capture (or resynthesis) could be coaxed into doing something like this. Additionally or alternately, If you are on MAc I would also recommend the Mike Norris Spectral Magic plugs, at least a couple of which will do what you are after. I would second Roger's suggesting of the old freeverb~ freeze - that was pretty good. A not too shabby third is to use a granulator, like KTGranulator - which is free, and based on the legendary Audiomulch DLGranulator (and has a freeze function). You may need to experiment with the variables a bit to get an appropriate result. There really are quite a lot of options...
    • Oct 02 2012 | 9:47 pm
      I downloaded the au~ external, as well as the "Spectral Magic" from Mike Norris' website, but I have no clue how to get the au~ to work/how to open in correctly in MSP, and how to link the two together to....actually get them to do what they should on a live sound. Can anyone give me some further instructions (even something basic and step-by step would be immensely helpful)? Thanks to everyone again for guiding me through this! davyray1
    • Oct 02 2012 | 9:51 pm
      Will the au~ also work on MAX 6?
    • Oct 03 2012 | 9:17 am
      Hi everyone
      au~ should, in theory, work in Max 6, but to be honest I haven't tested it yet. I hope to get a copy in the next few weeks to test it out.
      In order to use au~, simply install it in the Cycling 74->mspexternals folder, then create an object in Max called 'au~' followed by the name of the Audio Unit you want. If the AU name has a space in it, you'll need to enclose it in double quotes. There are other arguments and messages as well - check the help file.
      SoundMagic Spectral has VERY nice sustains — I suggest the following effects, with a large FFT size and randomize phases switched on (I recommend an FFT size of 16384):
      Spectral Dronemaker Spectral Gate + Hold Spectral Blurring Spectral Freezing
      These all give beautiful sustains using various different parameters.
      With au~, you can also chain the output of one plugin to the input of another.
    • Oct 03 2012 | 9:37 am
      Welcome aboard mnorris and thanks for your great plug-ins. They've been most useful to me for one....
      As far as loading/running AUplug-ins in Max 6 in general, the official word is to use the VST~ object. Sounds counterintuitive but works well enough. There shouldn't be any need to use a third party au~ object.
    • Oct 03 2012 | 1:15 pm
      There is an audiounit~ object in Max 6! Sadly, the Spectral Freeze plug crashed when I tried it in au~ in Max 6, and wouldn't load properly into audiounit~ - the parameters would not display, and the 'open' message didn't open the interface, so I assume it didn't load.
      Fwiw, I located an old copy of the Freeverb AU, which unlike the current Freeverb3, does have a 'freeze' parameter, and it works fine inaudiounit~ in Max 6. But being basically a reverb plug, it probably doesn't make as good a sustainer as the Spectral plugs, Cheers Roger
      Scrub that - just tried again and Spectral plugs are working just fine in audiounit~ ! Cheers Roger
      Crap - no they're not. Changed FFT size and it crashed...
    • Oct 03 2012 | 2:55 pm
      I think a granular method would be the best for this, then you can feed the frozen+dry signal in to reverb after.
      As ZH says, I would have some kind of trigger that would allow you to define the start and end points that you want the granular playback to move around in. That's actually the basis of some software I've already made.
      I'd think about using delays too, if you've got a sustained note coming from a granular synth, then you feed it in to 4 delays with different times you can get a dense sound really quickly.
    • Feb 14 2017 | 2:36 pm
      i cant get the dronemaker to load into max7... it doesnt even find it in its location lib.../.../plug-ins... any idea why this might be?