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
Metadata
Release files for reaproj 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| reaproj-0.1.1.tar.gz | 7.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| reaproj-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 13.7 kB
Release files / reaproj-0.1.1.tar.gz
| Download URL | reaproj-0.1.1.tar.gz |
|---|---|
| Size | 7.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
44f17d6ad13f6d0da73927de7c97b6951079040e834c3190f868220d450d6841
|
|
BLAKE2b-256 checksum How to use checksums |
e71dae9bbba862772cef44ee07824c201dd64d0492686d20ee25f4152ed316c5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.5
|
Release files / reaproj-0.1.1-py3-none-any.whl
| Download URL | reaproj-0.1.1-py3-none-any.whl |
|---|---|
| Size | 6.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
84eb28e4d7f0a54afac2baae79d5d71764e65020a5a68b5507a49c2470081de9
|
|
BLAKE2b-256 checksum How to use checksums |
d96f0cfda5bf5d361d59f6672f6a4d5bcee9d237933738d2fe7d8227144c2801
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.5
|