Skip to content

docs(site): document the whole instrument catalog - #27

Merged
spacedevin merged 1 commit into
mainfrom
docs/synths-catalog
Sep 1, 2026
Merged

docs(site): document the whole instrument catalog#27
spacedevin merged 1 commit into
mainfrom
docs/synths-catalog

Conversation

@spacedevin

Copy link
Copy Markdown
Owner

The site documented three voices — gameBoyDmg, gbaDirectSound, basicOsc — and said nothing about the other thirty. packages/synths had no presence on the site at all: site/build.mjs lists packages/player explicitly and never mentioned synths, so even the package README never rendered.

What this adds

  • packages/synths/CATALOG.md — all 33 voices, grouped (chip emulations, hard sync, analog & electronic, atmospheric, acoustic models, percussion, vocal), each with its label, description, every parameter with its default, and the factory presets where they exist (26 of them).
  • An Instruments section in site/build.mjs, rendering /synths/ and /synths/catalog/.

The catalog is generated from generatorCatalog() and defaultParamsForGeneratorId(), not written by hand, so it cannot drift from the code. Presets are read from the app that authored them.

This matters beyond completeness: I wrote pieces against this catalog by guessing parameter scales from UI knob ranges and got several badly wrong — acid303's envMod is 3000–6000 Hz and I used 0.8, killing the filter envelope that is the instrument; sub808's drive is 0–1 and I used 20. The defaults and presets being written down is what stops that.

Verified

node site/build.mjs succeeds; /synths/index.html and /synths/catalog/index.html render; all 33 generator ids appear on the catalog page; 26 factory-preset blocks; the page is in the sidebar.

Not in this PR

The site's player still synthesizes only its own three voices, so a ```deck block using syncLead would be substituted for `basicOsc` and play the wrong sound. Playable examples for the other thirty need `deck-player` to consume this catalog first — the `{ stopTime, disconnects }` retrofit. Documenting them without that would put audible lies on the page, so this PR documents the catalog and adds no new playable blocks.

The site rendered examples for three voices — gameBoyDmg, gbaDirectSound, basicOsc — and
said nothing about the other thirty. The catalog page now covers all 33: label,
description, every parameter with its default, and the factory presets where they exist.

Generated from generatorCatalog() and defaultParamsForGeneratorId() rather than written by
hand, so it cannot drift from the code. Presets come from the app that authored them.

packages/synths also had no presence on the site at all — site/build.mjs listed
packages/player explicitly and never mentioned it, so the package README did not render.
It has an Instruments section now.

Verified: site builds, /synths/ and /synths/catalog/ render, all 33 ids appear on the
page, 26 preset blocks, and the catalog is in the sidebar.
@spacedevin
spacedevin merged commit 1271eab into main Sep 1, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant