Skip to main content

pysoundmonitor

Pure-Python player, reader and detector for Soundmonitor (64'er / Chris Hulsbeck) C64 SID tunes (HVSC tracker #6).

Consumes .sid files (PSID/RSID containers) and bare .prg images through the shared pysidtracker base: the Soundmonitor player is relocatable, so it is located by a relocation-invariant hardware-register fingerprint and packed/relocating builds are detected by running the tune's init in a 6502 emulator — container headers are not trusted. SoundMonitorPlayer reproduces the replay byte-exact (validated against the sidtrace oracle) by running the tune's own init/play over the shared MemPlayer memory image.

Install

pip install pysoundmonitor

Usage

import pysoundmonitor as psm

song = psm.read("tune.sid")            # path; or psm.parse(raw_bytes)
print(song.cia_latch, len(song.sections), len(song.instruments))
for section in song.sections:
    print(section.cadence, section.tempo, section.pattern_length)

# Byte-exact playback (MemPlayer subclass driving the tune's own init/play):
player = psm.SoundMonitorPlayer(open("tune.sid", "rb").read())
grid = player.render_grid(250)         # 25-reg, forward-filled per-frame grid
writes = list(player.register_writes(250))   # pysidtracker RegWrite log
player.render_wav("tune.wav", 250)     # needs the `audio` extra

# Relocation-tolerant detection (untrustworthy header):
det = psm.SoundMonitorSidParser().detect("tune.sid")
print(det.kind)                        # DIRECT / RELOCATED / PACKED / UNKNOWN

Development

pip install -e ".[dev]"
pytest                             # offline synthetic fixtures + HVSC corpus
pytest -m oracle -n auto           # byte-exact vs the sidtrace Docker oracle
python scripts/fetch_tunes.py      # cache the HVSC reference tune (never committed)

Test tunes are HVSC copyright works: fetched and cached on demand (gitignored), never committed. The oracle job needs Docker (anarkiwi/sidtrace) and renders each covered tune with SoundMonitorPlayer, asserting a frame-exact match — see docs/format.md.

See docs/format.md for the container, detection, and song-data model, and its HVSC oracle survey section for the whole-song comparison over every HVSC Soundmonitor tune.

License

Apache 2.0 — see LICENSE.

Metadata

Release files for pysoundmonitor 0.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pysoundmonitor 0.5.0
File Size Uploaded
pysoundmonitor-0.5.0.tar.gz 32.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pysoundmonitor 0.5.0
File Interpreter ABI Platform
pysoundmonitor-0.5.0-py3-none-any.whl Python 3 none any Details

Total release size: 56.4 kB

Release files / pysoundmonitor-0.5.0.tar.gz

Download URL pysoundmonitor-0.5.0.tar.gz
Size 32.4 kB
Tags Source
SHA-256 checksum
How to use checksums
27e9eb7d4a209cc18df6e0516278aa7684b1dcbc20c806e14d18cb1d77147a8b
BLAKE2b-256 checksum
How to use checksums
47f283e9d3268924805d23ce1ac1aea4999ff987f00aca47d12fb4bdca85e391
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.

Transparency log

Release files / pysoundmonitor-0.5.0-py3-none-any.whl

Download URL pysoundmonitor-0.5.0-py3-none-any.whl
Size 24.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
55549181108d3a49de53045a364adf65ae92ef0ddec67fa2f33aa287d6ada844
BLAKE2b-256 checksum
How to use checksums
25305ef5d0084d1b3ef096abbdd98c0160c4142a8ed30121ecab20e469b116a0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.5.0 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page