https://github.com/ruguevara/taym
Chip-agnostic interchange format for PSG music with timer tricks (PWM, duty sweeps, envelope retriggers, samples) — spec + Python/C reference implementations. Source you compile from, not a playback format.
https://github.com/ruguevara/taym
ay-3-8910 chiptune demoscene interchange-format music psg ym2149
Last synced: 14 days ago
JSON representation
Chip-agnostic interchange format for PSG music with timer tricks (PWM, duty sweeps, envelope retriggers, samples) — spec + Python/C reference implementations. Source you compile from, not a playback format.
- Host: GitHub
- URL: https://github.com/ruguevara/taym
- Owner: ruguevara
- License: mit
- Created: 2026-06-24T19:26:38.000Z (30 days ago)
- Default Branch: master
- Last Pushed: 2026-06-27T15:49:34.000Z (27 days ago)
- Last Synced: 2026-06-27T16:15:15.627Z (27 days ago)
- Topics: ay-3-8910, chiptune, demoscene, interchange-format, music, psg, ym2149
- Language: Python
- Homepage:
- Size: 115 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Agents: AGENTS.md
Awesome Lists containing this project
README
# TAYM interchange format
A chip-oriented *interchange* format for music with timer tricks. Trackers and
synthesis tools export TAYM; platform-specific converters turn it into their own
runtime formats for retrocomputer platforms. This format is not intended for
direct multiplatform playback.
The format is chip-agnostic: although the name references the AY-3-8910
(TAYM is acronym for "Timer-tricks AY Music", spelled as "time"), the format
targets any retro music chip (SID, OPL, SN76489, etc.) where timer-trick
techniques apply.
This repository holds the **format specification** and **reference
implementations** of it. Start with the
[overview](docs/TAYM-overview.md) for the mental model, then the
[normative spec (draft 0.1)](docs/TAYM-format-draft-0.1.md).
## Layout
```
docs/ the format specification (language-neutral, normative)
python/ Python reference reader/writer/validator + AY reference renderer
c/ C reference model + reader/writer
```
- **[`docs/TAYM-format-draft-0.1.md`](docs/TAYM-format-draft-0.1.md)** — the
normative spec (draft 0.1). [`docs/TAYM-overview.md`](docs/TAYM-overview.md)
is the informal tour; read it first.
- **`python/`** — the `taym` package: codec, strict spec-section-14 validator,
stats, dumps, and an offline AY reference renderer (`taym.engine`, the audio
oracle). `pip install taym`. See `python/README.md`.
- **`c/`** — a C reference model plus structural reader/writer, so a plain C
consumer has a vetted implementation to start from. It intentionally omits
section-14 semantic validation and rendering.
## On LLM-assisted tooling
The reference implementation here was largely written with the help of LLM
coding agents. That is intentional, not incidental: in practice, much of the
tooling around this format — readers, writers, and platform converters — will
likely be written with AI assistance anyway. So the project leans into it. The
spec is deliberately generic and self-contained, and the reference code is
plain and conventional, precisely so that a similar LLM can read the spec, study
the reference, and produce a correct implementation for a new platform with
minimal friction. Easy for a human to understand, easy for a model to
understand — same goal.
In the demoscene, hacker craftsmanship lives mostly in the tight, elegant code
written for the target platforms themselves — not so much in the interchange
format's tooling. So letting an LLM handle the readers, writers, and converters
frees that craft to go where it actually matters.
## License
MIT — see `LICENSE`.