A fork of Reapy, the pythonic wrapper for REAPER's ReaScript Python API. Intended to be refactored and simplifyed for maintenance and usage as base for renardo Reaper integration
Project description
renardo_reapy
renardo_reapy is a nice pythonic wrapper around the quite unpythonic ReaScript Python API for REAPER.
This is a fork of python-reapy.
Contents
Installation
If you feel you need more explanation than the straightforward instructions below, head to the detailed installation guide.
renardo_reapy is available via pip:
$ pip install renardo-reapy
One additional step is required to let REAPER know renardo_reapy is available. First, open REAPER. Then in a terminal, run:
$ python -c "import renardo_reapy; renardo_reapy.configure_reaper()"
Restart REAPER, and you're all set! You can now import renardo_reapy from inside or outside REAPER as any standard Python module.
Instead of creating a new ReaScript containing:
from reaper_python import *
RPR_ShowConsoleMsg("Hello world!")
you can open your usual Python shell and type:
>>> import renardo_reapy
>>> renardo_reapy.print("Hello world!")
Usage
ReaScript API
All ReaScript API functions are available in renardo_reapy in the sub-module renardo_reapy.reascript_api. Note that in ReaScript Python API, all function names start with "RPR_". That unnecessary pseudo-namespace has been removed in renardo_reapy. Thus, you shall call renardo_reapy.reascript_api.GetCursorPosition in order to trigger reaper_python.RPR_GetCursorPosition. See example below.
>>> from renardo_reapy import reascript_api as RPR
>>> RPR.GetCursorPosition()
0.0
>>> RPR.SetEditCurPos(1, True, True)
>>> RPR.GetCursorPosition()
1.0
Note that if you have the SWS extension installed, the additional ReaScript functions it provides will be available in renardo_reapy.reascript_api and usable inside and outside REAPER as well.
renardo_reapy API
The purpose of renardo_reapy is to provide a more pythonic API as a substitute for ReaScript API. Below is the renardo_reapy way of executing the example above.
>>> import renardo_reapy
>>> project = renardo_reapy.Project() # Current project
>>> project.cursor_position
0.0
>>> project.cursor_position = 1
>>> project.cursor_position
1.0
The translation table matches ReaScript functions with their renardo_reapy counterparts.
Performance
When used from inside REAPER, renardo_reapy has almost identical performance than native ReaScript API. Yet when it is used from the outside, the performance is quite worse. More precisely, since external API calls are processed in a defer loop inside REAPER, there can only be around 30 to 60 of them per second. In a time-critical context, you should make use of the renardo_reapy.inside_reaper context manager.
>>> import renardo_reapy
>>> project = renardo_reapy.Project() # Current project
>>> # Unefficient (and useless) call
>>> bpms = [project.bpm for _ in range(1000)] # Takes at least 30 seconds...
>>> # Efficient call
>>> with renardo_reapy.inside_reaper():
... bpms = [project.bpm for _ in range(1000)]
...
>>> # Takes only 0.1 second!
A small overhead due to sending function and arguments over the network will still occur each time a renardo_reapy function is called from outside REAPER. When running the same function many times in a row (e.g. over a thousand times), using renardo_reapy.map may significantly increase performance. See its documentation for more details.
Documentation
Check the documentation and especially the API guide and Translation Table for more information.
Contributing
For now, about a half of ReaScript API has a renardo_reapy counterpart, the docs are far from great, and many bugs are waiting to be found. Feel free to improve the project by checking the contribution guide!
License
This project is licensed under the MIT License - see the LICENSE.txt file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file renardo_reapy-0.11.0.dev2.tar.gz.
File metadata
- Download URL: renardo_reapy-0.11.0.dev2.tar.gz
- Upload date:
- Size: 116.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2f9d5f15db2567a6827efb3641687dc1365c2550b97b78378b0c42d4ee766b05
|
|
| MD5 |
31bcb5008e29be2c679cd9ad82e86993
|
|
| BLAKE2b-256 |
26bfa929f9479c597a96c1547df8d24ad5dcacbc4819035accfdd0c349695e70
|
Provenance
The following attestation bundles were made for renardo_reapy-0.11.0.dev2.tar.gz:
Publisher:
publish-pypi.yml on e-lie/renardo_reapy
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
renardo_reapy-0.11.0.dev2.tar.gz -
Subject digest:
2f9d5f15db2567a6827efb3641687dc1365c2550b97b78378b0c42d4ee766b05 - Sigstore transparency entry: 212170831
- Sigstore integration time:
-
Permalink:
e-lie/renardo_reapy@de6ec1a978f990d12c75e8558d2d44af9c369ecd -
Branch / Tag:
refs/tags/v0.11.0.dev2 - Owner: https://github.com/e-lie
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@de6ec1a978f990d12c75e8558d2d44af9c369ecd -
Trigger Event:
push
-
Statement type:
File details
Details for the file renardo_reapy-0.11.0.dev2-py3-none-any.whl.
File metadata
- Download URL: renardo_reapy-0.11.0.dev2-py3-none-any.whl
- Upload date:
- Size: 124.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
47ab84a262be151ea5abf0697d4a9648285d188b232d7caee4782cd7c3f0a54b
|
|
| MD5 |
38ed0f188a4c65fca63b2111dab052a9
|
|
| BLAKE2b-256 |
9d02fd2d77b814082d2a3645fd4a9f658cbad77416f259eca0408922c296f643
|
Provenance
The following attestation bundles were made for renardo_reapy-0.11.0.dev2-py3-none-any.whl:
Publisher:
publish-pypi.yml on e-lie/renardo_reapy
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
renardo_reapy-0.11.0.dev2-py3-none-any.whl -
Subject digest:
47ab84a262be151ea5abf0697d4a9648285d188b232d7caee4782cd7c3f0a54b - Sigstore transparency entry: 212170833
- Sigstore integration time:
-
Permalink:
e-lie/renardo_reapy@de6ec1a978f990d12c75e8558d2d44af9c369ecd -
Branch / Tag:
refs/tags/v0.11.0.dev2 - Owner: https://github.com/e-lie
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@de6ec1a978f990d12c75e8558d2d44af9c369ecd -
Trigger Event:
push
-
Statement type: