Designing Sound - Procedural Audio for Games and Film.

Code examples for “Designing Sound” textbook

Practical 31: Explosions

Pure Data

Explosions - explposion factory

#N canvas 64 7 433 467 10;
#X obj 28 24 bng 20 400 50 0 empty empty boom 0 -6 1 8 -262144 -33289
-33289;
#X obj 335 447 dac~;
#N canvas 131 35 293 592 pressurewave 0;
#X obj 149 525 *~;
#X obj 31 270 sig~ 1;
#X obj 31 292 -~;
#X obj 31 393 *~;
#X obj 1 462 lop~ 10000;
#X obj 31 313 *~ 500;
#X obj 31 415 hip~ 10;
#X obj 1 1 r~ \$0-feedback;
#X obj 1 25 delwrite~ \$0-variabledelay 10000;
#X obj 31 361 vd~ \$0-variabledelay;
#X obj 149 546 s~ \$0-feedback;
#X obj 91 245 -~ 1e-04;
#X obj 91 144 del 3;
#X obj 141 143 * 8000;
#X obj 1 246 inlet~ sound;
#X obj 121 73 inlet delay;
#X obj 141 119 inlet sweep;
#X obj 91 52 inlet trigger;
#X obj 165 478 inlet feedback;
#X obj 1 546 outlet~;
#X obj 121 97 * 100;
#X msg 91 202 1 \, 0 \$1;
#X obj 91 224 vline~;
#X obj 91 181 f 1000;
#X obj 165 502 * 0.99;
#X connect 0 0 10 0;
#X connect 1 0 2 0;
#X connect 2 0 5 0;
#X connect 3 0 6 0;
#X connect 4 0 0 0;
#X connect 4 0 19 0;
#X connect 5 0 9 0;
#X connect 6 0 4 0;
#X connect 7 0 8 0;
#X connect 9 0 3 0;
#X connect 11 0 2 1;
#X connect 11 0 3 1;
#X connect 12 0 23 0;
#X connect 13 0 23 1;
#X connect 14 0 4 0;
#X connect 15 0 20 0;
#X connect 16 0 13 0;
#X connect 17 0 12 0;
#X connect 18 0 24 0;
#X connect 20 0 12 1;
#X connect 21 0 22 0;
#X connect 22 0 11 0;
#X connect 23 0 21 0;
#X connect 24 0 0 1;
#X restore 11 389 pd pressurewave;
#X obj 335 421 clip~ -1 1;
#X obj 114 372 hsl 64 12 0 1 0 1 empty empty feedback 15 6 1 8 -262144
-1 -1 4600 1;
#X obj 309 92 hsl 64 12 0 1 0 1 empty empty vol 15 6 1 8 -262144 -1
-1 2900 1;
#X obj 290 109 *~;
#X obj 290 131 throw~ out;
#X obj 293 153 hsl 64 12 0 1 0 1 empty empty fx 15 6 1 8 -262144 -1
-1 6300 1;
#X obj 274 170 *~;
#X obj 335 397 catch~ out;
#X obj 141 89 hsl 64 12 0 1 0 1 empty empty vol 15 6 1 8 -262144 -1
-1 6300 1;
#X obj 122 106 *~;
#X obj 122 128 throw~ out;
#X obj 115 153 hsl 64 12 0 1 0 1 empty empty fx 15 6 1 8 -262144 -1
-1 2300 1;
#X obj 96 170 *~;
#X obj 8 109 r trig;
#X obj 28 48 s trig;
#X obj 123 1 r trig;
#X obj 291 47 del 30;
#X obj 291 24 r trig;
#X obj 344 7 hsl 64 12 0 1 0 1 empty empty delay 15 6 1 8 -262144 -1
-1 1400 1;
#N canvas 329 191 208 358 fireball 0;
#X obj -36 130 noise~;
#X obj -36 256 *~;
#X obj 39 -52 inlet trigger;
#X obj -36 276 outlet~;
#X obj -36 172 lop~ 70;
#X obj -36 193 lop~ 70;
#X obj -36 151 bp~ 70 1;
#X obj 71 102 *~;
#X obj -36 235 hip~ 5;
#X obj 71 58 line;
#X obj 71 79 sig~;
#X obj 71 144 lop~ 5;
#X obj 39 -31 trigger b b;
#X obj 31 123 + 40;
#X msg 111 28 1 100;
#X obj 39 -8 del 100;
#X msg 39 29 0 8000;
#X obj 31 102 * 100;
#X obj 71 124 *~;
#X obj -36 214 *~ 10;
#X connect 0 0 6 0;
#X connect 1 0 3 0;
#X connect 2 0 12 0;
#X connect 4 0 5 0;
#X connect 5 0 19 0;
#X connect 6 0 4 0;
#X connect 7 0 18 0;
#X connect 7 0 18 1;
#X connect 8 0 1 0;
#X connect 9 0 10 0;
#X connect 9 0 17 0;
#X connect 10 0 7 0;
#X connect 10 0 7 1;
#X connect 11 0 1 1;
#X connect 12 0 15 0;
#X connect 12 1 14 0;
#X connect 13 0 5 1;
#X connect 13 0 4 1;
#X connect 13 0 6 1;
#X connect 14 0 9 0;
#X connect 15 0 16 0;
#X connect 16 0 9 0;
#X connect 17 0 13 0;
#X connect 18 0 11 0;
#X connect 19 0 8 0;
#X restore 291 69 pd fireball;
#N canvas 449 297 190 229 shockwave 0;
#X obj 2 170 cos~;
#X obj 2 87 line~;
#X obj 2 150 wrap~;
#X obj 2 110 *~;
#X obj 2 32 t b b;
#X msg 2 58 0 10;
#X obj 2 190 hip~ 1;
#X obj 2 3 inlet trigger;
#X obj 2 210 outlet~;
#X msg 37 59 1 0;
#X obj 2 130 *~ 5;
#X connect 0 0 6 0;
#X connect 1 0 3 0;
#X connect 1 0 3 1;
#X connect 2 0 0 0;
#X connect 3 0 10 0;
#X connect 4 0 5 0;
#X connect 4 1 9 0;
#X connect 5 0 1 0;
#X connect 6 0 8 0;
#X connect 7 0 4 0;
#X connect 9 0 1 0;
#X connect 10 0 2 0;
#X restore 8 131 pd shockwave;
#X obj 26 153 hsl 64 12 0 1 0 1 empty empty vol 15 6 1 8 -262144 -1
-1 6300 1;
#X obj 7 170 *~;
#X obj 7 192 throw~ out;
#X obj 89 354 hsl 64 12 0 1 0 1 empty empty sweep 15 6 1 8 -262144
-1 -1 4700 1;
#X obj 64 337 hsl 64 12 0 1 0 1 empty empty delay 15 6 1 8 -262144
-1 -1 4200 1;
#X obj 36 313 r trig;
#X obj 10 447 throw~ out;
#X obj 233 7 hsl 64 12 0 1 0 1 empty empty spread 15 6 1 8 -262144
-1 -1 2200 1;
#N canvas 143 170 222 478 blast 0;
#X obj 3 -21 noise~;
#X obj 4 211 *~;
#X obj 4 90 clip~ -1 1;
#X obj 4 46 hip~ 20;
#X obj 4 191 bp~ 6000 1;
#X obj 105 97 *~;
#X obj 4 171 cos~;
#X obj 76 -67 -;
#X obj 28 -62 * 7000;
#X obj 76 -94 swap 1;
#X obj 4 271 hip~ 20;
#X obj 4 251 hip~ 20;
#X obj 4 231 hip~ 20;
#X obj 4 151 *~;
#X obj 20 131 +~ 0.5;
#X obj 4 24 vcf~ 7000 2;
#X obj 40 0 line~;
#X obj 6 -145 inlet;
#X obj 6 -124 t b f f;
#X msg 28 -41 \$1 30;
#X obj 4 68 *~ 50;
#X obj 76 -22 + 1.5;
#X obj 76 -43 * 3.5;
#X obj 4 311 outlet~;
#X obj 4 291 *~ 0.3;
#X obj 105 71 vline~;
#X msg 105 48 1 \, 0 \$1;
#X obj 105 24 f;
#X obj 137 -142 inlet decay;
#X obj 137 -41 * 7000;
#X obj 121 2 *;
#X obj 28 -92 pow 2;
#X connect 0 0 15 0;
#X connect 1 0 12 0;
#X connect 2 0 13 0;
#X connect 3 0 20 0;
#X connect 4 0 1 0;
#X connect 5 0 1 1;
#X connect 5 0 14 0;
#X connect 6 0 4 0;
#X connect 7 0 22 0;
#X connect 7 0 30 0;
#X connect 8 0 19 0;
#X connect 9 0 7 0;
#X connect 9 1 7 1;
#X connect 10 0 24 0;
#X connect 11 0 10 0;
#X connect 12 0 11 0;
#X connect 13 0 6 0;
#X connect 14 0 13 1;
#X connect 15 0 3 0;
#X connect 16 0 15 1;
#X connect 17 0 18 0;
#X connect 18 0 27 0;
#X connect 18 1 31 0;
#X connect 18 2 9 0;
#X connect 19 0 16 0;
#X connect 20 0 2 0;
#X connect 21 0 15 2;
#X connect 22 0 21 0;
#X connect 24 0 23 0;
#X connect 25 0 5 0;
#X connect 25 0 5 1;
#X connect 26 0 25 0;
#X connect 27 0 26 0;
#X connect 28 0 29 0;
#X connect 29 0 30 1;
#X connect 30 0 27 1;
#X connect 31 0 8 0;
#X restore 123 62 pd blast;
#X obj 189 386 combsweep;
#X obj 189 282 sdel~;
#X obj 190 423 *~;
#X obj 222 221 hsl 64 12 0 1 0 1 empty empty delay 15 6 1 8 -262144
-1 -1 3200 1;
#X obj 219 238 * 100;
#X obj 250 348 hsl 64 12 0 1 0 1 empty empty width 15 6 1 8 -262144
-1 -1 4300 1;
#X obj 218 304 r trig;
#X obj 209 408 hsl 64 12 0 1 0 1 empty empty vol 15 6 1 8 -262144 -1
-1 4100 1;
#X obj 190 447 throw~ out;
#X obj 96 192 throw~ fx;
#X obj 274 192 throw~ fx;
#X obj 364 344 catch~ fx;
#X obj 335 367 s~ pfx;
#X obj 11 291 r~ pfx;
#X obj 384 367 s~ cfx;
#X obj 188 259 r~ cfx;
#X obj 10 426 *~;
#X obj 29 411 hsl 64 12 0 1 0 1 empty empty vol 15 6 1 8 -262144 -1
-1 2400 1;
#X obj 218 326 del 30;
#X obj 258 267 hsl 64 12 0 1 0 1 empty empty delay 15 6 1 8 -262144
-1 -1 2900 1;
#X obj 255 284 * 200;
#X obj 247 365 * 20;
#X obj 177 46 hsl 64 12 0 1 0 1 empty empty decay 15 6 1 8 -262144
-1 -1 2500 1;
#X obj 341 24 * 500;
#N canvas 585 385 245 430 blast 0;
#X obj 16 111 / 200;
#X obj 44 -71 del 80;
#X obj 120 11 random 5;
#X obj 120 33 + 25;
#X obj 120 -15 del 80;
#X obj 16 -131 random 8;
#X obj 16 -109 + 8;
#X obj 44 -48 random 10;
#X obj 44 -26 + 15;
#X obj 157 -132 random 100;
#X obj 81 -131 random 50;
#X obj 75 -173 t b b b b b;
#X obj 75 -202 del 30;
#X obj 112 -222 + 5;
#X obj 16 135 outlet noiseval;
#X obj 11 -272 inlet trigger;
#X obj 112 -273 inlet spread;
#X obj 158 -173 * 300;
#X obj 112 -243 * 100;
#X connect 0 0 14 0;
#X connect 1 0 4 0;
#X connect 1 0 7 0;
#X connect 2 0 3 0;
#X connect 3 0 0 0;
#X connect 4 0 2 0;
#X connect 5 0 6 0;
#X connect 6 0 0 0;
#X connect 7 0 8 0;
#X connect 8 0 0 0;
#X connect 9 0 4 1;
#X connect 10 0 1 1;
#X connect 11 0 1 0;
#X connect 11 1 5 0;
#X connect 11 2 10 0;
#X connect 11 3 9 0;
#X connect 12 0 11 0;
#X connect 13 0 12 1;
#X connect 15 0 12 0;
#X connect 16 0 17 0;
#X connect 16 0 18 0;
#X connect 17 0 10 1;
#X connect 17 0 9 1;
#X connect 18 0 13 0;
#X restore 123 25 pd blast control;
#X connect 0 0 17 0;
#X connect 2 0 49 0;
#X connect 3 0 1 0;
#X connect 3 0 1 1;
#X connect 4 0 2 4;
#X connect 5 0 6 1;
#X connect 6 0 7 0;
#X connect 8 0 9 1;
#X connect 9 0 43 0;
#X connect 10 0 3 0;
#X connect 11 0 12 1;
#X connect 12 0 13 0;
#X connect 14 0 15 1;
#X connect 15 0 42 0;
#X connect 16 0 23 0;
#X connect 18 0 57 0;
#X connect 19 0 22 0;
#X connect 20 0 19 0;
#X connect 21 0 56 0;
#X connect 22 0 6 0;
#X connect 22 0 9 0;
#X connect 23 0 25 0;
#X connect 24 0 25 1;
#X connect 25 0 26 0;
#X connect 27 0 2 3;
#X connect 28 0 2 2;
#X connect 29 0 2 1;
#X connect 31 0 57 1;
#X connect 32 0 12 0;
#X connect 32 0 15 0;
#X connect 33 0 35 0;
#X connect 34 0 33 0;
#X connect 35 0 41 0;
#X connect 36 0 37 0;
#X connect 37 0 34 1;
#X connect 38 0 54 0;
#X connect 39 0 51 0;
#X connect 40 0 35 1;
#X connect 44 0 45 0;
#X connect 44 0 47 0;
#X connect 46 0 2 0;
#X connect 48 0 34 0;
#X connect 49 0 30 0;
#X connect 50 0 49 1;
#X connect 51 0 33 1;
#X connect 52 0 53 0;
#X connect 53 0 51 1;
#X connect 54 0 33 2;
#X connect 55 0 32 1;
#X connect 56 0 19 1;
#X connect 57 0 32 0;

Download explosion-factory1.pd.

Explosions - static delay (needed abstraction)

#N canvas 0 0 450 300 10;
#X obj 123 112 delread~ \$0-aa;
#X obj 124 139 outlet~;
#X obj 124 54 inlet~;
#X obj 123 82 delwrite~ \$0-aa 3000;
#X obj 227 48 inlet;
#X connect 0 0 1 0;
#X connect 2 0 3 0;
#X connect 4 0 0 0;

Download sdel~.pd.

Explosions - moving comb filer (needed abstraction)

#N canvas 0 0 255 340 10;
#X obj 27 249 vd~ x;
#X obj 71 248 vd~ x;
#X obj 117 247 vd~ x;
#X obj 117 222 +~;
#X obj 71 185 +~;
#X obj 119 53 vline~;
#X obj 4 7 inlet~;
#X obj 71 318 outlet~;
#X obj 119 6 inlet;
#X obj 4 29 delwrite~ x 120;
#X obj 133 157 *~;
#X obj 71 158 +~ 10;
#X obj 149 132 inlet width;
#X msg 119 28 1 \, 0 5000;
#X obj 71 53 sig~ 1;
#X obj 71 84 -~;
#X obj 71 105 *~ 4;
#X obj 71 126 +~ 1e-04;
#X obj 71 278 *~;
#X obj 71 298 *~ 0.33;
#X connect 0 0 18 0;
#X connect 1 0 18 0;
#X connect 2 0 18 0;
#X connect 3 0 2 0;
#X connect 4 0 1 0;
#X connect 4 0 3 0;
#X connect 5 0 15 1;
#X connect 5 0 18 1;
#X connect 6 0 9 0;
#X connect 8 0 13 0;
#X connect 10 0 4 1;
#X connect 10 0 3 1;
#X connect 11 0 0 0;
#X connect 11 0 4 0;
#X connect 12 0 10 1;
#X connect 13 0 5 0;
#X connect 14 0 15 0;
#X connect 15 0 16 0;
#X connect 16 0 17 0;
#X connect 17 0 11 0;
#X connect 17 0 10 0;
#X connect 18 0 19 0;
#X connect 19 0 7 0;

Download combsweep.pd.

Audio

Explosion effects

From a war scene example with explosions and gunfire.

Download explosions.wav.