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,
15 t60Low: 8,
16 fLow: 200,
17 t60High: 4,
18 fHigh: 2000,
19 excitation: 'stick',
20 excR: 0.85,
21 excAngle: 0,
22 hitAngle: 0,
23 excWidth: 0.015, // wider than a stick tip: one light bead alone makes the stick chatter
24 stickMass: 0.03,
25 stickSpeed: 4,
26 stickK: 5e8,
27 malletMass: 0.03,
28 malletSpeed: 2,
29 malletK: 1e7,
30 malletP: 2.5,
31 friction: 0.3,
32 strikeVel: 1,
33 forcePeak: 50,
34 forceMs: 0.5,
35 micDistance: 1,
36 micElevation: 30,
37 micAzimuth: 30,
38 duration: 1,
39 fs: 48000,
40 cfl: 0.5,
41 frameRate: 2000,
42};
44export interface CymbalPreset {
45 name: string;
46 description: string;
47 params: CymbalParams;
48}
50export const CYMBAL_PRESETS: CymbalPreset[] = [
51 {
52 name: 'Flat 8" toy, stick (fast)',
53 description:
54 'Flat 0.8 mm bronze plate, 20 cm, ~370 beads, free (nothing holds it; its rigid motion is removed). 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.',
55 params: toy,
56 },
57 {
58 name: 'Flat 8" toy, real bronze (slow)',
59 description: 'Same plate with real in-plane stiffness: about 5× more time steps.',
60 params: { ...toy, soften: 1 },
61 },
62 {
63 name: 'Bow and bell',
64 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.',
65 params: { ...toy, bowHeight: 0.012, bellHeight: 0.012 },
66 },
67 {
68 name: 'Glancing crash stroke',
69 description: 'Stick at 6 m/s, 60° from the normal toward the rim, with friction: pushes the plate sideways as well as down.',
70 params: { ...toy, bowHeight: 0.012, bellHeight: 0.012, stickSpeed: 6, hitAngle: 60 },
71 },
72 {
73 name: 'Felt mallet',
74 description: 'Soft 30 g mallet at 2 m/s, longer contact, darker sound.',
75 params: { ...toy, excitation: 'mallet', excR: 0.7, excWidth: 0.008 },
76 },
77 {
78 name: 'Coarse quick look',
79 description: '6 rings (~120 beads): fast, but bending is only resolved to a few hundred hertz.',
80 params: { ...toy, rings: 6 },
81 },
82];