open source · zero audio files · zero dependencies

Procedural
sounds
for the web.

No audio files. No config. No setup. Pure Web Audio synthesis at runtime. 124 sounds. One import.

$ npm i resoniq.js
124
sounds
16
categories
0
audio files
0
dependencies

Your button clicks in silence. Your form submits in silence. Your delete confirmation — the one that wipes everything — in silence.

sound library

Every sound, a reason.

Not samples. Not presets. Each one is synthesized — a specific frequency, envelope, and character designed for a specific moment in your UI, game, or app. All 124 are generated in your browser at runtime — click any row to hear it.

usage

One import. Anywhere.

Not a React library. Not a Vue plugin. A plain JavaScript object that works wherever JS runs.

sequences

Chain API. For dramatic people.

Every play() returns a handle — so you can do things that are either genuinely useful or deeply unnecessary. Both are valid.

api

The whole API.

We're not hiding anything. This is genuinely it.


    

rest api

How to connect.

resoniq ships an optional Express backend that serves sound metadata as JSON. Audio still plays in the browser — the API never streams audio. Follow these steps to run it and connect.

  1. 1

    Install & generate the catalog

    From the repo root, install deps and export the sound catalog the API reads.

    # from repo root
    npm install
    npm run export:catalog
  2. 2

    Start the API server

    This installs the backend and boots it on http://localhost:3001.

    # from repo root
    npm run dev:api
  3. 3

    Explore the endpoints

    Five read-only JSON endpoints. Filter sounds by category with ?category=.

    MethodPathReturns
    GET/apiAPI overview
    GET/api/healthHealth + sound count
    GET/api/soundsAll sounds (filterable)
    GET/api/sounds/:idOne sound + usage snippet
    GET/api/catalogSounds grouped by category
  4. 4

    Fetch from your app

    Read metadata from the API, then play the sound in the browser with resoniq.

    
            
  5. 5

    Test it live

    With the API running, hit an endpoint right here. (Requests go to http://localhost:3001.)

    // response will appear here…