Skip to main content

Pure-Python reader and player for DMC (Demo Music Creator) SID tunes

Project description

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.

Project details


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.

Supported by

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