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