Designing Sound - Procedural Audio for Games and Film.

Code examples for “Designing Sound” textbook

Practical 18: Wind

Pure Data

Wind - gust generator, test patch

#N canvas 96 271 173 125 10;
#X obj 0 63 osc~;
#X obj 0 107 dac~;
#X obj 0 21 *~ 200;
#X obj 0 42 +~ 200;
#N canvas 66 152 137 179 windspeed 0;
#X obj 0 22 +~ 1;
#X obj 0 117 +~;
#X obj 0 44 *~ 0.25;
#X obj 16 94 +~;
#X obj 0 139 clip~ 0 1;
#N canvas 72 36 108 172 squall 0;
#X obj 63 20 noise~;
#X obj 63 83 hip~ 0;
#X obj 63 41 lop~ 3;
#X obj 63 62 lop~ 3;
#X obj 0 86 *~;
#X obj 22 130 *~;
#X obj 0 20 max~ 0.4;
#X obj 0 42 -~ 0.4;
#X obj 0 64 *~ 8;
#X obj 63 104 *~ 20;
#X obj 0 0 inlet~;
#X obj 22 154 outlet~;
#X connect 0 0 2 0;
#X connect 1 0 9 0;
#X connect 2 0 3 0;
#X connect 3 0 1 0;
#X connect 4 0 5 0;
#X connect 5 0 11 0;
#X connect 6 0 7 0;
#X connect 7 0 8 0;
#X connect 8 0 4 0;
#X connect 8 0 4 1;
#X connect 9 0 5 1;
#X connect 10 0 6 0;
#X restore 71 70 pd squall;
#N canvas 46 15 126 149 gust 0;
#X obj 0 0 noise~;
#X obj 0 63 hip~ 0;
#X obj 0 106 *~;
#X obj 67 44 *~;
#X obj 67 21 +~ 0.5;
#X obj 67 67 -~ 0.125;
#X obj 0 42 lop~ 0.5;
#X obj 0 21 lop~ 0.5;
#X obj 0 84 *~ 50;
#X obj 67 0 inlet~;
#X obj 0 131 outlet~;
#X connect 0 0 7 0;
#X connect 1 0 8 0;
#X connect 2 0 10 0;
#X connect 3 0 5 0;
#X connect 4 0 3 0;
#X connect 4 0 3 1;
#X connect 5 0 2 1;
#X connect 6 0 1 0;
#X connect 7 0 6 0;
#X connect 8 0 2 0;
#X connect 9 0 4 0;
#X restore 15 70 pd gust;
#X obj 0 161 outlet~;
#X obj 0 0 osc~ 0.1;
#X connect 0 0 2 0;
#X connect 1 0 4 0;
#X connect 2 0 5 0;
#X connect 2 0 1 0;
#X connect 2 0 6 0;
#X connect 3 0 1 1;
#X connect 4 0 7 0;
#X connect 5 0 3 1;
#X connect 6 0 3 0;
#X connect 8 0 0 0;
#X restore 58 0 pd windspeed;
#X obj 58 22 delwrite~ a 3000;
#X obj 0 0 vd~ a 0;
#X obj 0 84 *~ 0.1;
#X connect 0 0 7 0;
#X connect 2 0 3 0;
#X connect 3 0 0 0;
#X connect 4 0 5 0;
#X connect 6 0 2 0;
#X connect 7 0 1 0;
#X connect 7 0 1 1;

Download wind0.pd.

Wind - simple noise based wind

#N canvas 145 633 282 126 10;
#X obj 67 39 dac~;
#X obj -2 -2 noise~;
#N canvas 0 0 175 257 windspeed 0;
#X obj 13 41 +~ 1;
#X obj 12 151 +~;
#X obj 13 64 *~ 0.25;
#X obj 28 129 +~;
#X obj 13 173 clip~ 0 1;
#N canvas 0 0 184 221 squall 0;
#X obj 78 41 noise~;
#X obj 77 108 hip~ 0;
#X obj 78 64 lop~ 3;
#X obj 78 85 lop~ 3;
#X obj 17 112 *~;
#X obj 38 160 *~;
#X obj 16 42 max~ 0.4;
#X obj 16 64 -~ 0.4;
#X obj 16 87 *~ 8;
#X obj 78 129 *~ 20;
#X obj 16 14 inlet~;
#X obj 40 184 outlet~;
#X connect 0 0 2 0;
#X connect 1 0 9 0;
#X connect 2 0 3 0;
#X connect 3 0 1 0;
#X connect 4 0 5 0;
#X connect 5 0 11 0;
#X connect 6 0 7 0;
#X connect 7 0 8 0;
#X connect 8 0 4 0;
#X connect 8 0 4 1;
#X connect 9 0 5 1;
#X connect 10 0 6 0;
#X restore 83 98 pd squall;
#N canvas 0 0 190 244 gust 0;
#X obj 9 15 noise~;
#X obj 8 82 hip~ 0;
#X obj 8 157 *~;
#X obj 76 72 *~;
#X obj 75 49 +~ 0.5;
#X obj 76 96 -~ 0.125;
#X obj 9 59 lop~ 0.5;
#X obj 9 38 lop~ 0.5;
#X obj 9 103 *~ 50;
#X obj 75 9 inlet~;
#X obj 8 182 outlet~;
#X connect 0 0 7 0;
#X connect 1 0 8 0;
#X connect 2 0 10 0;
#X connect 3 0 5 0;
#X connect 4 0 3 0;
#X connect 4 0 3 1;
#X connect 5 0 2 1;
#X connect 6 0 1 0;
#X connect 7 0 6 0;
#X connect 8 0 2 0;
#X connect 9 0 4 0;
#X restore 27 98 pd gust;
#X obj 13 199 outlet~;
#X obj 13 19 osc~ 0.1;
#X connect 0 0 2 0;
#X connect 1 0 4 0;
#X connect 2 0 5 0;
#X connect 2 0 1 0;
#X connect 2 0 6 0;
#X connect 3 0 1 1;
#X connect 4 0 7 0;
#X connect 5 0 3 1;
#X connect 6 0 3 0;
#X connect 8 0 0 0;
#X restore -2 84 pd windspeed;
#X obj -2 106 delwrite~ a 3000;
#X obj 68 -2 catch~ l;
#X obj 90 18 catch~ r;
#X obj -2 20 s~ white;
#X obj 156 -2 vd~ a 0;
#X obj 213 -2 r~ white;
#X obj 156 106 throw~ l;
#X obj 221 106 throw~ r;
#X obj 156 43 *~;
#X obj 156 85 fcpan 0.51;
#X obj 156 20 +~ 0.2;
#X obj 213 19 bp~ 800 1;
#X obj 156 64 *~ 0.3;
#X connect 1 0 6 0;
#X connect 2 0 3 0;
#X connect 4 0 0 0;
#X connect 5 0 0 1;
#X connect 7 0 13 0;
#X connect 8 0 14 0;
#X connect 11 0 15 0;
#X connect 12 0 9 0;
#X connect 12 1 10 0;
#X connect 13 0 11 0;
#X connect 14 0 11 1;
#X connect 15 0 12 0;

Download wind1.pd.

Wind - howling wind

#N canvas 123 70 269 316 10;
#X obj 185 -89 dac~;
#X obj 173 31 +~ 1000;
#X obj 173 11 *~ 1000;
#X obj 149 -16 vd~ a 1000;
#X obj 119 -130 noise~;
#X obj 132 99 *~;
#N canvas 0 0 175 257 windspeed 0;
#X obj 13 41 +~ 1;
#X obj 12 151 +~;
#X obj 13 64 *~ 0.25;
#X obj 28 129 +~;
#X obj 13 173 clip~ 0 1;
#N canvas 0 0 184 221 squall 0;
#X obj 78 41 noise~;
#X obj 77 108 hip~ 0;
#X obj 78 64 lop~ 3;
#X obj 78 85 lop~ 3;
#X obj 17 112 *~;
#X obj 38 160 *~;
#X obj 16 42 max~ 0.4;
#X obj 16 64 -~ 0.4;
#X obj 16 87 *~ 8;
#X obj 78 129 *~ 20;
#X obj 16 14 inlet~;
#X obj 40 184 outlet~;
#X connect 0 0 2 0;
#X connect 1 0 9 0;
#X connect 2 0 3 0;
#X connect 3 0 1 0;
#X connect 4 0 5 0;
#X connect 5 0 11 0;
#X connect 6 0 7 0;
#X connect 7 0 8 0;
#X connect 8 0 4 0;
#X connect 8 0 4 1;
#X connect 9 0 5 1;
#X connect 10 0 6 0;
#X restore 83 98 pd squall;
#N canvas 0 0 190 244 gust 0;
#X obj 9 15 noise~;
#X obj 8 82 hip~ 0;
#X obj 8 157 *~;
#X obj 76 72 *~;
#X obj 75 49 +~ 0.5;
#X obj 76 96 -~ 0.125;
#X obj 9 59 lop~ 0.5;
#X obj 9 38 lop~ 0.5;
#X obj 9 103 *~ 50;
#X obj 75 9 inlet~;
#X obj 8 182 outlet~;
#X connect 0 0 7 0;
#X connect 1 0 8 0;
#X connect 2 0 10 0;
#X connect 3 0 5 0;
#X connect 4 0 3 0;
#X connect 4 0 3 1;
#X connect 5 0 2 1;
#X connect 6 0 1 0;
#X connect 7 0 6 0;
#X connect 8 0 2 0;
#X connect 9 0 4 0;
#X restore 27 98 pd gust;
#X obj 13 199 outlet~;
#X obj 13 19 osc~ 0.1;
#X connect 0 0 2 0;
#X connect 1 0 4 0;
#X connect 2 0 5 0;
#X connect 2 0 1 0;
#X connect 2 0 6 0;
#X connect 3 0 1 1;
#X connect 4 0 7 0;
#X connect 5 0 3 1;
#X connect 6 0 3 0;
#X connect 8 0 0 0;
#X restore -2 -130 pd windspeed;
#X obj -2 -108 delwrite~ a 3000;
#X obj 133 75 vcf~ 1000 60;
#X obj 148 31 *~;
#X obj 132 120 *~ 2;
#X obj 132 168 throw~ l;
#X obj 196 168 throw~ r;
#X obj 185 -130 catch~ l;
#X obj 208 -110 catch~ r;
#X msg 91 6 60;
#X obj -2 98 *~;
#X obj -2 28 vcf~ 1000 60;
#X obj 15 76 *~;
#X obj 91 -71 loadbang;
#X obj -2 168 throw~ l;
#X obj 62 168 throw~ r;
#X obj 37 -14 *~ 400;
#X obj 37 6 +~ 600;
#X obj -2 143 fcpan 0.28;
#X obj 132 143 fcpan 0.64;
#X obj 14 -41 vd~ a 100;
#X obj 119 -108 s~ white;
#X obj 133 -37 r~ white;
#X obj -2 -62 r~ white;
#X obj -2 120 *~ 1.2;
#X obj 14 50 +~ 0.12;
#X connect 1 0 8 1;
#X connect 2 0 1 0;
#X connect 3 0 2 0;
#X connect 3 0 9 0;
#X connect 3 0 9 1;
#X connect 4 0 27 0;
#X connect 5 0 10 0;
#X connect 6 0 7 0;
#X connect 8 0 5 0;
#X connect 9 0 5 1;
#X connect 10 0 25 0;
#X connect 13 0 0 0;
#X connect 14 0 0 1;
#X connect 15 0 17 2;
#X connect 15 0 8 2;
#X connect 16 0 30 0;
#X connect 17 0 16 0;
#X connect 18 0 16 1;
#X connect 19 0 15 0;
#X connect 22 0 23 0;
#X connect 23 0 17 1;
#X connect 24 0 20 0;
#X connect 24 1 21 0;
#X connect 25 0 11 0;
#X connect 25 1 12 0;
#X connect 26 0 22 0;
#X connect 26 0 31 0;
#X connect 28 0 8 0;
#X connect 29 0 17 0;
#X connect 30 0 24 0;
#X connect 31 0 18 0;
#X connect 31 0 18 1;

