c696b9aCymbal: plate bending via per-triangle shape operators, felt centre support, stick and mallet with angle and friction, far-field microphoneJeremy Magland 1import type { CymbalParams } from './model';
3// 8-inch toy cymbal in B20 bronze (E ~ 100 GPa, 8600 kg/m^3), 0.8 mm thick.
4const toy: CymbalParams = {
5 diameter: 0.2,
6 rings: 10,
7 holeRadius: 0.006,
8 bowHeight: 0,
9 bellDiameter: 0.07,
10 bellHeight: 0,
11 thickness: 0.0008,
12 youngs: 1.0e11,
13 density: 8600,
14 soften: 30,
15fbb00Cymbal: replace felt washers with a minimal rigid hub (pinned beads around the hole), no support dampingJeremy Magland 15 hubRadius: 0.011, // the first ring of beads around the hole
c696b9aCymbal: plate bending via per-triangle shape operators, felt centre support, stick and mallet with angle and friction, far-field microphoneJeremy Magland 16 t60Low: 4,
17 fLow: 200,
18 t60High: 1,
19 fHigh: 2000,
20 excitation: 'stick',
21 excR: 0.85,
22 excAngle: 0,
23 hitAngle: 0,
24 excWidth: 0.015, // wider than a stick tip: one light bead alone makes the stick chatter
25 stickMass: 0.03,
26 stickSpeed: 4,
27 stickK: 5e8,
28 malletMass: 0.03,
29 malletSpeed: 2,
30 malletK: 1e7,
31 malletP: 2.5,
32 friction: 0.3,
33 strikeVel: 1,
34 forcePeak: 50,
35 forceMs: 0.5,
36 micDistance: 1,
37 micElevation: 30,
38 micAzimuth: 30,
39 duration: 1,
40 fs: 48000,
41 cfl: 0.5,
42 frameRate: 2000,
43};
45export interface CymbalPreset {
46 name: string;
47 description: string;
48 params: CymbalParams;
49}
51export const CYMBAL_PRESETS: CymbalPreset[] = [
52 {
53 name: 'Flat 8" toy, stick (fast)',
54 description:
15fbb00Cymbal: replace felt washers with a minimal rigid hub (pinned beads around the hole), no support dampingJeremy Magland 55 'Flat 0.8 mm bronze plate, 20 cm, ~370 beads, held only at a small hub (the 6 beads around the hole). In-plane stiffness softened 30× for speed (bending is real). Stick hit near the edge, spread over a 15 mm patch (a single bead would make the stick chatter). Bending is resolved to about 1.3 kHz.',
c696b9aCymbal: plate bending via per-triangle shape operators, felt centre support, stick and mallet with angle and friction, far-field microphoneJeremy Magland 56 params: toy,
57 },
58 {
59 name: 'Flat 8" toy, real bronze (slow)',
60 description: 'Same plate with real in-plane stiffness: about 5× more time steps.',
61 params: { ...toy, soften: 1 },
62 },
63 {
64 name: 'Bow and bell',
65 description: '12 mm bow (dome) and a 7 cm bell, 12 mm high. Curvature couples bending to in-plane stretching, so softening matters more here.',
66 params: { ...toy, bowHeight: 0.012, bellHeight: 0.012 },
67 },
68 {
69 name: 'Glancing crash stroke',
70 description: 'Stick at 6 m/s, 60° from the normal toward the rim, with friction: pushes the plate sideways as well as down.',
71 params: { ...toy, bowHeight: 0.012, bellHeight: 0.012, stickSpeed: 6, hitAngle: 60 },
72 },
73 {
74 name: 'Felt mallet',
75 description: 'Soft 30 g mallet at 2 m/s, longer contact, darker sound.',
76 params: { ...toy, excitation: 'mallet', excR: 0.7, excWidth: 0.008 },
77 },
78 {
79 name: 'Coarse quick look',
80 description: '6 rings (~120 beads): fast, but bending is only resolved to a few hundred hertz.',
81 params: { ...toy, rings: 6 },
82 },
83];