Skip to main content

Parse and edit REAPER .RPP project files: tracks, items, markers, regions, and render settings as Python objects

Project description

reaproj

Parse and edit REAPER .RPP project files in Python: tracks, items, markers, regions, and render settings as objects, instead of hand-editing chunk text.

Typical uses: add regions to a project programmatically, batch-change render settings (output directory, $region naming, format) before a headless -renderproject render, read item positions and source files for analysis, or save versioned copies of a session.

Built on rpp (the tokenizer/emitter); reaproj adds the object model on top.

Install

pip install reaproj

Read a project

from reaproj import Project

project = Project.load("Session.RPP")

for track in project.tracks:
    for item in track.items:
        print(item.position, item.length, item.soffs, item.source_path)

for region in project.regions:
    print(region.name, region.start, region.end)

Add regions

project.add_region(12.5, 95.0, "Take 1")   # id and GUID handled for you

Configure rendering

from reaproj import RenderBounds

project.render.directory = "Takes"
project.render.pattern = "$region"
project.render.bounds = RenderBounds.ALL_REGIONS
project.render.stems = 0                    # master mix
project.render.normalize_enabled = False
project.render.format = "wav24"             # or "mp3", or a raw RENDER_CFG base64 payload

Save

project.save()                  # in place
project.save("Other.RPP")       # elsewhere
project.save_next_version()     # "Session v2.RPP", "Session v3.RPP", ...

Then render headlessly:

REAPER -renderproject "Session v2.RPP"

Alternatives

  • rpp: the underlying low-level parser/emitter; gives you an ElementTree-like view of raw chunks. Use it directly when you need something reaproj doesn't model yet.
  • reathon: constructs new REAPER projects from scratch; not aimed at editing existing ones.
  • rppxml: RPP parsing via the WDL implementation.
  • reapy: controls a running REAPER instance through the ReaScript API; requires REAPER to be open. reaproj works on the files themselves, no REAPER required.

Fidelity

reaproj never touches content it doesn't understand; everything round-trips through the element tree, and numeric values are preserved as strings, never reformatted. Verified on real REAPER 7 projects:

  • Emission is idempotent, and the only differences from REAPER's own formatting are cosmetic quoting (quotes dropped on space-free strings; both forms appear in REAPER-authored files).
  • REAPER itself loads and headlessly renders reaproj-emitted projects: in an A/B against the original project file, all rendered regions matched in name, count, and byte-identical file size, and the audio difference between the two renders was the same as between two renders of the untouched original (i.e. REAPER's own render-to-render variance from modulated plugins, not a file difference).

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

reaproj-0.1.1.tar.gz (7.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

reaproj-0.1.1-py3-none-any.whl (6.6 kB view details)

Uploaded Python 3

File details

Details for the file reaproj-0.1.1.tar.gz.

File metadata

  • Download URL: reaproj-0.1.1.tar.gz
  • Upload date:
  • Size: 7.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.5

File hashes

Hashes for reaproj-0.1.1.tar.gz
Algorithm Hash digest
SHA256 44f17d6ad13f6d0da73927de7c97b6951079040e834c3190f868220d450d6841
MD5 b6068376d5e8ad22b227ee974c535b33
BLAKE2b-256 e71dae9bbba862772cef44ee07824c201dd64d0492686d20ee25f4152ed316c5

See more details on using hashes here.

File details

Details for the file reaproj-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: reaproj-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 6.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.5

File hashes

Hashes for reaproj-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 84eb28e4d7f0a54afac2baae79d5d71764e65020a5a68b5507a49c2470081de9
MD5 dbca41b2f9da1d1ac24e16d3aad462d7
BLAKE2b-256 d96f0cfda5bf5d361d59f6672f6a4d5bcee9d237933738d2fe7d8227144c2801

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page