Designing Sound - Procedural Audio for Games and Film.

Code examples for “Designing Sound” textbook

Practical 11: Fire

Pure Data

Fire - cracking, attempt 1

#N canvas 209 480 62 135 10;
#X obj 0 88 *~;
#X msg 0 0 bang;
#X obj 0 116 dac~;
#X obj 16 64 noise~;
#X obj 0 43 line~;
#X msg 0 22 1 \, 0 20;
#X connect 0 0 2 0;
#X connect 0 0 2 1;
#X connect 1 0 5 0;
#X connect 3 0 0 1;
#X connect 4 0 0 0;
#X connect 5 0 4 0;

Download fire_crackling1.pd.

Fire - cracking, attempt 2

#N canvas 303 372 120 265 10;
#X obj 0 219 *~;
#X obj 9 50 env~;
#X obj 9 26 lop~ 1;
#X msg 60 116 bang;
#X obj 9 73 moses 50;
#X obj 60 94 moses 51;
#X obj 0 246 dac~;
#X obj 0 0 noise~;
#X obj 60 158 line~;
#X obj 60 186 *~;
#X msg 60 137 1 \, 0 20;
#X connect 0 0 6 0;
#X connect 0 0 6 1;
#X connect 1 0 4 0;
#X connect 2 0 1 0;
#X connect 3 0 10 0;
#X connect 4 1 5 0;
#X connect 5 0 3 0;
#X connect 7 0 2 0;
#X connect 7 0 0 0;
#X connect 8 0 9 0;
#X connect 8 0 9 1;
#X connect 9 0 0 1;
#X connect 10 0 8 0;

Download fire_crackling2.pd.

Fire - cracking, attempt 3

#N canvas 119 343 171 347 10;
#X obj 0 303 *~;
#X obj 53 52 env~;
#X obj 53 28 lop~ 1;
#X msg 104 118 bang;
#X obj 53 75 moses 50;
#X obj 104 96 moses 51;
#X obj 104 141 random 30;
#X obj 0 328 dac~;
#X obj 41 0 noise~;
#X obj 0 224 line~;
#X msg 0 203 1 \, 0 \$1;
#X obj 0 251 *~;
#X obj 73 223 + 1500;
#X obj 73 201 * 500;
#X obj 0 278 *~;
#X obj 104 163 t f f;
#X obj 41 247 bp~ 2000 1;
#X connect 0 0 7 0;
#X connect 0 0 7 1;
#X connect 1 0 4 0;
#X connect 2 0 1 0;
#X connect 3 0 6 0;
#X connect 4 1 5 0;
#X connect 5 0 3 0;
#X connect 6 0 15 0;
#X connect 8 0 2 0;
#X connect 8 0 16 0;
#X connect 9 0 11 0;
#X connect 9 0 11 1;
#X connect 10 0 9 0;
#X connect 11 0 14 0;
#X connect 11 0 14 1;
#X connect 12 0 16 1;
#X connect 13 0 12 0;
#X connect 14 0 0 0;
#X connect 15 0 10 0;
#X connect 15 1 13 0;
#X connect 16 0 0 1;

Download fire_crackling3.pd.

Fire - hissing, attempt 1

#N canvas 62 455 60 110 10;
#X obj 0 63 *~;
#X obj 15 21 noise~;
#X obj 0 92 dac~;
#X obj 0 0 noise~;
#X obj 15 42 lop~ 1;
#X connect 0 0 2 0;
#X connect 0 0 2 1;
#X connect 1 0 4 0;
#X connect 3 0 0 0;
#X connect 4 0 0 1;

Download fire_hissing1.pd.

Fire - hissing, attempt 2

#N canvas 62 455 62 157 10;
#X obj 0 112 *~;
#X obj 15 21 noise~;
#X obj -1 139 dac~;
#X obj 0 0 noise~;
#X obj 15 42 lop~ 1;
#X obj 16 67 *~;
#X obj 16 89 *~ 300;
#X connect 0 0 2 0;
#X connect 0 0 2 1;
#X connect 1 0 4 0;
#X connect 3 0 0 0;
#X connect 4 0 5 0;
#X connect 4 0 5 1;
#X connect 5 0 6 0;
#X connect 6 0 0 1;

Download fire_hissing2.pd.

Fire - hissing, attempt 3

#N canvas 62 455 121 199 10;
#X obj 58 152 *~;
#X obj 57 179 dac~;
#X obj 45 -1 noise~;
#X obj 75 29 lop~ 1;
#X obj 75 79 *~;
#X obj 0 30 hip~ 1000;
#X obj 75 105 *~;
#X obj 75 52 *~ 10;
#X obj 75 128 *~ 600;
#X connect 0 0 1 0;
#X connect 0 0 1 1;
#X connect 2 0 3 0;
#X connect 2 0 5 0;
#X connect 3 0 7 0;
#X connect 4 0 6 0;
#X connect 4 0 6 1;
#X connect 5 0 0 0;
#X connect 6 0 8 0;
#X connect 7 0 4 0;
#X connect 7 0 4 1;
#X connect 8 0 0 1;

Download fire_hissing3.pd.

Fire - lapping, attempt 1

#N canvas 106 490 52 65 10;
#X obj 0 47 dac~;
#X obj 0 0 noise~;
#X obj 0 22 lop~ 30;
#X connect 1 0 2 0;
#X connect 2 0 0 0;
#X connect 2 0 0 1;

Download fire_lapping1.pd.

Fire - lapping, attempt 2

#N canvas 85 413 59 88 10;
#X obj 0 21 bp~ 30 5;
#X obj 0 70 dac~;
#X obj 0 0 noise~;
#X obj 0 44 *~ 10;
#X connect 0 0 3 0;
#X connect 2 0 0 0;
#X connect 3 0 1 0;
#X connect 3 0 1 1;

Download fire_lapping2.pd.

Fire - lapping, attempt 3

#N canvas 17 288 102 168 10;
#X obj 0 84 clip~ -0.9 0.9;
#X obj 0 105 hip~ 25;
#X obj 0 63 hip~ 25;
#X obj 0 21 bp~ 30 5;
#X obj 0 42 *~ 100;
#X obj 0 126 *~ 0.6;
#X obj 0 150 dac~;
#X obj 0 0 noise~;
#X connect 0 0 1 0;
#X connect 1 0 5 0;
#X connect 2 0 0 0;
#X connect 3 0 4 0;
#X connect 4 0 2 0;
#X connect 5 0 6 0;
#X connect 5 0 6 1;
#X connect 7 0 3 0;

Download fire_lapping3.pd.

Fire - Generator as abstraction

#N canvas 0 0 241 119 10;
#N canvas 0 0 242 473 crackles 0;
#X obj 64 394 *~;
#X obj 77 104 env~;
#X obj 77 80 lop~ 1;
#X msg 128 170 bang;
#X obj 77 127 moses 50;
#X obj 128 148 moses 51;
#X obj 128 193 random 30;
#X obj 128 237 line~;
#X msg 128 216 1 \, 0 \$1;
#X obj 128 265 *~;
#X obj 96 325 + 1500;
#X obj 64 349 bp~ 4000 1;
#X obj 95 303 * 500;
#X obj 64 419 outlet~;
#X obj 63 52 inlet~;
#X connect 0 0 13 0;
#X connect 1 0 4 0;
#X connect 2 0 1 0;
#X connect 3 0 6 0;
#X connect 4 1 5 0;
#X connect 5 0 3 0;
#X connect 6 0 8 0;
#X connect 6 0 12 0;
#X connect 7 0 9 0;
#X connect 7 0 9 1;
#X connect 8 0 7 0;
#X connect 9 0 0 1;
#X connect 10 0 11 1;
#X connect 11 0 0 0;
#X connect 12 0 10 0;
#X connect 14 0 2 0;
#X connect 14 0 11 0;
#X restore 0 40 pd crackles;
#N canvas 0 0 450 300 hissing 0;
#X obj 106 188 *~;
#X obj 141 57 lop~ 1;
#X obj 142 107 *~;
#X obj 66 58 hip~ 1000;
#X obj 141 133 *~;
#X obj 142 80 *~ 10;
#X obj 141 157 *~ 600;
#X obj 105 222 outlet~;
#X obj 111 27 inlet~;
#X connect 0 0 7 0;
#X connect 1 0 5 0;
#X connect 2 0 4 0;
#X connect 2 0 4 1;
#X connect 3 0 0 0;
#X connect 4 0 6 0;
#X connect 5 0 2 0;
#X connect 5 0 2 1;
#X connect 6 0 0 1;
#X connect 8 0 1 0;
#X connect 8 0 3 0;
#X restore 84 40 pd hissing;
#N canvas 0 0 170 271 lapping 0;
#X obj 21 109 clip~ -0.9 0.9;
#X obj 21 129 hip~ 25;
#X obj 21 86 hip~ 25;
#X obj 21 40 bp~ 30 5;
#X obj 21 65 *~ 100;
#X obj 21 153 *~ 0.6;
#X obj 20 177 outlet~;
#X obj 21 12 inlet~;
#X connect 0 0 1 0;
#X connect 1 0 5 0;
#X connect 2 0 0 0;
#X connect 3 0 4 0;
#X connect 4 0 2 0;
#X connect 5 0 6 0;
#X connect 7 0 3 0;
#X restore 168 40 pd lapping;
#X obj 83 0 noise~;
#X obj 86 101 outlet~;
#X obj 0 66 *~ 0.2;
#X obj 168 66 *~ 0.6;
#X obj 85 66 *~ 0.3;
#X connect 0 0 5 0;
#X connect 1 0 7 0;
#X connect 2 0 6 0;
#X connect 3 0 0 0;
#X connect 3 0 1 0;
#X connect 3 0 2 0;
#X connect 5 0 4 0;
#X connect 6 0 4 0;
#X connect 7 0 4 0;

