Exhibit B: reverse engineering.
Moves projects between Logic Pro, Ableton Live, and Pro Tools.
Reverse-engineered Logic Pro's undocumented binary project format to extract note-accurate MIDI (pitch, velocity, position, and duration) with no public spec to work from. Verified against Apple's own shipping demo songs.
The 15-byte Logic note-record signature, byte by byte
01 · Six directions, one release train
One project, six conversion directions.
| Workflow | Input | Output | Best for |
|---|---|---|---|
| logic2ableton | Logic Pro .logicx | Ableton Live .als + native MIDI tracks + copied media + conversion report | Moving Logic sessions into Ableton Arrangement View |
| ableton2logic | Ableton Live .als | Logic import package with track stems, timestamped clip WAVs, Logic timeline MIDI, and transfer report | Rebuilding Ableton sessions inside Logic with much cleaner layout recovery |
| protools2ableton | Pro Tools .ptx | Ableton Live .als with trimmed clips at session positions + native MIDI tracks + conversion report | Opening Pro Tools sessions directly in Ableton |
| protools2logic | Pro Tools .ptx | Logic import package with timestamped clip WAVs and MIDI + transfer report | Rebuilding Pro Tools sessions inside Logic |
| ableton2protools | Ableton Live .als | Pro Tools import package with spot-to-timestamp WAVs, MIDI files, manifest, and import guide | Handing an Ableton session to a Pro Tools studio |
| logic2protools | Logic Pro .logicx | Pro Tools import package with spot-to-timestamp WAVs, MIDI files, manifest, and import guide | Handing a Logic session to a Pro Tools studio |
02 · How it was cracked, Logic
Logic's MIDI has no public spec. Apple never published one.
A Logic project's MIDI doesn't live in a sidecar file. It lives inside ProjectData, a single, undocumented, proprietary binary blob. There is no public spec. Apple has never published one.
The method: generate a Standard MIDI File with deliberately fingerprintable notes, pitches 61, 73, and 85, velocities 99, 77, and 111, one beat apart. Drive it into Logic Pro by automation to save a .logicx. Diff the resulting binary against the known values.
What fell out is a fixed-layout 15-byte record: the byte inspector at the top of this page shows those three fingerprint notes, field by field.
03 · How it was cracked, Pro Tools
A second binary, obfuscated instead of merely undocumented.
Pro Tools sessions have no public specification either. This project ships a clean-room Python parser, verified against real sessions.
The XOR key
key[i] = (i * delta) & 0xFF
The schemes differ in how the key is indexed: PT 5-9 by byte offset, PT 10+ by 4 KiB page. A consequence of the page-indexed scheme: key[0] is always zero, so the first 4 KiB of every .ptx is effectively plaintext.
MIDI note events live in fixed 35-byte records after an MdNLB marker: position (u40 ticks), pitch (byte 8), length (u40 at byte 9), velocity (byte 17). Pro Tools ticks run at 960,000 per quarter note, a thousand times finer than a typical MIDI file.
Credit
The byte-level facts were originally established by Damien Zammit's ptformat project, which reverse-engineered the container for Ardour's session importer. This parser is an independent, MIT-licensed implementation built from those documented facts. No code was copied, and it was re-verified against real sessions.
04 · What works, what doesn't
Owning the tradeoffs, in the project's own words.
Logic to Ableton
Works
- MIDI notes decoded from Logic's binary project data land as native Ableton MIDI tracks inside the .als, placed at their absolute arrangement positions.
- Audio tracks land in Ableton Arrangement View, placed from bundled WAV BWF timestamps and Logic AIFF MARK chunks.
- Tempo, time signature, and distinct per-track colors carry over, with arrangement clips matching their track color.
Limits
- MIDI tracks are named MIDI 1, MIDI 2, and so on. Binding Logic's track names to its binary note sequences is still being reverse-engineered.
- Software instruments, their settings, and MIDI effects are not recreated. Reload instruments in Ableton.
- Automation is not recreated.
Pro Tools lanes
Works
- Audio clips keep their exact source trims and land at their session positions, with stereo tracks reassembled from Pro Tools' per-channel lanes.
- MIDI notes decoded from the session become native Ableton MIDI tracks or Logic-importable MIDI files.
Limits
- Session tempo is not recoverable from .ptx yet. Audio positions are sample-exact regardless, but beat positions are computed at an assumed tempo (default 120 BPM, override with --tempo).
- Plugins, inserts, sends, automation, clip gain, and fades are not transferred; crossfade renders are skipped.
If a project lands imperfectly, the first thing to inspect is the generated report. It is the primary support artifact for this project.
05 · Quick start
CLI or desktop app.
CLI workflow
pip install logic2ableton
logic2ableton "path/to/MySong.logicx" --output ./output
protools2ableton "path/to/MySession.ptx" --output ./output --tempo 128
--report-only writes the report without generating output files
Desktop workflow
- 1Launch the app.
- 2Drop any session file, .logicx, .als, or .ptx, into the window. The app detects the source DAW.
- 3Pick the destination DAW and review the preview.
- 4Select an output directory, run the transfer, and inspect the report if anything looks off.
06 · Install & downloads
Get logic2ableton.
Python 3.11+, any platform.
macOS builds are ad-hoc signed but not notarized, so Gatekeeper quarantines them on first download. If macOS says the app "is damaged and can't be opened," clear the quarantine flag once after copying it to Applications: xattr -dr com.apple.quarantine "/Applications/Logic Ableton Transfer.app". 423 automated tests run in CI on Windows and macOS on every push.
07 · Read the deep dives
Move a project between Logic, Ableton, and Pro Tools.
Free and open source. Every run writes a report on what transferred cleanly and what needs a second look.