Skip to main content

pydmcsid

Pure-Python reader and player for DMC (Demo Music Creator) SID tunes — the C64 player by Brian/Graffity ("-PLAYER (C) BRIAN/GRAFFITY!").

A DMC .sid is the player binary plus the per-tune song data resident in the same image. pydmcsid loads the image, locates the per-tune table bases from the player code operands (no baked addresses — a differently-sized tune relocates its tables), and runs a faithful integer transcription of the 6502 play routine, exposing the per-frame SID register writes.

Usage

import pydmcsid

song = pydmcsid.read("tune.sid")
for w in pydmcsid.iter_register_writes(song, max_frames=50 * 60):
    print(w.clock, w.reg, w.val)   # absolute CPU cycle, $D4xx reg offset, value

iter_register_writes follows the shared py* register-log convention (pygoattracker / pymusicassembler): one RegWrite(clock, reg, val) per SID write, frames cycles_per_frame apart. The DMC player emits one tight write burst per VBI play call.

What it models

Tempo divider, per-voice orderlist walk (transpose / loop / stop), pattern walk (note / instrument-select / duration / effect / gate), stride-11 instrument records driving PW init + a 16-bit PW sweep, the $FF-arp wavetable, triangle vibrato, glide, the pitch-slide effect and a 6-step filter sweep, the hard-restart window, and the final per-voice frequency compose. Transcribed from the DMC disassembly.

License

Apache-2.0.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pydmcsid-0.1.0.tar.gz (21.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pydmcsid-0.1.0-py3-none-any.whl (19.3 kB view details)

Uploaded Python 3

File details

Details for the file pydmcsid-0.1.0.tar.gz.

File metadata

  • Download URL: pydmcsid-0.1.0.tar.gz
  • Upload date:
  • Size: 21.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pydmcsid-0.1.0.tar.gz
Algorithm Hash digest
SHA256 b3d34c9024a1fb53f8991e59218ed02c13b43c7dd4a03da7ca2e58e7de428f3b
MD5 11c3972872c9129a648e1af042a2a859
BLAKE2b-256 b17ba59b953b56daa2e1ae01368bdcba5a11098ecb0b9db8bbdb9482bec7cdcd

See more details on using hashes here.

Provenance

The following attestation bundles were made for pydmcsid-0.1.0.tar.gz:

Publisher: release.yml on anarkiwi/pydmcsid

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pydmcsid-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: pydmcsid-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 19.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pydmcsid-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 db93ebaf60aba0177ad9706075c11f420e5e04a93b1a2ce8afb9cf399704ec7a
MD5 902ddb743d4a409700f19a2a4716a06f
BLAKE2b-256 d5dcf52910e07f9402a289142d0d375e0fd03f9b0bedcc0bf67019e006a7a853

See more details on using hashes here.

Provenance

The following attestation bundles were made for pydmcsid-0.1.0-py3-none-any.whl:

Publisher: release.yml on anarkiwi/pydmcsid

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page