Give your interface
a harmonious voice.

Nine sound families, zero audio files. Synthesized live to light up your interactions without making noise.

Tune it here, then copy the exact play() call into your own code.

01 · Families

Nine voices, one instrument.

Each family is a complete sonic identity. Call setFamily() once to pick the one that matches your product, and every instance inherits its character.

02 · Instances

Dynamic Interactions

Advanced sound behaviors designed for real world application logic. Call play() or playContinuous() for anything more than a single attribute. Each card below is live, so go ahead and try it.

40%

playContinuous('slider')

Continuous feedback that quantizes pitch while you drag any range input.

Drag to hear it.

play('listening')

A stateful cue for voice sessions. It tells users the moment your agent starts and stops hearing them.

Tap to start, tap again to stop.

invoice_2026.pdf

play('delete')

Programmatic only, by design. It plays after your own confirmation step, never on a raw click.

Confirm to trigger the sound.

03 · Why chordal

Pick a family for consistency. Tune each call for control.

Lightweight, flexible, and zero friction. Hover any card to see it in action.

04 · Get started

Two lines from silent to alive.

1. Install

$ npm install chordal

2. Mark up and bind

<button data-sound-hover data-sound-click>Save</button>

import { bind } from 'chordal';
bind();

Full API, every attribute, and the family/instance reference live in the docs.