/ proof-of-concept / steelsim21
Sign in
proof-of-concept / steelsim21
Gallery: 2 sweep(s) rendered
Jeremy Magland <jmagland@flatironinstitute.org> committed commit 074cb4e031f3 parent 0b5e420 Browse files
33 changed files+954−0
docs/gallery/clips/strike-mass-0.jsonadded+37−0View file
@@ -0,0 +1,37 @@
1+{
2+ "id": "strike-mass-0",
3+ "label": "10 g",
4+ "overrides": {
5+ "excitation": "strike",
6+ "stickMass": 0.01,
7+ "spacing": 0.004
8+ },
9+ "metrics": {
10+ "peakPa": 1.962693214416504,
11+ "peakDbSpl": 99.83644850665327,
12+ "rmsPa": 0.008518429042423257,
13+ "centroidHz": 740.2078876605501,
14+ "t60": {
15+ "20-100": 5.525022587168028,
16+ "100-500": 4.223548524565061,
17+ "500-2k": 2.316918055245375,
18+ "2k-8k": 4.825038756489326
19+ },
20+ "bandLevelsDb": {
21+ "20-100": -2.521019636683148,
22+ "100-500": 0,
23+ "500-2k": -1.1762739005712746,
24+ "2k-8k": 5.672379657464713
25+ }
26+ },
27+ "gainDb": -4,
28+ "peakDbfs": 1.857048419932885,
29+ "run": {
30+ "steps": 6144000,
31+ "seconds": 61.59477831700002,
32+ "nx": 77,
33+ "ny": 115,
34+ "dt": 6.510416666666666e-7,
35+ "maxContactForce": 169.22738647460938
36+ }
37+}
\ No newline at end of file
docs/gallery/clips/strike-mass-0.pngadded+0−0View file
Binary file not shown.
docs/gallery/clips/strike-mass-0.wavadded+0−0View file
Binary file not shown.
docs/gallery/clips/strike-mass-1.jsonadded+37−0View file
@@ -0,0 +1,37 @@
1+{
2+ "id": "strike-mass-1",
3+ "label": "30 g",
4+ "overrides": {
5+ "excitation": "strike",
6+ "stickMass": 0.03,
7+ "spacing": 0.004
8+ },
9+ "metrics": {
10+ "peakPa": 2.205117702484131,
11+ "peakDbSpl": 100.84803560157386,
12+ "rmsPa": 0.00951895798535143,
13+ "centroidHz": 435.21529790921534,
14+ "t60": {
15+ "20-100": 5.627390472686013,
16+ "100-500": 4.5707678921683526,
17+ "500-2k": 2.5907910666908407,
18+ "2k-8k": 3.9744633879876843
19+ },
20+ "bandLevelsDb": {
21+ "20-100": -1.3514353071700143,
22+ "100-500": 0,
23+ "500-2k": 1.187547735231874,
24+ "2k-8k": 1.994130612116379
25+ }
26+ },
27+ "gainDb": -4,
28+ "peakDbfs": 2.8686355148534783,
29+ "run": {
30+ "steps": 6144000,
31+ "seconds": 61.487249779,
32+ "nx": 77,
33+ "ny": 115,
34+ "dt": 6.510416666666666e-7,
35+ "maxContactForce": 179.2267303466797
36+ }
37+}
\ No newline at end of file
docs/gallery/clips/strike-mass-1.pngadded+0−0View file
Binary file not shown.
docs/gallery/clips/strike-mass-1.wavadded+0−0View file
Binary file not shown.
docs/gallery/clips/strike-mass-2.jsonadded+37−0View file
@@ -0,0 +1,37 @@
1+{
2+ "id": "strike-mass-2",
3+ "label": "60 g",
4+ "overrides": {
5+ "excitation": "strike",
6+ "stickMass": 0.06,
7+ "spacing": 0.004
8+ },
9+ "metrics": {
10+ "peakPa": 2.2698206901550293,
11+ "peakDbSpl": 101.09923109532262,
12+ "rmsPa": 0.010550695050977802,
13+ "centroidHz": 893.46093233844,
14+ "t60": {
15+ "20-100": 5.131759901917673,
16+ "100-500": 3.972788364757304,
17+ "500-2k": 2.371926066794071,
18+ "2k-8k": 3.365816125750012
19+ },
20+ "bandLevelsDb": {
21+ "20-100": -5.051533234627442,
22+ "100-500": 0,
23+ "500-2k": -0.4614149370542684,
24+ "2k-8k": -2.5053567106480443
25+ }
26+ },
27+ "gainDb": -4,
28+ "peakDbfs": 3.1198310086022567,
29+ "run": {
30+ "steps": 6144000,
31+ "seconds": 62.097485610000035,
32+ "nx": 77,
33+ "ny": 115,
34+ "dt": 6.510416666666666e-7,
35+ "maxContactForce": 182.28599548339844
36+ }
37+}
\ No newline at end of file
docs/gallery/clips/strike-mass-2.pngadded+0−0View file
Binary file not shown.
docs/gallery/clips/strike-mass-2.wavadded+0−0View file
Binary file not shown.
docs/gallery/clips/strike-mass-3.jsonadded+37−0View file
@@ -0,0 +1,37 @@
1+{
2+ "id": "strike-mass-3",
3+ "label": "120 g",
4+ "overrides": {
5+ "excitation": "strike",
6+ "stickMass": 0.12,
7+ "spacing": 0.004
8+ },
9+ "metrics": {
10+ "peakPa": 2.302820920944214,
11+ "peakDbSpl": 101.22460341335466,
12+ "rmsPa": 0.01595159288182336,
13+ "centroidHz": 3406.145355070889,
14+ "t60": {
15+ "20-100": 4.884018982524845,
16+ "100-500": 4.091901974573413,
17+ "500-2k": 2.5341044098067655,
18+ "2k-8k": 2.951250872067345
19+ },
20+ "bandLevelsDb": {
21+ "20-100": -5.8572487165952225,
22+ "100-500": 0,
23+ "500-2k": 1.2501368494576077,
24+ "2k-8k": 7.195515904877691
25+ }
26+ },
27+ "gainDb": -4,
28+ "peakDbfs": 3.245203326634274,
29+ "run": {
30+ "steps": 6144000,
31+ "seconds": 62.11256672299991,
32+ "nx": 77,
33+ "ny": 115,
34+ "dt": 6.510416666666666e-7,
35+ "maxContactForce": 229.22804260253906
36+ }
37+}
\ No newline at end of file
docs/gallery/clips/strike-mass-3.pngadded+0−0View file
Binary file not shown.
docs/gallery/clips/strike-mass-3.wavadded+0−0View file
Binary file not shown.
docs/gallery/clips/strike-speed-0.jsonadded+37−0View file
@@ -0,0 +1,37 @@
1+{
2+ "id": "strike-speed-0",
3+ "label": "0.5 m/s",
4+ "overrides": {
5+ "excitation": "strike",
6+ "strikeVelocity": 0.5,
7+ "spacing": 0.004
8+ },
9+ "metrics": {
10+ "peakPa": 0.32989823818206787,
11+ "peakDbSpl": 84.34700001085253,
12+ "rmsPa": 0.0013752768866802387,
13+ "centroidHz": 211.35075889523384,
14+ "t60": {
15+ "20-100": 5.421595189026437,
16+ "100-500": 4.829842234560236,
17+ "500-2k": 2.584959790972203,
18+ "2k-8k": 7.753386829472608
19+ },
20+ "bandLevelsDb": {
21+ "20-100": 0.43503645593334284,
22+ "100-500": 0,
23+ "500-2k": -5.277500098983353,
24+ "2k-8k": -2.7251999649091854
25+ }
26+ },
27+ "gainDb": -10,
28+ "peakDbfs": -19.632400075867853,
29+ "run": {
30+ "steps": 6144000,
31+ "seconds": 62.09852399299999,
32+ "nx": 77,
33+ "ny": 115,
34+ "dt": 6.510416666666666e-7,
35+ "maxContactForce": 27.824155807495117
36+ }
37+}
\ No newline at end of file
docs/gallery/clips/strike-speed-0.pngadded+0−0View file
Binary file not shown.
docs/gallery/clips/strike-speed-0.wavadded+0−0View file
Binary file not shown.
docs/gallery/clips/strike-speed-1.jsonadded+37−0View file
@@ -0,0 +1,37 @@
1+{
2+ "id": "strike-speed-1",
3+ "label": "1 m/s",
4+ "overrides": {
5+ "excitation": "strike",
6+ "strikeVelocity": 1,
7+ "spacing": 0.004
8+ },
9+ "metrics": {
10+ "peakPa": 0.7198619842529297,
11+ "peakDbSpl": 91.12438487026358,
12+ "rmsPa": 0.002925910255742066,
13+ "centroidHz": 236.18250592388765,
14+ "t60": {
15+ "20-100": 5.320227447271335,
16+ "100-500": 4.771006973144124,
17+ "500-2k": 2.4780040581908356,
18+ "2k-8k": 6.072417631425333
19+ },
20+ "bandLevelsDb": {
21+ "20-100": -2.6954138963976675,
22+ "100-500": 0,
23+ "500-2k": -6.252126176052808,
24+ "2k-8k": -3.7111693800043906
25+ }
26+ },
27+ "gainDb": -10,
28+ "peakDbfs": -12.855015216456797,
29+ "run": {
30+ "steps": 6144000,
31+ "seconds": 61.601261146000006,
32+ "nx": 77,
33+ "ny": 115,
34+ "dt": 6.510416666666666e-7,
35+ "maxContactForce": 57.076847076416016
36+ }
37+}
\ No newline at end of file
docs/gallery/clips/strike-speed-1.pngadded+0−0View file
Binary file not shown.
docs/gallery/clips/strike-speed-1.wavadded+0−0View file
Binary file not shown.
docs/gallery/clips/strike-speed-2.jsonadded+37−0View file
@@ -0,0 +1,37 @@
1+{
2+ "id": "strike-speed-2",
3+ "label": "2 m/s",
4+ "overrides": {
5+ "excitation": "strike",
6+ "strikeVelocity": 2,
7+ "spacing": 0.004
8+ },
9+ "metrics": {
10+ "peakPa": 1.4831573963165283,
11+ "peakDbSpl": 97.40314492420696,
12+ "rmsPa": 0.0063310579870730676,
13+ "centroidHz": 219.54177547702503,
14+ "t60": {
15+ "20-100": 5.531767562097402,
16+ "100-500": 4.46948516550146,
17+ "500-2k": 2.398375013569001,
18+ "2k-8k": 4.846408972532886
19+ },
20+ "bandLevelsDb": {
21+ "20-100": -1.132559844659724,
22+ "100-500": 0,
23+ "500-2k": -2.2850845475978403,
24+ "2k-8k": -3.067700239340308
25+ }
26+ },
27+ "gainDb": -10,
28+ "peakDbfs": -6.576255162513417,
29+ "run": {
30+ "steps": 6144000,
31+ "seconds": 61.652156889999986,
32+ "nx": 77,
33+ "ny": 115,
34+ "dt": 6.510416666666666e-7,
35+ "maxContactForce": 117.44657135009766
36+ }
37+}
\ No newline at end of file
docs/gallery/clips/strike-speed-2.pngadded+0−0View file
Binary file not shown.
docs/gallery/clips/strike-speed-2.wavadded+0−0View file
Binary file not shown.
docs/gallery/clips/strike-speed-3.jsonadded+37−0View file
@@ -0,0 +1,37 @@
1+{
2+ "id": "strike-speed-3",
3+ "label": "3 m/s",
4+ "overrides": {
5+ "excitation": "strike",
6+ "strikeVelocity": 3,
7+ "spacing": 0.004
8+ },
9+ "metrics": {
10+ "peakPa": 2.205117702484131,
11+ "peakDbSpl": 100.84803560157386,
12+ "rmsPa": 0.00951895798535143,
13+ "centroidHz": 435.21529790921534,
14+ "t60": {
15+ "20-100": 5.627390472686013,
16+ "100-500": 4.5707678921683526,
17+ "500-2k": 2.5907910666908407,
18+ "2k-8k": 3.9744633879876843
19+ },
20+ "bandLevelsDb": {
21+ "20-100": -1.3514353071700143,
22+ "100-500": 0,
23+ "500-2k": 1.187547735231874,
24+ "2k-8k": 1.994130612116379
25+ }
26+ },
27+ "gainDb": -10,
28+ "peakDbfs": -3.1313644851465208,
29+ "run": {
30+ "steps": 6144000,
31+ "seconds": 61.56484928600001,
32+ "nx": 77,
33+ "ny": 115,
34+ "dt": 6.510416666666666e-7,
35+ "maxContactForce": 179.2267303466797
36+ }
37+}
\ No newline at end of file
docs/gallery/clips/strike-speed-3.pngadded+0−0View file
Binary file not shown.
docs/gallery/clips/strike-speed-3.wavadded+0−0View file
Binary file not shown.
docs/gallery/clips/strike-speed-4.jsonadded+37−0View file
@@ -0,0 +1,37 @@
1+{
2+ "id": "strike-speed-4",
3+ "label": "4.5 m/s",
4+ "overrides": {
5+ "excitation": "strike",
6+ "strikeVelocity": 4.5,
7+ "spacing": 0.004
8+ },
9+ "metrics": {
10+ "peakPa": 3.2714650630950928,
11+ "peakDbSpl": 104.27424582082,
12+ "rmsPa": 0.015204134411944873,
13+ "centroidHz": 785.7258882231057,
14+ "t60": {
15+ "20-100": 5.309500138060633,
16+ "100-500": 4.907877539400254,
17+ "500-2k": 2.46606147333142,
18+ "2k-8k": 3.458747776978249
19+ },
20+ "bandLevelsDb": {
21+ "20-100": -7.638003960332192,
22+ "100-500": 0,
23+ "500-2k": -0.24072680069535934,
24+ "2k-8k": 1.3345514920752777
25+ }
26+ },
27+ "gainDb": -10,
28+ "peakDbfs": 0.29484573409962195,
29+ "run": {
30+ "steps": 6144000,
31+ "seconds": 61.581769396999995,
32+ "nx": 77,
33+ "ny": 115,
34+ "dt": 6.510416666666666e-7,
35+ "maxContactForce": 274.3179931640625
36+ }
37+}
\ No newline at end of file
docs/gallery/clips/strike-speed-4.pngadded+0−0View file
Binary file not shown.
docs/gallery/clips/strike-speed-4.wavadded+0−0View file
Binary file not shown.
docs/gallery/clips/strike-speed-5.jsonadded+37−0View file
@@ -0,0 +1,37 @@
1+{
2+ "id": "strike-speed-5",
3+ "label": "6 m/s",
4+ "overrides": {
5+ "excitation": "strike",
6+ "strikeVelocity": 6,
7+ "spacing": 0.004
8+ },
9+ "metrics": {
10+ "peakPa": 4.558109760284424,
11+ "peakDbSpl": 107.15509566425658,
12+ "rmsPa": 0.022380536386267347,
13+ "centroidHz": 1578.454788876433,
14+ "t60": {
15+ "20-100": 4.823713519443493,
16+ "100-500": 4.471439813226143,
17+ "500-2k": 2.5290009859903333,
18+ "2k-8k": 3.195202801525849
19+ },
20+ "bandLevelsDb": {
21+ "20-100": -3.1385641591647087,
22+ "100-500": 0,
23+ "500-2k": 4.682382107396865,
24+ "2k-8k": 10.888707085094378
25+ }
26+ },
27+ "gainDb": -10,
28+ "peakDbfs": 3.175695577536199,
29+ "run": {
30+ "steps": 6144000,
31+ "seconds": 61.57575858599995,
32+ "nx": 77,
33+ "ny": 115,
34+ "dt": 6.510416666666666e-7,
35+ "maxContactForce": 371.9477844238281
36+ }
37+}
\ No newline at end of file
docs/gallery/clips/strike-speed-5.pngadded+0−0View file
Binary file not shown.
docs/gallery/clips/strike-speed-5.wavadded+0−0View file
Binary file not shown.
docs/gallery/index.htmladded+169−0View file
@@ -0,0 +1,169 @@
1+<!doctype html>
2+<html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1">
3+<title>Steel sheet gong: how the parameters shape the sound</title>
4+<style>
5+body { font-family: system-ui, sans-serif; margin: 0; padding: 24px; background: #15171a; color: #dfe2e6; max-width: 1400px; margin: 0 auto; line-height: 1.4; }
6+h1 { font-size: 24px; } h2 { font-size: 18px; margin-top: 40px; border-top: 1px solid #2c3036; padding-top: 16px; }
7+p { max-width: 900px; } .dim { color: #9aa0a8; font-size: 13px; } a { color: #6fa8ea; }
8+.cards { display: flex; flex-wrap: wrap; gap: 14px; }
9+.card { background: #1c1e22; border: 1px solid #2c3036; border-radius: 8px; padding: 10px; width: 320px; display: flex; flex-direction: column; gap: 6px; }
10+.card img { width: 100%; height: auto; border-radius: 4px; }
11+.card audio { width: 100%; } .label { font-weight: 600; }
12+.metrics { font-size: 12px; color: #c8cbd0; } .metrics div { padding: 1px 0; }
13+ul.toc { columns: 2; }
14+</style></head><body>
15+<h1>Steel sheet gong: how the parameters shape the sound</h1>
16+<p>Each section varies one property of the simulated sheet or of the excitation while everything else stays at the simulator defaults: a 12 by 18 inch, 22 gauge (0.79 mm) stainless steel sheet hanging in portrait orientation with a 3 mm bow across its width, heard 1 m in front of its center, recorded for 4 s. The clips are computed on a 4 mm grid (the interactive app defaults to 8 mm for speed; the 'Open in simulator' links carry the 4 mm setting, so they reproduce the clip exactly but run slower). Click a player to hear a clip. Within a section the clips share one playback gain, so the loudness differences you hear are the ones the model predicts; between sections the gain differs. The numbers under each clip are the peak pressure and sound pressure level at the listener, the RMS pressure over the clip, the spectral centroid of the sound between 0.2 and 1.2 s (a measure of brightness), and fitted 60 dB decay times of a low and a high band.</p>
17+<ul class="toc"><li><a href="#strike-speed">Drumstick: stick speed</a></li><li><a href="#strike-mass">Drumstick: stick mass</a></li></ul>
18+<section id="strike-speed">
19+<h2>Drumstick: stick speed</h2>
20+<p>A wooden stick tip (30 g effective mass) strikes the sheet at 70 percent of its width and 35 percent of its height. Speed sets both the loudness and the character: the contact force grows with speed, the contact shortens, and more energy reaches the high modes. The sound grows brighter as well as louder.</p>
21+<p class="dim">All clips in this section share the same playback gain (-10 dB relative to 1 Pa = 0 dBFS), so their loudness differences are real. Spectrograms: 0 to 5 kHz over the clip, 80 dB range, shared color scale.</p>
22+<div class="cards"><div class="card">
23+ <div class="label">0.5 m/s</div>
24+ <audio controls preload="none" src="clips/strike-speed-0.wav"></audio>
25+ <img src="clips/strike-speed-0.png" alt="spectrogram" width="640" height="200">
26+ <div class="metrics">
27+ <div>peak 0.330 Pa (84 dB SPL)</div>
28+ <div>RMS 1.4 mPa</div>
29+ <div>centroid 211 Hz</div>
30+ <div>T60 100-500 Hz 4.8 s, 2-8 kHz 7.8 s</div>
31+ <div>contact force 28 N</div>
32+ <div class="dim">wav peak -19.6 dBFS</div>
33+ </div>
34+ <a href="../../?excitation=strike&strikeVelocity=0.5&spacing=0.004&autostart=1">Open in simulator</a>
35+</div>
36+<div class="card">
37+ <div class="label">1 m/s</div>
38+ <audio controls preload="none" src="clips/strike-speed-1.wav"></audio>
39+ <img src="clips/strike-speed-1.png" alt="spectrogram" width="640" height="200">
40+ <div class="metrics">
41+ <div>peak 0.720 Pa (91 dB SPL)</div>
42+ <div>RMS 2.9 mPa</div>
43+ <div>centroid 236 Hz</div>
44+ <div>T60 100-500 Hz 4.8 s, 2-8 kHz 6.1 s</div>
45+ <div>contact force 57 N</div>
46+ <div class="dim">wav peak -12.9 dBFS</div>
47+ </div>
48+ <a href="../../?excitation=strike&strikeVelocity=1&spacing=0.004&autostart=1">Open in simulator</a>
49+</div>
50+<div class="card">
51+ <div class="label">2 m/s</div>
52+ <audio controls preload="none" src="clips/strike-speed-2.wav"></audio>
53+ <img src="clips/strike-speed-2.png" alt="spectrogram" width="640" height="200">
54+ <div class="metrics">
55+ <div>peak 1.483 Pa (97 dB SPL)</div>
56+ <div>RMS 6.3 mPa</div>
57+ <div>centroid 220 Hz</div>
58+ <div>T60 100-500 Hz 4.5 s, 2-8 kHz 4.8 s</div>
59+ <div>contact force 117 N</div>
60+ <div class="dim">wav peak -6.6 dBFS</div>
61+ </div>
62+ <a href="../../?excitation=strike&strikeVelocity=2&spacing=0.004&autostart=1">Open in simulator</a>
63+</div>
64+<div class="card">
65+ <div class="label">3 m/s</div>
66+ <audio controls preload="none" src="clips/strike-speed-3.wav"></audio>
67+ <img src="clips/strike-speed-3.png" alt="spectrogram" width="640" height="200">
68+ <div class="metrics">
69+ <div>peak 2.205 Pa (101 dB SPL)</div>
70+ <div>RMS 9.5 mPa</div>
71+ <div>centroid 435 Hz</div>
72+ <div>T60 100-500 Hz 4.6 s, 2-8 kHz 4.0 s</div>
73+ <div>contact force 179 N</div>
74+ <div class="dim">wav peak -3.1 dBFS</div>
75+ </div>
76+ <a href="../../?excitation=strike&strikeVelocity=3&spacing=0.004&autostart=1">Open in simulator</a>
77+</div>
78+<div class="card">
79+ <div class="label">4.5 m/s</div>
80+ <audio controls preload="none" src="clips/strike-speed-4.wav"></audio>
81+ <img src="clips/strike-speed-4.png" alt="spectrogram" width="640" height="200">
82+ <div class="metrics">
83+ <div>peak 3.271 Pa (104 dB SPL)</div>
84+ <div>RMS 15.2 mPa</div>
85+ <div>centroid 786 Hz</div>
86+ <div>T60 100-500 Hz 4.9 s, 2-8 kHz 3.5 s</div>
87+ <div>contact force 274 N</div>
88+ <div class="dim">wav peak 0.3 dBFS (soft-clipped)</div>
89+ </div>
90+ <a href="../../?excitation=strike&strikeVelocity=4.5&spacing=0.004&autostart=1">Open in simulator</a>
91+</div>
92+<div class="card">
93+ <div class="label">6 m/s</div>
94+ <audio controls preload="none" src="clips/strike-speed-5.wav"></audio>
95+ <img src="clips/strike-speed-5.png" alt="spectrogram" width="640" height="200">
96+ <div class="metrics">
97+ <div>peak 4.558 Pa (107 dB SPL)</div>
98+ <div>RMS 22.4 mPa</div>
99+ <div>centroid 1578 Hz</div>
100+ <div>T60 100-500 Hz 4.5 s, 2-8 kHz 3.2 s</div>
101+ <div>contact force 372 N</div>
102+ <div class="dim">wav peak 3.2 dBFS (soft-clipped)</div>
103+ </div>
104+ <a href="../../?excitation=strike&strikeVelocity=6&spacing=0.004&autostart=1">Open in simulator</a>
105+</div></div>
106+</section>
107+<section id="strike-mass">
108+<h2>Drumstick: stick mass</h2>
109+<p>The same speed with a lighter or heavier stick. A heavier stick carries more momentum, stays in contact longer, and pushes the sheet further, which favours the low modes; a light stick gives a short, bright tap.</p>
110+<p class="dim">All clips in this section share the same playback gain (-4 dB relative to 1 Pa = 0 dBFS), so their loudness differences are real. Spectrograms: 0 to 5 kHz over the clip, 80 dB range, shared color scale.</p>
111+<div class="cards"><div class="card">
112+ <div class="label">10 g</div>
113+ <audio controls preload="none" src="clips/strike-mass-0.wav"></audio>
114+ <img src="clips/strike-mass-0.png" alt="spectrogram" width="640" height="200">
115+ <div class="metrics">
116+ <div>peak 1.963 Pa (100 dB SPL)</div>
117+ <div>RMS 8.5 mPa</div>
118+ <div>centroid 740 Hz</div>
119+ <div>T60 100-500 Hz 4.2 s, 2-8 kHz 4.8 s</div>
120+ <div>contact force 169 N</div>
121+ <div class="dim">wav peak 1.9 dBFS (soft-clipped)</div>
122+ </div>
123+ <a href="../../?excitation=strike&stickMass=0.01&spacing=0.004&autostart=1">Open in simulator</a>
124+</div>
125+<div class="card">
126+ <div class="label">30 g</div>
127+ <audio controls preload="none" src="clips/strike-mass-1.wav"></audio>
128+ <img src="clips/strike-mass-1.png" alt="spectrogram" width="640" height="200">
129+ <div class="metrics">
130+ <div>peak 2.205 Pa (101 dB SPL)</div>
131+ <div>RMS 9.5 mPa</div>
132+ <div>centroid 435 Hz</div>
133+ <div>T60 100-500 Hz 4.6 s, 2-8 kHz 4.0 s</div>
134+ <div>contact force 179 N</div>
135+ <div class="dim">wav peak 2.9 dBFS (soft-clipped)</div>
136+ </div>
137+ <a href="../../?excitation=strike&stickMass=0.03&spacing=0.004&autostart=1">Open in simulator</a>
138+</div>
139+<div class="card">
140+ <div class="label">60 g</div>
141+ <audio controls preload="none" src="clips/strike-mass-2.wav"></audio>
142+ <img src="clips/strike-mass-2.png" alt="spectrogram" width="640" height="200">
143+ <div class="metrics">
144+ <div>peak 2.270 Pa (101 dB SPL)</div>
145+ <div>RMS 10.6 mPa</div>
146+ <div>centroid 893 Hz</div>
147+ <div>T60 100-500 Hz 4.0 s, 2-8 kHz 3.4 s</div>
148+ <div>contact force 182 N</div>
149+ <div class="dim">wav peak 3.1 dBFS (soft-clipped)</div>
150+ </div>
151+ <a href="../../?excitation=strike&stickMass=0.06&spacing=0.004&autostart=1">Open in simulator</a>
152+</div>
153+<div class="card">
154+ <div class="label">120 g</div>
155+ <audio controls preload="none" src="clips/strike-mass-3.wav"></audio>
156+ <img src="clips/strike-mass-3.png" alt="spectrogram" width="640" height="200">
157+ <div class="metrics">
158+ <div>peak 2.303 Pa (101 dB SPL)</div>
159+ <div>RMS 16.0 mPa</div>
160+ <div>centroid 3406 Hz</div>
161+ <div>T60 100-500 Hz 4.1 s, 2-8 kHz 3.0 s</div>
162+ <div>contact force 229 N</div>
163+ <div class="dim">wav peak 3.2 dBFS (soft-clipped)</div>
164+ </div>
165+ <a href="../../?excitation=strike&stickMass=0.12&spacing=0.004&autostart=1">Open in simulator</a>
166+</div></div>
167+</section>
168+<p class="dim">Generated by <code>steelsim gallery</code>; parameters not listed take the simulator defaults.</p>
169+</body></html>
\ No newline at end of file
docs/gallery/strike-mass.jsonadded+170−0View file
@@ -0,0 +1,170 @@
1+{
2+ "sweep": {
3+ "id": "strike-mass",
4+ "title": "Drumstick: stick mass",
5+ "text": "The same speed with a lighter or heavier stick. A heavier stick carries more momentum, stays in contact longer, and pushes the sheet further, which favours the low modes; a light stick gives a short, bright tap.",
6+ "base": {
7+ "excitation": "strike"
8+ },
9+ "param": "stickMass",
10+ "unit": "g",
11+ "scale": 0.001,
12+ "values": [
13+ 0.01,
14+ 0.03,
15+ 0.06,
16+ 0.12
17+ ]
18+ },
19+ "gainDb": -4,
20+ "clips": [
21+ {
22+ "id": "strike-mass-0",
23+ "label": "10 g",
24+ "overrides": {
25+ "excitation": "strike",
26+ "stickMass": 0.01,
27+ "spacing": 0.004
28+ },
29+ "metrics": {
30+ "peakPa": 1.962693214416504,
31+ "peakDbSpl": 99.83644850665327,
32+ "rmsPa": 0.008518429042423257,
33+ "centroidHz": 740.2078876605501,
34+ "t60": {
35+ "20-100": 5.525022587168028,
36+ "100-500": 4.223548524565061,
37+ "500-2k": 2.316918055245375,
38+ "2k-8k": 4.825038756489326
39+ },
40+ "bandLevelsDb": {
41+ "20-100": -2.521019636683148,
42+ "100-500": 0,
43+ "500-2k": -1.1762739005712746,
44+ "2k-8k": 5.672379657464713
45+ }
46+ },
47+ "gainDb": -4,
48+ "peakDbfs": 1.857048419932885,
49+ "run": {
50+ "steps": 6144000,
51+ "seconds": 61.59477831700002,
52+ "nx": 77,
53+ "ny": 115,
54+ "dt": 6.510416666666666e-7,
55+ "maxContactForce": 169.22738647460938
56+ }
57+ },
58+ {
59+ "id": "strike-mass-1",
60+ "label": "30 g",
61+ "overrides": {
62+ "excitation": "strike",
63+ "stickMass": 0.03,
64+ "spacing": 0.004
65+ },
66+ "metrics": {
67+ "peakPa": 2.205117702484131,
68+ "peakDbSpl": 100.84803560157386,
69+ "rmsPa": 0.00951895798535143,
70+ "centroidHz": 435.21529790921534,
71+ "t60": {
72+ "20-100": 5.627390472686013,
73+ "100-500": 4.5707678921683526,
74+ "500-2k": 2.5907910666908407,
75+ "2k-8k": 3.9744633879876843
76+ },
77+ "bandLevelsDb": {
78+ "20-100": -1.3514353071700143,
79+ "100-500": 0,
80+ "500-2k": 1.187547735231874,
81+ "2k-8k": 1.994130612116379
82+ }
83+ },
84+ "gainDb": -4,
85+ "peakDbfs": 2.8686355148534783,
86+ "run": {
87+ "steps": 6144000,
88+ "seconds": 61.487249779,
89+ "nx": 77,
90+ "ny": 115,
91+ "dt": 6.510416666666666e-7,
92+ "maxContactForce": 179.2267303466797
93+ }
94+ },
95+ {
96+ "id": "strike-mass-2",
97+ "label": "60 g",
98+ "overrides": {
99+ "excitation": "strike",
100+ "stickMass": 0.06,
101+ "spacing": 0.004
102+ },
103+ "metrics": {
104+ "peakPa": 2.2698206901550293,
105+ "peakDbSpl": 101.09923109532262,
106+ "rmsPa": 0.010550695050977802,
107+ "centroidHz": 893.46093233844,
108+ "t60": {
109+ "20-100": 5.131759901917673,
110+ "100-500": 3.972788364757304,
111+ "500-2k": 2.371926066794071,
112+ "2k-8k": 3.365816125750012
113+ },
114+ "bandLevelsDb": {
115+ "20-100": -5.051533234627442,
116+ "100-500": 0,
117+ "500-2k": -0.4614149370542684,
118+ "2k-8k": -2.5053567106480443
119+ }
120+ },
121+ "gainDb": -4,
122+ "peakDbfs": 3.1198310086022567,
123+ "run": {
124+ "steps": 6144000,
125+ "seconds": 62.097485610000035,
126+ "nx": 77,
127+ "ny": 115,
128+ "dt": 6.510416666666666e-7,
129+ "maxContactForce": 182.28599548339844
130+ }
131+ },
132+ {
133+ "id": "strike-mass-3",
134+ "label": "120 g",
135+ "overrides": {
136+ "excitation": "strike",
137+ "stickMass": 0.12,
138+ "spacing": 0.004
139+ },
140+ "metrics": {
141+ "peakPa": 2.302820920944214,
142+ "peakDbSpl": 101.22460341335466,
143+ "rmsPa": 0.01595159288182336,
144+ "centroidHz": 3406.145355070889,
145+ "t60": {
146+ "20-100": 4.884018982524845,
147+ "100-500": 4.091901974573413,
148+ "500-2k": 2.5341044098067655,
149+ "2k-8k": 2.951250872067345
150+ },
151+ "bandLevelsDb": {
152+ "20-100": -5.8572487165952225,
153+ "100-500": 0,
154+ "500-2k": 1.2501368494576077,
155+ "2k-8k": 7.195515904877691
156+ }
157+ },
158+ "gainDb": -4,
159+ "peakDbfs": 3.245203326634274,
160+ "run": {
161+ "steps": 6144000,
162+ "seconds": 62.11256672299991,
163+ "nx": 77,
164+ "ny": 115,
165+ "dt": 6.510416666666666e-7,
166+ "maxContactForce": 229.22804260253906
167+ }
168+ }
169+ ]
170+}
\ No newline at end of file
docs/gallery/strike-speed.jsonadded+245−0View file
@@ -0,0 +1,245 @@
1+{
2+ "sweep": {
3+ "id": "strike-speed",
4+ "title": "Drumstick: stick speed",
5+ "text": "A wooden stick tip (30 g effective mass) strikes the sheet at 70 percent of its width and 35 percent of its height. Speed sets both the loudness and the character: the contact force grows with speed, the contact shortens, and more energy reaches the high modes. The sound grows brighter as well as louder.",
6+ "base": {
7+ "excitation": "strike"
8+ },
9+ "param": "strikeVelocity",
10+ "unit": "m/s",
11+ "values": [
12+ 0.5,
13+ 1,
14+ 2,
15+ 3,
16+ 4.5,
17+ 6
18+ ]
19+ },
20+ "gainDb": -10,
21+ "clips": [
22+ {
23+ "id": "strike-speed-0",
24+ "label": "0.5 m/s",
25+ "overrides": {
26+ "excitation": "strike",
27+ "strikeVelocity": 0.5,
28+ "spacing": 0.004
29+ },
30+ "metrics": {
31+ "peakPa": 0.32989823818206787,
32+ "peakDbSpl": 84.34700001085253,
33+ "rmsPa": 0.0013752768866802387,
34+ "centroidHz": 211.35075889523384,
35+ "t60": {
36+ "20-100": 5.421595189026437,
37+ "100-500": 4.829842234560236,
38+ "500-2k": 2.584959790972203,
39+ "2k-8k": 7.753386829472608
40+ },
41+ "bandLevelsDb": {
42+ "20-100": 0.43503645593334284,
43+ "100-500": 0,
44+ "500-2k": -5.277500098983353,
45+ "2k-8k": -2.7251999649091854
46+ }
47+ },
48+ "gainDb": -10,
49+ "peakDbfs": -19.632400075867853,
50+ "run": {
51+ "steps": 6144000,
52+ "seconds": 62.09852399299999,
53+ "nx": 77,
54+ "ny": 115,
55+ "dt": 6.510416666666666e-7,
56+ "maxContactForce": 27.824155807495117
57+ }
58+ },
59+ {
60+ "id": "strike-speed-1",
61+ "label": "1 m/s",
62+ "overrides": {
63+ "excitation": "strike",
64+ "strikeVelocity": 1,
65+ "spacing": 0.004
66+ },
67+ "metrics": {
68+ "peakPa": 0.7198619842529297,
69+ "peakDbSpl": 91.12438487026358,
70+ "rmsPa": 0.002925910255742066,
71+ "centroidHz": 236.18250592388765,
72+ "t60": {
73+ "20-100": 5.320227447271335,
74+ "100-500": 4.771006973144124,
75+ "500-2k": 2.4780040581908356,
76+ "2k-8k": 6.072417631425333
77+ },
78+ "bandLevelsDb": {
79+ "20-100": -2.6954138963976675,
80+ "100-500": 0,
81+ "500-2k": -6.252126176052808,
82+ "2k-8k": -3.7111693800043906
83+ }
84+ },
85+ "gainDb": -10,
86+ "peakDbfs": -12.855015216456797,
87+ "run": {
88+ "steps": 6144000,
89+ "seconds": 61.601261146000006,
90+ "nx": 77,
91+ "ny": 115,
92+ "dt": 6.510416666666666e-7,
93+ "maxContactForce": 57.076847076416016
94+ }
95+ },
96+ {
97+ "id": "strike-speed-2",
98+ "label": "2 m/s",
99+ "overrides": {
100+ "excitation": "strike",
101+ "strikeVelocity": 2,
102+ "spacing": 0.004
103+ },
104+ "metrics": {
105+ "peakPa": 1.4831573963165283,
106+ "peakDbSpl": 97.40314492420696,
107+ "rmsPa": 0.0063310579870730676,
108+ "centroidHz": 219.54177547702503,
109+ "t60": {
110+ "20-100": 5.531767562097402,
111+ "100-500": 4.46948516550146,
112+ "500-2k": 2.398375013569001,
113+ "2k-8k": 4.846408972532886
114+ },
115+ "bandLevelsDb": {
116+ "20-100": -1.132559844659724,
117+ "100-500": 0,
118+ "500-2k": -2.2850845475978403,
119+ "2k-8k": -3.067700239340308
120+ }
121+ },
122+ "gainDb": -10,
123+ "peakDbfs": -6.576255162513417,
124+ "run": {
125+ "steps": 6144000,
126+ "seconds": 61.652156889999986,
127+ "nx": 77,
128+ "ny": 115,
129+ "dt": 6.510416666666666e-7,
130+ "maxContactForce": 117.44657135009766
131+ }
132+ },
133+ {
134+ "id": "strike-speed-3",
135+ "label": "3 m/s",
136+ "overrides": {
137+ "excitation": "strike",
138+ "strikeVelocity": 3,
139+ "spacing": 0.004
140+ },
141+ "metrics": {
142+ "peakPa": 2.205117702484131,
143+ "peakDbSpl": 100.84803560157386,
144+ "rmsPa": 0.00951895798535143,
145+ "centroidHz": 435.21529790921534,
146+ "t60": {
147+ "20-100": 5.627390472686013,
148+ "100-500": 4.5707678921683526,
149+ "500-2k": 2.5907910666908407,
150+ "2k-8k": 3.9744633879876843
151+ },
152+ "bandLevelsDb": {
153+ "20-100": -1.3514353071700143,
154+ "100-500": 0,
155+ "500-2k": 1.187547735231874,
156+ "2k-8k": 1.994130612116379
157+ }
158+ },
159+ "gainDb": -10,
160+ "peakDbfs": -3.1313644851465208,
161+ "run": {
162+ "steps": 6144000,
163+ "seconds": 61.56484928600001,
164+ "nx": 77,
165+ "ny": 115,
166+ "dt": 6.510416666666666e-7,
167+ "maxContactForce": 179.2267303466797
168+ }
169+ },
170+ {
171+ "id": "strike-speed-4",
172+ "label": "4.5 m/s",
173+ "overrides": {
174+ "excitation": "strike",
175+ "strikeVelocity": 4.5,
176+ "spacing": 0.004
177+ },
178+ "metrics": {
179+ "peakPa": 3.2714650630950928,
180+ "peakDbSpl": 104.27424582082,
181+ "rmsPa": 0.015204134411944873,
182+ "centroidHz": 785.7258882231057,
183+ "t60": {
184+ "20-100": 5.309500138060633,
185+ "100-500": 4.907877539400254,
186+ "500-2k": 2.46606147333142,
187+ "2k-8k": 3.458747776978249
188+ },
189+ "bandLevelsDb": {
190+ "20-100": -7.638003960332192,
191+ "100-500": 0,
192+ "500-2k": -0.24072680069535934,
193+ "2k-8k": 1.3345514920752777
194+ }
195+ },
196+ "gainDb": -10,
197+ "peakDbfs": 0.29484573409962195,
198+ "run": {
199+ "steps": 6144000,
200+ "seconds": 61.581769396999995,
201+ "nx": 77,
202+ "ny": 115,
203+ "dt": 6.510416666666666e-7,
204+ "maxContactForce": 274.3179931640625
205+ }
206+ },
207+ {
208+ "id": "strike-speed-5",
209+ "label": "6 m/s",
210+ "overrides": {
211+ "excitation": "strike",
212+ "strikeVelocity": 6,
213+ "spacing": 0.004
214+ },
215+ "metrics": {
216+ "peakPa": 4.558109760284424,
217+ "peakDbSpl": 107.15509566425658,
218+ "rmsPa": 0.022380536386267347,
219+ "centroidHz": 1578.454788876433,
220+ "t60": {
221+ "20-100": 4.823713519443493,
222+ "100-500": 4.471439813226143,
223+ "500-2k": 2.5290009859903333,
224+ "2k-8k": 3.195202801525849
225+ },
226+ "bandLevelsDb": {
227+ "20-100": -3.1385641591647087,
228+ "100-500": 0,
229+ "500-2k": 4.682382107396865,
230+ "2k-8k": 10.888707085094378
231+ }
232+ },
233+ "gainDb": -10,
234+ "peakDbfs": 3.175695577536199,
235+ "run": {
236+ "steps": 6144000,
237+ "seconds": 61.57575858599995,
238+ "nx": 77,
239+ "ny": 115,
240+ "dt": 6.510416666666666e-7,
241+ "maxContactForce": 371.9477844238281
242+ }
243+ }
244+ ]
245+}
\ No newline at end of file
↑↓ move↵openescclose