SID Song Explorer is a browser player and inspector for Commodore 64 SID music. It connects a heard passage to voice/register activity and source-backed explanations, using an existing SID emulator.
SID Song Crafter — arrange and export the music explored here.
- Williams Sound Explorer and Designer — explore and design arcade sound effects.
The published mono proof of concept is complete, with user acceptance of actual Safari full-ending playback and inspection usefulness on 2026-10-19. The mono validation record retains its automated and human evidence. The working copy adds the unified timeline and six catalog entries, including two live stereo candidates. Stereo is local and unpublished; automated routing, browser and full-song checks pass, and the user accepted actual Safari/iPhone stereo on 2026-10-20; dual-SID validation owns those gates. The screenshot shows the local stereo implementation. The plan owns delivery status. Local files remain on your device.
- Select the six entries listed below, using pinned, hash-verified SID files, retained WAV references, attribution, licenses and source links. Stereo Rambo’s reference WAV stays external because it exceeds the prepared-asset size cap.
- Keep Moon River, Pink Panther, Axel F and Ghostbusters separate as local-build materials, without unpublished audio downloads. Other stereo arrangements remain external SID/WAV links.
- Open callable mono or dual-SID PSID files locally, with subtune, PAL/NTSC and MOS6581/MOS8580 controls. Dual-SID playback uses one selected model for both chips; automatic opening rejects conflicting concrete model declarations. Local files and their hashes stay on the device.
- Play, pause, restart, seek quickly within the prepared audio range, with busy feedback for unprepared positions, and set A–B study loops.
- Mute or solo three voices for mono or six chip-grouped voices for stereo, with one shared filter per chip. Changing voices pauses sound to prepare the mix; a spinner and explanation appear beside the controls. Uninterrupted switching is explicitly deferred on cost grounds as
VOICE-1. - Use the shared transport/timeline panel: browse with its scrollbar without seeking, click a lane or ruler to seek, Shift-click to inspect, Hold the heard moment and Follow to center playback again. Scroll shows past and prepared upcoming activity; Fit song keeps the whole duration visible, with prepared activity ahead and click-to-seek at a fixed scale. Zoom sets time density, so wider charts show more time at the same zoom.
- Inspect frequency, waveform, gate, pulse width, ADSR settings, ring/sync, each chip’s shared filter and chip-indexed ordered writes. Stereo output routes SID 1 left and SID 2 right as an explicit player setting. Stereo Audio output shows separate L/R peak/RMS meters and waveforms, plus a shared spectrum with distinct channel colours.
- Read three evidence-linked Rambo annotations with their exact evidence and listening scope.
The input boundary remains a bounded callable PSID subset: RSID, ROM/interrupt-driven profiles, three-SID files and mixed concrete chip-model declarations on automatic local opening are excluded. When one dual-SID model declaration is unknown or accepts either model, a concrete declaration on the other chip supplies the default; intentionally reloading with another model applies it to both chips. Seeking and loop continuation require adapter validation; a state-restored loop does not promise a seamless audio splice. The local stereo implementation passed the model/count and Safari gates; publication of this update remains separate.
The published app retains four mono entries from Crafter’s downloadable samples, with separate stereo downloads. The working-copy catalog contains six playable entries; the two stereo entries have passed adoption and await application publication. Mono Rambo remains the initial selection and carries three source-linked annotations; the other entries use generic live register inspection.
| Sample | Variant | Chip model | Application status |
|---|---|---|---|
| Rambo loader — main music | Mono | MOS6581 | Published |
| Bach Toccata | Mono | MOS8580 | Published |
| Mozart Minuet and Trio | Mono | MOS8580 | Published |
| Original instrument mix | Mono | MOS8580 | Published |
| Rambo loader — main music | Dual-SID stereo | MOS6581 × 2 | Accepted locally; unpublished |
| Bach Toccata | Dual-SID stereo | MOS8580 × 2 | Accepted locally; unpublished |
The pinned catalog records exact files and provenance; source preparation explains updates. Retained sample listening verdicts describe those source performances and do not certify the new browser backend.
The Application workflow deploys main only after both shards pass on each supported browser/platform. It builds and uploads the cleared assets, license notices and corresponding engine source. Publication checks cover the hosted app separately from local tests.
Use Node.js 24.18.0 (package minimum 24.12), pnpm 11.20.0, Python 3.12 or newer and Docker with its daemon running. Python and Docker build the modified raw-chip SIDLite engine; dual-SID validation records the bounded native build and its current evidence. Package versions are pinned in package.json and the lockfile.
git clone https://github.com/mbackschat/sid-song-explorer.git
cd sid-song-explorer
pnpm install --frozen-lockfile
pnpm prepare:engine
pnpm prepare:assets
pnpm devOpen the local URL printed by Vite, normally http://127.0.0.1:5173. Engine preparation builds from pinned source and runs the raw-routing/mono-equality gate. Asset preparation then verifies the modified artifact, downloads cleared sample files and packages the engine license, notices, modifications and complete corresponding source in ignored public/generated/. The build includes these files in dist/; prepare them before building or serving the app. No sibling checkout, private cache, ROM download or live emulator bridge is required. The sample snapshot guide records hashes, rights, download limits and the optional explicit local-copy command.
pnpm test
pnpm build
pnpm exec playwright install chrome
# On macOS, also install the WebKit test browser:
pnpm exec playwright install webkit
pnpm test:browserBrowser checks use Google Chrome on Linux and macOS, plus Playwright WebKit on macOS only. CI runs Chrome on Ubuntu and WebKit on macOS; Linux WebKit is outside the supported test matrix. macOS WebKit automation does not establish playback in Apple's Safari application. For documentation checks, use Python 3.10 or newer to run python3 scripts/check-docs.py, then git diff --check. The checker validates local Markdown links and heading fragments, excluding external availability. Logo regeneration is optional; see branding.
- Leave Rambo loader — main music selected and press Load sample, then Play. This runs the SID live; the retained WAV has separate controls.
- Drag the scrollbar below the timeline to browse continuously without changing playback. Click a voice/filter lane or release the time ruler to seek. Scroll returns to centered playback; Follow centers it immediately.
- Shift-click a lane to inspect that moment while music continues, or press Hold to capture the current heard position. Select a voice in Sound inspector to read its registers and ordered writes. View inspector brings the held settings into view on small screens; Follow releases the held inspection.
- Try Solo on a voice, then Full mix. Sound pauses while the replacement mix is prepared. The control changes SID waveform writes; shared filtering and oscillator coupling can affect the result.
- Expand Loop A–B, set A and B around a passage and enable the loop. Use the linked evidence cards to inspect the main entrance, score returns and continuing sound lifetimes.
- Play the retained WAV separately for context and read its scope beside the controls. The accepted underlying phrase and ending do not establish acceptance of the new cold-start entrance or this browser performance. In the local application, select Rambo loader — main music, stereo to explore the six chip-grouped voices and two filters. Stereo validation records browser checks and Safari/iPhone acceptance separately.
Open local SID provides the same generic inspection without authored annotations. It does not upload the file, send a file hash or request external metadata. Unsupported profiles fail with a message; unknown durations stay labelled unknown.
SID Song Crafter owns composition tools, instrument programs, musical studies, sample generation and publication clearance. Explorer owns browser playback and presentation of matching evidence.
Both repositories can be worked on together in one agent session, with coordinated changes and separate commits. Explorer remains independently cloneable and buildable. The app consumes a pinned runtime catalog with a strict versioned parser. The catalog integration consumes a published Crafter index with a pinned digest; development, build and sample preparation verify the vendored index against the runtime catalog without a sibling checkout. The shared-knowledge guide defines ownership and coordinated development, and the POC source record defines this bounded import.
- Plan: current scope and next development task.
- Playback adapter: app-base choice, engine boundary and timing limits.
- Mono POC validation: technical evidence, Safari/listening acceptance and remaining limitations.
- Dual-SID validation: local raw-routing implementation, execution evidence and Safari/iPhone acceptance.
- Sample snapshot: pinned assets, rights and annotation scope.
- Founding design: product contracts and verification gates.
- Application research: dated comparisons and reuse alternatives.
- Contributor guide: development conventions and validation.
- Screenshot harness: reproduce and refresh the live Rambo README image.
- Branding: selected logo, exports and reproduction.
- Documentation index: navigation.
Copyright (c) 2026 Martin Backschat. Original Explorer work is licensed under GPL-3.0-or-later: you may redistribute and modify it under version 3 of the GNU General Public License or any later version, without warranty. See LICENSE.
Transferred Crafter documents and reused logo geometry retain their MIT notice. The engine is GPL-2.0-or-later and the published Rambo sample is GPL-3.0-only; their notices and corresponding-source routes remain separate. See third-party notices.
