Skip to content

Repository files navigation

OttoAlign2

OttoAlign2 is a local web application for aligning target-session audio to a reference track in AAF or Pro Tools PTX sessions. The interface, logs, and reports are in French; source-code identifiers are in English.

OttoAlign2 interface

What it does

  • Accepts a reference ZIP and a target ZIP, each containing one .aaf or .ptx session and its sibling Audio Files directory.
  • Finds the reference clip with the largest timeline overlap for each target clip.
  • Uses GCC-PHAT correlation to determine the time correction, with a default search range of +/-150 ms.
  • Groups placements that use the same source WAV, selects a robust anchor for the group, and applies a consistent correction to preserve phase coherence.
  • Writes OttoAligned_Result.zip with the output session, required media, and OttoAlign_Report.txt.

OttoAlign2 is non-destructive: the input archive is never modified.

PTX workflow

For every eligible PTX placement, OttoAlign2 renders an independent WAV and uses pt_api.relink_clip() to retarget only that placement. The source WAV and the original PTX remain untouched. Clips that cannot be aligned, including clips with less than 50 ms of overlap, are reported and left unchanged.

PTX relinking depends on the layouts supported by pt_api. The project is currently tested with the API source at commit 99e9fc6a0d405e675e465db372ce2edd2e31273d (the 1.4.2 relink-edge-case build). PTX output remains experimental and must be opened and validated in Pro Tools before use in production. A successful OttoAlign job only confirms that the application completed; it is not a Pro Tools compatibility guarantee.

AAF workflow

The AAF path creates WAVs suffixed _ottoaligned, updates locators in a copy of the AAF, then runs orchestrator.py to finalize the result. Complex DAW-specific metadata, effects, clip gain, mute state, and transitions are not guaranteed to be preserved.

Requirements

  • Python 3.11
  • WAV media with matching sample rates between each reference/target pair
  • A local checkout of the current pt_api source during development

Install the application dependencies:

python -m pip install -r requirements.txt
python -m pip install -e Y:\pt_api
python server.py

Open http://localhost:8081.

For a portable or deployed installation, install the same pt_api commit specified in requirements.txt; do not rely on an unrelated globally installed version.

Archive format

Each uploaded ZIP must contain exactly one complete session and its adjacent Audio Files directory. Nesting inside the archive is allowed, but the session/folder pair must be unambiguous. The HTTP request limit is 2 GB.

The output archive contains:

  • OttoAligned.ptx or OttoAligned.aaf
  • Audio Files/
  • OttoAlign_Report.txt

For PTX, both original and newly rendered WAVs are included because the copied session can reference either set.

Important limitations

  • PTX processing supports WAV media only.
  • Clips with less than 0.05 seconds of overlap are skipped and reported.
  • OttoAlign does not resample; matching sample rates are required.
  • Alignment is calculated from channel 1 and the same correction is applied to every channel of that media.
  • Boundary samples may be zero-filled when the required correction falls outside the available audio.
  • PTX renders a full independent WAV per aligned placement, which can make the result substantially larger.
  • Job state is held in Flask process memory; restarting the server clears it.

License

Copyright (C) 2026 Sebastien Bedard.

OttoAlign2 is licensed under the GNU Affero General Public License v3.0 or later. See the complete license text at https://www.gnu.org/licenses/agpl-3.0.html.

About

Paying for an AutoAlign 2 Post© license!? In this economy?!

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages