Forums > MaxMSP

create thunder sound ?

October 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.

October 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

October 27, 2009 | 4:06 pm

seems to be very interesting.

October 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.

October 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?

October 28, 2009 | 10:26 pm
Cheng Chien-Wen wrote on Wed, 28 October 2009 17:29
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.

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,

October 28, 2009 | 10:48 pm

You can use [curve~] to imitate the [ead~] object from PureData.


October 29, 2009 | 2:11 am

wow, cool Smile
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*

October 29, 2009 | 9:58 am

That would be the ej.function [jsui] available here. Check it out, it’s awesome!


October 29, 2009 | 10:17 am
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.


October 29, 2009 | 11:29 am

is there other ressources like that on web for max/msp ?

October 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.


October 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.

October 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

— Pasted Max Patch, click to expand. —
April 24, 2013 | 1:28 pm

Could anyone, tell me the analogs of PD’s [delread]/[delwrite] and [catch]/[throw] in max?

April 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?


April 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.

April 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.


April 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.

Viewing 19 posts - 1 through 19 (of 19 total)

Forums > MaxMSP