Download fire_generator.pd.

Fire - complete fire scene

#N canvas 37 416 358 107 10;
#X obj 282 22 hip~ 1000;
#X obj 87 22 bp~ 1200 0.6;
#X obj 180 22 bp~ 2600 0.4;
#X obj 0 22 bp~ 600 0.2;
#X obj 134 83 dac~;
#N canvas 27 401 450 300 firegen 0;
#N canvas 0 0 242 473 crackles 0;
#X obj 64 394 *~;
#X obj 77 104 env~;
#X obj 77 80 lop~ 1;
#X msg 128 170 bang;
#X obj 77 127 moses 50;
#X obj 128 148 moses 51;
#X obj 128 193 random 30;
#X obj 128 237 line~;
#X msg 128 216 1 \, 0 \$1;
#X obj 128 265 *~;
#X obj 96 325 + 1500;
#X obj 64 349 bp~ 4000 1;
#X obj 95 303 * 500;
#X obj 64 419 outlet~;
#X obj 63 52 inlet~;
#X connect 0 0 13 0;
#X connect 1 0 4 0;
#X connect 2 0 1 0;
#X connect 3 0 6 0;
#X connect 4 1 5 0;
#X connect 5 0 3 0;
#X connect 6 0 8 0;
#X connect 6 0 12 0;
#X connect 7 0 9 0;
#X connect 7 0 9 1;
#X connect 8 0 7 0;
#X connect 9 0 0 1;
#X connect 10 0 11 1;
#X connect 11 0 0 0;
#X connect 12 0 10 0;
#X connect 14 0 2 0;
#X connect 14 0 11 0;
#X restore 57 96 pd crackles;
#N canvas 0 0 450 300 hissing 0;
#X obj 106 188 *~;
#X obj 141 57 lop~ 1;
#X obj 142 107 *~;
#X obj 66 58 hip~ 1000;
#X obj 141 133 *~;
#X obj 142 80 *~ 10;
#X obj 141 157 *~ 600;
#X obj 105 222 outlet~;
#X obj 111 27 inlet~;
#X connect 0 0 7 0;
#X connect 1 0 5 0;
#X connect 2 0 4 0;
#X connect 2 0 4 1;
#X connect 3 0 0 0;
#X connect 4 0 6 0;
#X connect 5 0 2 0;
#X connect 5 0 2 1;
#X connect 6 0 0 1;
#X connect 8 0 1 0;
#X connect 8 0 3 0;
#X restore 149 96 pd hissing;
#N canvas 0 0 170 271 lapping 0;
#X obj 21 109 clip~ -0.9 0.9;
#X obj 21 129 hip~ 25;
#X obj 21 86 hip~ 25;
#X obj 21 40 bp~ 30 5;
#X obj 21 65 *~ 100;
#X obj 21 153 *~ 0.6;
#X obj 20 177 outlet~;
#X obj 21 12 inlet~;
#X connect 0 0 1 0;
#X connect 1 0 5 0;
#X connect 2 0 0 0;
#X connect 3 0 4 0;
#X connect 4 0 2 0;
#X connect 5 0 6 0;
#X connect 7 0 3 0;
#X restore 246 97 pd lapping;
#X obj 148 61 noise~;
#X text 203 60 factor common noise;
#X text 305 129 mix levels;
#X obj 151 154 outlet~;
#X obj 57 123 *~ 0.2;
#X obj 246 123 *~ 0.6;
#X obj 150 122 *~ 0.3;
#X text 144 30 fire generator;
#X connect 0 0 7 0;
#X connect 1 0 9 0;
#X connect 2 0 8 0;
#X connect 3 0 0 0;
#X connect 3 0 1 0;
#X connect 3 0 2 0;
#X connect 7 0 6 0;
#X connect 8 0 6 0;
#X connect 9 0 6 0;
#X restore 87 -3 pd firegen;
#N canvas 27 401 424 180 firegen 0;
#N canvas 0 0 242 473 crackles 0;
#X obj 64 394 *~;
#X obj 77 104 env~;
#X obj 77 80 lop~ 1;
#X msg 128 170 bang;
#X obj 77 127 moses 50;
#X obj 128 148 moses 51;
#X obj 128 193 random 30;
#X obj 128 237 line~;
#X msg 128 216 1 \, 0 \$1;
#X obj 128 265 *~;
#X obj 96 325 + 1500;
#X obj 64 349 bp~ 4000 1;
#X obj 95 303 * 500;
#X obj 64 419 outlet~;
#X obj 63 52 inlet~;
#X connect 0 0 13 0;
#X connect 1 0 4 0;
#X connect 2 0 1 0;
#X connect 3 0 6 0;
#X connect 4 1 5 0;
#X connect 5 0 3 0;
#X connect 6 0 8 0;
#X connect 6 0 12 0;
#X connect 7 0 9 0;
#X connect 7 0 9 1;
#X connect 8 0 7 0;
#X connect 9 0 0 1;
#X connect 10 0 11 1;
#X connect 11 0 0 0;
#X connect 12 0 10 0;
#X connect 14 0 2 0;
#X connect 14 0 11 0;
#X restore 60 77 pd crackles;
#N canvas 0 0 450 300 hissing 0;
#X obj 106 188 *~;
#X obj 141 57 lop~ 1;
#X obj 142 107 *~;
#X obj 66 58 hip~ 1000;
#X obj 141 133 *~;
#X obj 142 80 *~ 10;
#X obj 141 157 *~ 600;
#X obj 105 222 outlet~;
#X obj 111 27 inlet~;
#X connect 0 0 7 0;
#X connect 1 0 5 0;
#X connect 2 0 4 0;
#X connect 2 0 4 1;
#X connect 3 0 0 0;
#X connect 4 0 6 0;
#X connect 5 0 2 0;
#X connect 5 0 2 1;
#X connect 6 0 0 1;
#X connect 8 0 1 0;
#X connect 8 0 3 0;
#X restore 152 77 pd hissing;
#N canvas 0 0 170 271 lapping 0;
#X obj 21 109 clip~ -0.9 0.9;
#X obj 21 129 hip~ 25;
#X obj 21 86 hip~ 25;
#X obj 21 40 bp~ 30 5;
#X obj 21 65 *~ 100;
#X obj 21 153 *~ 0.6;
#X obj 20 177 outlet~;
#X obj 21 12 inlet~;
#X connect 0 0 1 0;
#X connect 1 0 5 0;
#X connect 2 0 0 0;
#X connect 3 0 4 0;
#X connect 4 0 2 0;
#X connect 5 0 6 0;
#X connect 7 0 3 0;
#X restore 249 78 pd lapping;
#X obj 151 42 noise~;
#X text 206 41 factor common noise;
#X text 308 110 mix levels;
#X obj 154 135 outlet~;
#X obj 60 104 *~ 0.2;
#X obj 249 104 *~ 0.6;
#X obj 153 103 *~ 0.3;
#X text 147 11 fire generator;
#X connect 0 0 7 0;
#X connect 1 0 9 0;
#X connect 2 0 8 0;
#X connect 3 0 0 0;
#X connect 3 0 1 0;
#X connect 3 0 2 0;
#X connect 7 0 6 0;
#X connect 8 0 6 0;
#X connect 9 0 6 0;
#X restore 180 -3 pd firegen;
#N canvas 27 401 450 300 firegen 0;
#N canvas 0 0 242 473 crackles 0;
#X obj 64 394 *~;
#X obj 77 104 env~;
#X obj 77 80 lop~ 1;
#X msg 128 170 bang;
#X obj 77 127 moses 50;
#X obj 128 148 moses 51;
#X obj 128 193 random 30;
#X obj 128 237 line~;
#X msg 128 216 1 \, 0 \$1;
#X obj 128 265 *~;
#X obj 96 325 + 1500;
#X obj 64 349 bp~ 4000 1;
#X obj 95 303 * 500;
#X obj 64 419 outlet~;
#X obj 63 52 inlet~;
#X connect 0 0 13 0;
#X connect 1 0 4 0;
#X connect 2 0 1 0;
#X connect 3 0 6 0;
#X connect 4 1 5 0;
#X connect 5 0 3 0;
#X connect 6 0 8 0;
#X connect 6 0 12 0;
#X connect 7 0 9 0;
#X connect 7 0 9 1;
#X connect 8 0 7 0;
#X connect 9 0 0 1;
#X connect 10 0 11 1;
#X connect 11 0 0 0;
#X connect 12 0 10 0;
#X connect 14 0 2 0;
#X connect 14 0 11 0;
#X restore 57 96 pd crackles;
#N canvas 0 0 450 300 hissing 0;
#X obj 106 188 *~;
#X obj 141 57 lop~ 1;
#X obj 142 107 *~;
#X obj 66 58 hip~ 1000;
#X obj 141 133 *~;
#X obj 142 80 *~ 10;
#X obj 141 157 *~ 600;
#X obj 105 222 outlet~;
#X obj 111 27 inlet~;
#X connect 0 0 7 0;
#X connect 1 0 5 0;
#X connect 2 0 4 0;
#X connect 2 0 4 1;
#X connect 3 0 0 0;
#X connect 4 0 6 0;
#X connect 5 0 2 0;
#X connect 5 0 2 1;
#X connect 6 0 0 1;
#X connect 8 0 1 0;
#X connect 8 0 3 0;
#X restore 149 96 pd hissing;
#N canvas 0 0 170 271 lapping 0;
#X obj 21 109 clip~ -0.9 0.9;
#X obj 21 129 hip~ 25;
#X obj 21 86 hip~ 25;
#X obj 21 40 bp~ 30 5;
#X obj 21 65 *~ 100;
#X obj 21 153 *~ 0.6;
#X obj 20 177 outlet~;
#X obj 21 12 inlet~;
#X connect 0 0 1 0;
#X connect 1 0 5 0;
#X connect 2 0 0 0;
#X connect 3 0 4 0;
#X connect 4 0 2 0;
#X connect 5 0 6 0;
#X connect 7 0 3 0;
#X restore 246 97 pd lapping;
#X obj 148 61 noise~;
#X text 203 60 factor common noise;
#X text 305 129 mix levels;
#X obj 151 154 outlet~;
#X obj 57 123 *~ 0.2;
#X obj 246 123 *~ 0.6;
#X obj 150 122 *~ 0.3;
#X text 144 30 fire generator;
#X connect 0 0 7 0;
#X connect 1 0 9 0;
#X connect 2 0 8 0;
#X connect 3 0 0 0;
#X connect 3 0 1 0;
#X connect 3 0 2 0;
#X connect 7 0 6 0;
#X connect 8 0 6 0;
#X connect 9 0 6 0;
#X restore 282 -3 pd firegen;
#N canvas 27 401 450 300 firegen 0;
#N canvas 0 0 242 473 crackles 0;
#X obj 64 394 *~;
#X obj 77 104 env~;
#X obj 77 80 lop~ 1;
#X msg 128 170 bang;
#X obj 77 127 moses 50;
#X obj 128 148 moses 51;
#X obj 128 193 random 30;
#X obj 128 237 line~;
#X msg 128 216 1 \, 0 \$1;
#X obj 128 265 *~;
#X obj 96 325 + 1500;
#X obj 64 349 bp~ 4000 1;
#X obj 95 303 * 500;
#X obj 64 419 outlet~;
#X obj 63 52 inlet~;
#X connect 0 0 13 0;
#X connect 1 0 4 0;
#X connect 2 0 1 0;
#X connect 3 0 6 0;
#X connect 4 1 5 0;
#X connect 5 0 3 0;
#X connect 6 0 8 0;
#X connect 6 0 12 0;
#X connect 7 0 9 0;
#X connect 7 0 9 1;
#X connect 8 0 7 0;
#X connect 9 0 0 1;
#X connect 10 0 11 1;
#X connect 11 0 0 0;
#X connect 12 0 10 0;
#X connect 14 0 2 0;
#X connect 14 0 11 0;
#X restore 57 96 pd crackles;
#N canvas 0 0 450 300 hissing 0;
#X obj 106 188 *~;
#X obj 141 57 lop~ 1;
#X obj 142 107 *~;
#X obj 66 58 hip~ 1000;
#X obj 141 133 *~;
#X obj 142 80 *~ 10;
#X obj 141 157 *~ 600;
#X obj 105 222 outlet~;
#X obj 111 27 inlet~;
#X connect 0 0 7 0;
#X connect 1 0 5 0;
#X connect 2 0 4 0;
#X connect 2 0 4 1;
#X connect 3 0 0 0;
#X connect 4 0 6 0;
#X connect 5 0 2 0;
#X connect 5 0 2 1;
#X connect 6 0 0 1;
#X connect 8 0 1 0;
#X connect 8 0 3 0;
#X restore 149 96 pd hissing;
#N canvas 0 0 170 271 lapping 0;
#X obj 21 109 clip~ -0.9 0.9;
#X obj 21 129 hip~ 25;
#X obj 21 86 hip~ 25;
#X obj 21 40 bp~ 30 5;
#X obj 21 65 *~ 100;
#X obj 21 153 *~ 0.6;
#X obj 20 177 outlet~;
#X obj 21 12 inlet~;
#X connect 0 0 1 0;
#X connect 1 0 5 0;
#X connect 2 0 0 0;
#X connect 3 0 4 0;
#X connect 4 0 2 0;
#X connect 5 0 6 0;
#X connect 7 0 3 0;
#X restore 246 97 pd lapping;
#X obj 148 61 noise~;
#X text 203 60 factor common noise;
#X text 305 129 mix levels;
#X obj 151 154 outlet~;
#X obj 57 123 *~ 0.2;
#X obj 246 123 *~ 0.6;
#X obj 150 122 *~ 0.3;
#X text 144 30 fire generator;
#X connect 0 0 7 0;
#X connect 1 0 9 0;
#X connect 2 0 8 0;
#X connect 3 0 0 0;
#X connect 3 0 1 0;
#X connect 3 0 2 0;
#X connect 7 0 6 0;
#X connect 8 0 6 0;
#X connect 9 0 6 0;
#X restore 0 -3 pd firegen;
#X obj 134 58 *~ 0.2;
#X connect 0 0 9 0;
#X connect 1 0 9 0;
#X connect 2 0 9 0;
#X connect 3 0 9 0;
#X connect 5 0 1 0;
#X connect 6 0 2 0;
#X connect 7 0 0 0;
#X connect 8 0 3 0;
#X connect 9 0 4 0;
#X connect 9 0 4 1;

Download fire_all.pd.

Audio

Fire effects

The example consists of separate crackles, crackle clusters using a random trigger, crackles with random tone, roar/lapping made from low pass filtered noise, roar/lapping with band pass filters, roar/lapping with dynamically limited band-pass filtered noise, hissing using simple random modulator, hissing with expanded modulator, hissing with expanded modulator and high pass filtered noise, full ensemble fire texture, paper fire example mix, wood fire example mix, fierce fire example mix.

Download fire.wav.