tonguedrum.app v1.4
// synthèse modale temps réel · webaudio // 8 partiels inharmoniques · corps helmholtz // sans échantillons · entièrement procédural

Modélisation physique.
Pas d'échantillons.

Huit partiels inharmoniques par note. Résonance de corps Helmholtz. Amortissement non linéaire qui laisse la vélocité agir sur le timbre et le sustain. Vibration sympathique entre les languettes frappées et les languettes au repos. Chaque son est généré en temps réel.

latence<8ms
partiels/note8
fréquence d'éch.44.1k
précisionfloat32
gammes26
poids de la page<30 KB
enregistrementWAV · 2min
licenceMIT
synth/modal-bank.ts
// 8 partiels modaux d'une languette d'acier frappée :
// (1,1) fondamentale + partenaire de battement désaccordé,
// (2,1) (3,1) (1,2) (4,1) harmoniques, (5,1) scintillement.
const MODAL_MODES = [
  { ratio: 1.000, amp: 1.00,  Q: 800, type: 'fundamental' },
  { ratio: 1.001, amp: 0.08,  Q: 900, type: 'beating' },
  { ratio: 2.005, amp: 0.24,  Q: 600, type: 'overtone' },
  { ratio: 2.012, amp: 0.04,  Q: 500, type: 'beating' },
  { ratio: 2.998, amp: 0.07,  Q: 400, type: 'overtone' },
  { ratio: 3.520, amp: 0.03,  Q: 350, type: 'edge' },
  { ratio: 4.015, amp: 0.025, Q: 300, type: 'overtone' },
  { ratio: 5.98,  amp: 0.008, Q: 250, type: 'shimmer' },
];

function strike(note, velocity) {
  return MODAL_MODES.map((m) => ({
    freq:    note.freq * m.ratio,
    gain:    velocity * m.amp,
    Q:       m.Q,
    damping: nonlinear(velocity),
  }));
}