summaryrefslogtreecommitdiff
path: root/README.md
blob: 335ed4be37410ea351ed6c6c0091335df9de53b1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
ptformat [![travis](https://travis-ci.org/zamaudio/ptformat.svg?branch=master)](https://travis-ci.org/zamaudio/ptformat)
========

ptformat reads and parses [ProTools](https://www.avid.com/pro-tools) session files.

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

The idea is to make [ardour](https://ardour.org/) 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!