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. Output differs from REAPER's own formatting only in cosmetic quoting (quotes dropped on space-free strings), which REAPER parses identically. Numeric values are preserved as strings, never reformatted.

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.0.tar.gz (6.6 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.0-py3-none-any.whl (6.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: reaproj-0.1.0.tar.gz
  • Upload date:
  • Size: 6.6 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.0.tar.gz
Algorithm Hash digest
SHA256 a94e10bf9874b9f8f70e403d2d823e9be859a98898352a9da79d02fe8a57d191
MD5 d0d8eb1157340f0f3589ec8250af134e
BLAKE2b-256 22c4ced56ed9a5a9fbdb9b49c304530a2d17dd09d0999af163cfa59e66124873

See more details on using hashes here.

File details

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

File metadata

  • Download URL: reaproj-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 6.3 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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 537e8bcde4c395a3dd0ba088440371fc8bdba12ad95b22942b72d41f8fde819c
MD5 268750e59f139e462b45a579667db54e
BLAKE2b-256 c4bbca7d5afb7a3f6af33968ee20b3b76c0924b2a98286c4fae80340a46b6850

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