Skip to content

acoustickit: the cymbals are a linear bank's ceiling, not a tuning problem #64

Description

@bdbarnett

Recording this so nobody spends a week tuning mode tables to fix something that is structural.

acoustickit's ride, crash and hi-hats are the weakest voices in the kit. The dossier (docs/effects-internal/dossiers/instruments/acoustickit.md in the workspace anchor, §3) has the literature on why, and it is specific:

  • Skare & Abel, DAFx-19, Real-Time Modal Synthesis of Crash Cymbals: "a cowbell may be synthesized with a few dozen modes, but qualitatively, a cymbal wash benefits from hundreds or even thousands of modes." Their working system runs 1600–1900 modes per cymbal on a GPU. audiomodal.Bank caps at 64, on a 360 MHz microcontroller, and acoustickit gives the crash seven.
  • The same paper names what mode count alone will not buy: "the cymbal attack is instantaneous, and clearly lacks the interesting 'bloom' as we move from linear to nonlinear regimes." A real cymbal's high-frequency content builds over the first tens of milliseconds as energy cascades up through the plate. A linear bank's onset is present or absent, all at once.

So the honest grading is: judge the cymbals against the dossier's §6 criteria, not against a real crash.

Two things that would genuinely move them, in the order I would try them:

  1. Shape the bloom into the excitation. The bank is linear and fed from outside, so an excitation whose high-frequency content ramps over ~30 ms would put some of the cascade in without touching the node. Cheap, and it is the one idea here that costs nothing at runtime.
  2. Velocity-switched mode sets, which is Skare & Abel's own workaround — several tables per cymbal, interpolated by strike energy. set_modes() already loads a whole table in one call, so the machinery exists; what is missing is the tables.

Not doing either now: the kit is at 31% of the P4's block and works, and this is the part the literature says will stay imperfect.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    parkedParked by ruling, with a named trigger

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions