Free software file format parser for Avid ProTools sessions
  • C++ 49.7%
  • JavaScript 32.6%
  • Shell 16.5%
  • Makefile 1.2%
Find a file
2025-12-15 20:27:05 +11: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 Directly allocate a std::string -- remove strndup()/free() 2019-06-24 14:11:53 +02: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 Fix track index numbering to be gapless and zero based 2022-03-29 13:02:21 +11: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!