Skip to content

docs(player): the catalog is a package, not an unfinished port - #25

Merged
spacedevin merged 1 commit into
mainfrom
docs/player-catalog-is-a-package
Sep 1, 2026
Merged

docs(player): the catalog is a package, not an unfinished port#25
spacedevin merged 1 commit into
mainfrom
docs/player-catalog-is-a-package

Conversation

@spacedevin

Copy link
Copy Markdown
Owner

The Generators section still described a source-level port from Deckard that stalled at tier 1, with two tiers marked not yet ported. That stopped being true when @spacedevin/deck-synths shipped from this repo in #23 — all 33 voices are here now, patch and matrixFm included.

Replaces the tier table with what is actually left:

This package still carries its own gameBoyDmg, gbaDirectSound and basicOsc under src/generators/, and they are not drop-in interchangeable with the catalog's copies. These return { stopTime, disconnects } and let the caller prune; the catalog's voices self-clean with a wall-clock setTimeout. That return contract is precisely what makes renderDeckToBuffer and the Node tests possible — a timer has no meaning inside an OfflineAudioContext — so consolidating means retrofitting all 33 voices to it first and moving the timer policy to the host's call site.

Writing that down matters because the next person to look at this will otherwise assume the two sets of voices are equivalent and swap them.

Also corrects the out-of-scope bullet: voice implementations are out of scope here because they live in the sibling package, not because instrument catalogs are forbidden.

Docs only. Player suite 46/46.

The Generators section described a port from Deckard stalled at tier 1, with two tiers
'not yet ported'. That stopped being true when @spacedevin/deck-synths shipped from this
repo — all 33 voices are here, patch and matrixFm included.

Says what is actually left instead: this package still carries its own gameBoyDmg,
gbaDirectSound and basicOsc, and they are not interchangeable with the catalog's copies
because these return { stopTime, disconnects } for the caller to prune while the catalog's
self-clean with a wall-clock setTimeout. That return contract is what makes
renderDeckToBuffer and the Node tests work — a timer means nothing inside an
OfflineAudioContext — so consolidating means retrofitting all 33 first.

Also corrects the out-of-scope line: voice implementations are out of scope here because
they live in the sibling package, not because catalogs are forbidden.
@spacedevin
spacedevin merged commit e88c900 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