Free software file format parser for Avid ProTools sessions
  • C++ 49.8%
  • JavaScript 32.5%
  • Shell 16.4%
  • Makefile 1.3%
Find a file
Damien Zammit 42d3e988ee
Some checks failed
ptformat_builder_action / check-pt-regression (push) Has been cancelled
Comment out variables used for debugging only
2026-06-06 12:22:54 +10:00
.github/workflows CI: Replace travis with github actions 2025-12-15 20:27:05 +11:00
bins tests: Add v12 test for basic audio 2019-07-14 16:20:11 +10:00
ptformat Improve win/posix compatibility 2026-06-06 12:21:15 +10:00
re WIP block parsing support 2019-06-15 14:37:13 +10:00
tests Fix track index numbering to be gapless and zero based 2022-03-29 13:02:21 +11:00
COPYING.LESSER Relicense as LGPLv2.1+ 2018-04-12 00:07:03 +10:00
Makefile glib: Make dep optional 2019-06-22 11:50:50 +10:00
ptformat.cc Comment out variables used for debugging only 2026-06-06 12:22:54 +10:00
ptftool.cc More API cleanups 2019-06-21 20:38:40 +10:00
ptgenmissing.cc More API cleanups 2019-06-21 20:38:40 +10:00
ptreg travis: Initial test build 2018-03-25 15:45:51 +11:00
ptunxor.cc More API cleanups 2019-06-21 20:38:40 +10:00
README.md CI: Replace travis with github actions 2025-12-15 20:27:05 +11:00
tests.sh Fix uninitialised value bug - thanks Robin! 2019-06-19 23:32:32 +10:00

ptformat badge

ptformat reads and parses ProTools session files.

Audio and MIDI source/region/track information is extracted, as well as MIDI note events.

The idea is to make ardour open PT sessions.

Current functionality

Decrypt and parse a PT file:

make
./ptftool file.pt{s,5,f,x}

API

See ptftool.cc for example usage

What works?

PT version Decryption Audio (Sources) Audio (Regions) Audio (Tracks) MIDI (Chunks) MIDI (Regions) MIDI (Tracks)
5 Yes Yes Yes Yes ? ? ?
6 Yes Yes Yes Yes ? ? ?
7 Yes Yes Yes Yes ? ? ?
8 Yes Yes Yes Yes Yes Yes Yes
9 Yes Yes Yes Yes Yes Yes Yes
10 Yes Yes No groups Yes Yes No groups Yes
11 Yes Yes No groups Yes Yes No groups Yes
12 Yes Yes No groups Yes Yes No groups Yes

Regression testing

To test that nothing has broken since code has been changed:

make
./ptreg

Dummy audio file generation

To make a sox script for regenerating all audio in a PT session as dummy wavs:

make
./ptgenmissing file.pt{s,5,f,x}

Hacking

To decrypt a PT session for further inspection or adding features:

make
./ptunxor file.pt{s,5,f,x} > file.unxor

License

LGPLv2.1+

TODO

  • Add >= PT10 Compound MIDI/Audio region support

Binaries in bins/

The binaries located in bins/ directory are specially crafted test sessions for regression testing this library. They are not programs!