Download wind2.pd.

Wind - complete wind scene

#N canvas 67 23 893 376 10;
#X obj 290 242 *~;
#X obj 26 106 dac~;
#X obj 626 193 +~ 1000;
#X obj 626 173 *~ 1000;
#X msg 665 217 60;
#X obj 125 3 noise~;
#X obj 585 261 *~;
#N canvas 0 0 175 257 windspeed 0;
#X obj 13 41 +~ 1;
#X obj 12 151 +~;
#X obj 13 64 *~ 0.25;
#X obj 28 129 +~;
#X obj 13 173 clip~ 0 1;
#N canvas 0 0 184 221 squall 0;
#X obj 78 41 noise~;
#X obj 77 108 hip~ 0;
#X obj 78 64 lop~ 3;
#X obj 78 85 lop~ 3;
#X obj 17 112 *~;
#X obj 38 160 *~;
#X obj 16 42 max~ 0.4;
#X obj 16 64 -~ 0.4;
#X obj 16 87 *~ 8;
#X obj 78 129 *~ 20;
#X obj 16 14 inlet~;
#X obj 40 184 outlet~;
#X connect 0 0 2 0;
#X connect 1 0 9 0;
#X connect 2 0 3 0;
#X connect 3 0 1 0;
#X connect 4 0 5 0;
#X connect 5 0 11 0;
#X connect 6 0 7 0;
#X connect 7 0 8 0;
#X connect 8 0 4 0;
#X connect 8 0 4 1;
#X connect 9 0 5 1;
#X connect 10 0 6 0;
#X restore 83 98 pd squall;
#N canvas 0 0 190 244 gust 0;
#X obj 9 15 noise~;
#X obj 8 82 hip~ 0;
#X obj 8 157 *~;
#X obj 76 72 *~;
#X obj 75 49 +~ 0.5;
#X obj 76 96 -~ 0.125;
#X obj 9 59 lop~ 0.5;
#X obj 9 38 lop~ 0.5;
#X obj 9 103 *~ 50;
#X obj 75 9 inlet~;
#X obj 8 182 outlet~;
#X connect 0 0 7 0;
#X connect 1 0 8 0;
#X connect 2 0 10 0;
#X connect 3 0 5 0;
#X connect 4 0 3 0;
#X connect 4 0 3 1;
#X connect 5 0 2 1;
#X connect 6 0 1 0;
#X connect 7 0 6 0;
#X connect 8 0 2 0;
#X connect 9 0 4 0;
#X restore 27 98 pd gust;
#X obj 13 199 outlet~;
#X obj 13 19 osc~ 0.1;
#X connect 0 0 2 0;
#X connect 1 0 4 0;
#X connect 2 0 5 0;
#X connect 2 0 1 0;
#X connect 2 0 6 0;
#X connect 3 0 1 1;
#X connect 4 0 7 0;
#X connect 5 0 3 1;
#X connect 6 0 3 0;
#X connect 8 0 0 0;
#X restore 3 3 pd windspeed;
#X obj 3 25 delwrite~ a 3000;
#X obj 586 237 vcf~ 1000 60;
#X obj 601 193 *~;
#X obj 585 282 *~ 2;
#X obj 585 330 throw~ l;
#X obj 649 330 throw~ r;
#X obj 2 47 catch~ l;
#X obj 66 47 catch~ r;
#X msg 523 168 60;
#X obj 429 260 *~;
#X obj 430 190 vcf~ 1000 60;
#X obj 446 238 *~;
#X obj 523 148 loadbang;
#X obj 429 330 throw~ l;
#X obj 493 330 throw~ r;
#X obj 469 148 *~ 400;
#X obj 469 168 +~ 600;
#X obj 429 305 fcpan 0.28;
#X obj 585 305 fcpan 0.64;
#X obj 125 25 s~ white;
#X obj 586 125 r~ white;
#X obj 429 100 r~ white;
#X obj 429 282 *~ 1.2;
#X obj 445 212 +~ 0.12;
#X obj 714 330 throw~ l;
#X obj 778 330 throw~ r;
#X obj 713 126 r~ white;
#X obj 713 154 max~;
#X obj 713 175 -~;
#X obj 713 197 *~;
#X obj 779 102 sig~ 1;
#X obj 779 126 -~;
#X obj 714 263 *~;
#X obj 797 33 +~ 0.3;
#X obj 844 81 -~ 0.2;
#X obj 796 81 *~ 0.4;
#X obj 713 219 hip~ 200;
#X obj 714 241 lop~ 4000;
#X obj 290 330 throw~ l;
#X obj 355 330 throw~ r;
#X obj 714 305 fcpan 0.71;
#X obj 290 198 r~ white;
#X obj 368 133 cos~;
#X obj 368 67 -~ 0.25;
#X obj 368 45 clip~ 0.25 0.5;
#X obj 368 111 -~ 0.25;
#X obj 368 89 *~ 2;
#X obj 290 220 bp~ 200 40;
#X obj 290 286 *~;
#X obj 368 221 osc~;
#X obj 368 177 *~ 100;
#X obj 368 199 +~ 20;
#X obj 368 155 lop~ 0.1;
#X obj 158 242 *~;
#X obj 158 330 throw~ l;
#X obj 223 330 throw~ r;
#X obj 158 198 r~ white;
#X obj 236 133 cos~;
#X obj 236 111 -~ 0.25;
#X obj 236 89 *~ 2;
#X obj 158 286 *~;
#X obj 236 221 osc~;
#X obj 236 45 clip~ 0.35 0.6;
#X obj 236 67 -~ 0.35;
#X obj 236 155 lop~ 0.5;
#X obj 158 220 bp~ 400 40;
#X obj 236 177 *~ 200;
#X obj 236 199 +~ 30;
#X obj 158 264 *~ 2;
#X obj 290 264 *~ 2;
#X obj 236 23 vd~ a 100;
#X obj 368 23 vd~ a 300;
#X obj 445 121 vd~ a 500;
#X obj 602 146 vd~ a 900;
#X obj 158 308 fcpan 0.91;
#X obj 290 308 fcpan 0.03;
#X obj 1 128 vd~ a 0;
#X obj 18 171 r~ white;
#X obj 24 330 throw~ l;
#X obj 89 330 throw~ r;
#X obj 1 217 *~;
#X obj 24 308 fcpan 0.51;
#X obj 63 235 clip~ 0 0.99;
#X obj 25 263 rzero~;
#X obj 1 150 +~ 0.2;
#X obj 62 213 *~ 0.6;
#X obj 18 192 bp~ 800 1;
#X obj 714 284 *~ 0.8;
#X obj 797 11 vd~ a 3000;
#X obj 797 55 lop~ 0.07;
#X obj 25 285 *~ 0.2;
#X text 32 361 buildings;
#X text 243 361 doorways;
#X text 507 361 branches/wires;
#X text 729 360 tree leaves;
#X obj 67 81 *~ 0.45;
#X obj 3 81 *~ 0.45;
#X connect 0 0 77 0;
#X connect 2 0 9 1;
#X connect 3 0 2 0;
#X connect 4 0 9 2;
#X connect 5 0 27 0;
#X connect 6 0 11 0;
#X connect 7 0 8 0;
#X connect 9 0 6 0;
#X connect 10 0 6 1;
#X connect 11 0 26 0;
#X connect 14 0 104 0;
#X connect 15 0 103 0;
#X connect 16 0 18 2;
#X connect 17 0 30 0;
#X connect 18 0 17 0;
#X connect 19 0 17 1;
#X connect 20 0 16 0;
#X connect 20 0 4 0;
#X connect 23 0 24 0;
#X connect 24 0 18 1;
#X connect 25 0 21 0;
#X connect 25 1 22 0;
#X connect 26 0 12 0;
#X connect 26 1 13 0;
#X connect 28 0 9 0;
#X connect 29 0 18 0;
#X connect 30 0 25 0;
#X connect 31 0 19 0;
#X connect 31 0 19 1;
#X connect 34 0 35 0;
#X connect 35 0 36 0;
#X connect 36 0 37 0;
#X connect 37 0 44 0;
#X connect 38 0 39 0;
#X connect 39 0 35 1;
#X connect 39 0 36 1;
#X connect 39 0 37 1;
#X connect 40 0 95 0;
#X connect 41 0 97 0;
#X connect 42 0 40 1;
#X connect 43 0 39 1;
#X connect 44 0 45 0;
#X connect 45 0 40 0;
#X connect 48 0 32 0;
#X connect 48 1 33 0;
#X connect 49 0 55 0;
#X connect 50 0 60 0;
#X connect 51 0 54 0;
#X connect 52 0 51 0;
#X connect 53 0 50 0;
#X connect 54 0 53 0;
#X connect 55 0 0 0;
#X connect 56 0 83 0;
#X connect 57 0 56 1;
#X connect 58 0 59 0;
#X connect 59 0 57 0;
#X connect 60 0 0 1;
#X connect 60 0 58 0;
#X connect 61 0 76 0;
#X connect 64 0 73 0;
#X connect 65 0 72 0;
#X connect 66 0 65 0;
#X connect 67 0 66 0;
#X connect 68 0 82 0;
#X connect 69 0 68 1;
#X connect 70 0 71 0;
#X connect 71 0 67 0;
#X connect 72 0 61 1;
#X connect 72 0 74 0;
#X connect 73 0 61 0;
#X connect 74 0 75 0;
#X connect 75 0 69 0;
#X connect 76 0 68 0;
#X connect 77 0 56 0;
#X connect 78 0 70 0;
#X connect 79 0 52 0;
#X connect 80 0 23 0;
#X connect 80 0 31 0;
#X connect 81 0 3 0;
#X connect 81 0 10 0;
#X connect 81 0 10 1;
#X connect 82 0 62 0;
#X connect 82 1 63 0;
#X connect 83 0 46 0;
#X connect 83 1 47 0;
#X connect 84 0 92 0;
#X connect 85 0 94 0;
#X connect 88 0 91 0;
#X connect 89 0 86 0;
#X connect 89 1 87 0;
#X connect 90 0 91 1;
#X connect 91 0 98 0;
#X connect 92 0 88 0;
#X connect 92 0 93 0;
#X connect 93 0 90 0;
#X connect 94 0 88 1;
#X connect 95 0 48 0;
#X connect 96 0 41 0;
#X connect 97 0 42 0;
#X connect 97 0 43 0;
#X connect 98 0 89 0;
#X connect 103 0 1 1;
#X connect 104 0 1 0;

Download wind4.pd.

Wind - pan unit (abstraction needed by above)

#N canvas 250 281 136 168 10;
#X obj 64 123 *~;
#X obj -4 123 *~;
#X obj 80 77 cos~;
#X obj 80 40 -~ 0.25;
#X obj 80 18 *~ 0.25;
#X obj 12 101 cos~;
#X obj 12 77 -~ 0.25;
#X obj 80 -4 sig~ \$1;
#X obj -4 146 outlet~ l;
#X obj 64 146 outlet~ r;
#X obj -4 -4 inlet~;
#X connect 0 0 9 0;
#X connect 1 0 8 0;
#X connect 2 0 0 1;
#X connect 3 0 2 0;
#X connect 3 0 6 0;
#X connect 4 0 3 0;
#X connect 5 0 1 1;
#X connect 6 0 5 0;
#X connect 7 0 4 0;
#X connect 10 0 1 0;
#X connect 10 0 0 0;

Download fcpan.pd.

Audio

Wind sounds

A section of wind with several objects in the scene like doorways, trees and thin wires. Wind direction is within stereo image.

Download wind.wav.