import type { DrumParams } from './model'; // Mylar-like head: 0.19 mm film, surface density 0.26 kg/m^2, E t ~ 8.6e5 N/m. const fast: DrumParams = { diameter: 0.3, rings: 12, density: 0.26, tension: 1500, // c = 76 m/s, ideal f01 ~ 194 Hz inPlane: 12000, // softened: in-plane waves only ~3x faster than transverse t60Low: 1.2, fLow: 200, t60High: 0.25, fHigh: 3000, excitation: 'mallet', excR: 0.35, excAngle: 0, excWidth: 0.008, malletMass: 0.02, malletSpeed: 3, feltK: 1e8, feltP: 2.5, strikeVel: 1, forcePeak: 50, forceMs: 1, pressAmp: 0.003, pickupMode: 'sum', pickupR: 0.5, pickupAngle: 120, pickupAxis: 'y', duration: 1.5, fs: 48000, cfl: 0.5, frameRate: 2000, }; export interface DrumPreset { name: string; description: string; params: DrumParams; } export const DRUM_PRESETS: DrumPreset[] = [ { name: 'Tom, fast (softened in-plane)', description: '30 cm head, ~470 beads, 1500 N/m, ideal fundamental ~194 Hz. In-plane springs softened about 70x for speed: small-amplitude pitch is unchanged, but large hits glide and couple more than a real head.', params: fast, }, { name: 'Tom, realistic Mylar (slow)', description: 'Same head with Mylar-like in-plane stiffness (E·t = 8.6e5 N/m). Accurate in-plane behaviour, about 6x more time steps.', params: { ...fast, inPlane: 8.6e5 }, }, { name: 'Hard hit near the rim', description: 'Fast head, light hard mallet at 4 m/s close to the rim: short contact, bright attack, many modes.', params: { ...fast, excR: 0.8, malletMass: 0.01, malletSpeed: 4, feltK: 1e9, feltP: 2.8, excWidth: 0.005 }, }, { name: 'Soft mallet in the centre', description: 'Heavy soft mallet at the centre: long contact, mostly the axisymmetric modes, dark sound.', params: { ...fast, excR: 0, malletMass: 0.05, malletSpeed: 1.5, feltK: 2e6, feltP: 2.3, excWidth: 0.015 }, }, { name: 'Small coarse drum', description: '6 rings (~130 beads): runs quickly; the coarse lattice is audibly more inharmonic than a real head.', params: { ...fast, diameter: 0.2, rings: 6, excWidth: 0.01 }, }, ];