create thunder sound ?

    Oct 27 2009 | 10:43 am
    I was wondering if anyone has tried to build a patch that simulate the thunder sound. I have noticed that in Propellerhead Reason, they have a patche for Subtractor which uses oscillators, FM, LFO, filters, etc to create very real thunder sound. I am very interested to know how this thunder sound can be created in Max/MSP. Any idea ? Thanks.

    • Oct 27 2009 | 12:00 pm
      You might want to have a look at Andy Farnell's _Designing Sound_. A great book written with Pure Data in mind, but the examples are easily translated to Max:
      Best, Charles
    • Oct 27 2009 | 4:06 pm
      seems to be very interesting.
    • Oct 28 2009 | 4:29 pm
      I just find this link for the codes of various ambient sound in pd.
      Unfortunately, it does not seem to be that easy to me to port these codes to max msp. I am not familiar with pd at all.
      It seems to me that not many people are interested to synthesize ambient sounds of real life such as explosion, thunder, rain, bubble sound, etc. with Max/MSP. I can't even find one Max/MSP patch or related discussion about it through google.
      Is it useless to synthesize sounds of daily life in the field of film sound design ? Maybe most sound designers would just record the real sounds instead of simulating them by programing.
    • Oct 28 2009 | 6:15 pm
      a lot of these sounds are really complicated, take a look at the sound of thunder on a sonogram and you'll see what i mean. But don't let that put you off trying, why not load an actual thunder sound next to what you're synthesising and AB them?
    • Oct 28 2009 | 10:26 pm
      Cheng Chien-Wen wrote on Wed, 28 October 2009 17:29I just find this link for the codes of various ambient sound in pd.
      Unfortunately, it does not seem to be that easy to me to port these codes to max msp. I am not familiar with pd at all.
      There are similar objects in max. I'm not sure if max's filters are exactly the same, but they should sound similar...
      Pd -> Max:
      bp~ -> reson~ (resonant bandpass)
      lop~ -> onepole~ (lowpass)
      hip~ -> onepole~ +~ onepole *~ -1 (?) (highpass)
      env~ -> average~ (rms-mode) (scaled to 1. = 100 dB)
      switch~ -> mute~ (only works connected to a subpatch)
      A tricky one is ead~ which is a exponential attack/decay envelope external for Pd. I suppose, you'll have to build that one yourself.
      Ah, and be sure to make Pd's integer arguments float in max, as all numbers in Pd are float!
      good luck,
    • Oct 28 2009 | 10:48 pm
      You can use [curve~] to imitate the [ead~] object from PureData.
    • Oct 29 2009 | 2:11 am
      wow, cool
      i've never noticed the existence of the curve~ object.
      ...and i always have to remind myself of just how important envelopes are for synthesis.
      Cut off the first milliseconds of f.e. classical instruments and it will get real hard to identify them.
      It would be great, if there was something like [function] or [env] with an additional curve-shape value per segment...hmmm
      *brain starts drifting*
    • Oct 29 2009 | 9:58 am
      That would be the ej.function [jsui] available here. Check it out, it's awesome!
    • Oct 29 2009 | 10:17 am
      Quote:I just find this link for the codes of various ambient sound in pd.
      Unfortunately, it does not seem to be that easy to me to port these codes to max msp. I am not familiar with pd at all.
      if you open the patches in pd then save them with a .pat extension they will be in the max4 format. Then you can open them in Max4 or 5. Unfortunately there is normally some errors in the process, but it might be a start.
    • Oct 29 2009 | 11:29 am
      is there other ressources like that on web for max/msp ?
    • Oct 29 2009 | 3:28 pm
      A while back I was translating some of the Andy Farnell's patches and Stefan Tiedje's St.ools abstractions came in very handy. This library contains a lot of the Pd externals used in the tutorials.
    • Oct 31 2009 | 3:32 am
      Comparing Andy Farnell's thunder sound with that of the Subtractor synthesizer in Propellerhead Reason, the former still sounds fake but the later sounds better than real. Neither of these two codes use sound samples. It seems that Andy Farnell's code is still not perfect. Apparently, there are some other better formulas. (But some of his formula sounds do sound real.)
      Is there anyone who knows both Propellerhead Reason and Max/MSP ?
      I am thinking of building another code in Max/MSP, following Subtractor's thunder formula, but there is still something unclear in the manual of Subtractor.
    • Oct 31 2009 | 4:14 pm
      a patch i found long time ago on a french website "audiofanzine"
      unfortunatelly there's no name of the author
      here's to you to improve and share
      you'll need the soundfile attached made with alu. foil or a candy paper ?
      (it's an mp3)
      have fun
    • Apr 24 2013 | 1:28 pm
      Could anyone, tell me the analogs of PD's [delread]/[delwrite] and [catch]/[throw] in max?
    • Apr 24 2013 | 3:45 pm
      an educated guess would be [tapout~]/[tapin~] and [receive]/[send]; but check the last two. Do PD objects not have reference or help notes which describe their function? And why did you post at the bottom of an old thread?
    • Apr 24 2013 | 4:12 pm
      You would use [send~] and [receive~]. You can send multiple [send~] outputs to a single [receive~] in Max but not in Pd.
      Also, I would probably just use [svf~] as it provides lowpass, hipass, bandpass, and notch (all with resonance) out of the box. It's just a little easier if you're still figuring out filters.
      I second the use of [curve~]. Maybe even consider the use of [function] which will allow you to define visually what you want your envelope to look like.
      When converting Pd patches, the one thing that tripped me up is that anywhere you specify a float without a decimal, you must suffix with a decimal point otherwise Max will think you're talking about an integer. Also whenever multiplying and you don't specify a number, provide "0." otherwise Max will think you want integer multiplication.
    • Apr 24 2013 | 4:51 pm
      From what I can figure out from the Reason patch (I attached a screenshot), it is using waveform 13 (a "harmonically rich waveform suited for organ sounds"), which I am using a low-passed saw to approximate.
      It is then going through a noise-based LFO (which I am using a [noise~] going through a [sah~] to be able to vary the "rate" of the noise) which is modulating the "mix" of the sound (ring modulation).
      It is finally going through a lowpass filter modulated by an envelope.
      I threw together a crappy patch in the 15 minutes on my train ride based on the Reason patch. It sucks but I think that someone on here could run with it.
      It is possible, and not that difficult to do sound design in Max. I don't claim to be an expert.
      One last thing. [bp~] in Pd has a "Q" value which can be greater than 1 but in Max, [svf~]'s Q value must be between 0. and 1.
    • Apr 24 2013 | 6:38 pm
      I forgot a couple things in my last post. The noise modulating the mix in the above is not ring modulation but more general AM IIRC, because the modulation doesn't go negative.
      Also the original Reason patch sounds like it is doing some overdriving of some sort. Using [clip~] or [tanh~] and passing in a signal that goes beyond +/- 1.0 might yield good results.
      Also my patch doesn't handle the amplitude envelope so you would want to add that.
      I might try and take another stab later. Good luck.
    • Mar 06 2017 | 10:33 pm
      I've been working on a thunder simulator for Max based on Andy Farnell's model and info from this forum thread. Here's a video of what I've come up with:
      If you'd like the code drop me an email at and i'll send it over.