#music #pixel #ptcop #pxtone

ptcow

Library for editing and playback of PxTone (.ptcop) music

5 releases (3 breaking)

Uses new Rust 2024

0.4.0 Jan 17, 2026
0.3.0 Dec 29, 2025
0.2.1 Dec 26, 2025
0.2.0 Dec 6, 2025
0.1.0 Dec 6, 2025

#307 in Audio

0BSD license

155KB
4K SLoC

๐Ÿ„๐Ÿ„๐Ÿ„๐Ÿ„๐Ÿ„๐Ÿ„๐Ÿ„๐Ÿ„๐Ÿ„๐Ÿ„
๐Ÿฎ ptcow ๐Ÿฎ
๐Ÿ„๐Ÿ„๐Ÿ„๐Ÿ„๐Ÿ„๐Ÿ„๐Ÿ„๐Ÿ„๐Ÿ„๐Ÿ„

Library for editing and playback of PxTone (.ptcop) music.

Based on the PxTone C++ source code available here.

โœ…Goals / โŒNon-goals

  • โœ… Support V5 (and newer) versions of PxTone.

  • โŒ No support for V4 and earlier. Maybe read support in the future, but no export support planned.

  • โœ… Rendering that sounds faithful to the original PxTone rendering

  • โŒ No sample-by-sample accuracy. There can be minor differences as long as it sounds (almost) indistinguishable.

Limitations

  • Currently, ptcow only supports little endian architectures. There may be big endian support added in the future, but it's not a focus right now.

Getting Started

To get started, load a .ptcop or .pttune file into a Vec<u8>, and call read_song on it. You can also check out crates/ptmoo for a command line player that writes samples to stdout.

Dependencies

~3.5โ€“6.5MB
~179K SLoC