Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/perlence/rpp

Read and write Reaper RPP files with Python.
https://github.com/perlence/rpp

parser ply python python3 reaper

Last synced: about 1 month ago
JSON representation

Read and write Reaper RPP files with Python.

Awesome Lists containing this project

README

        

RPP
===

RPP is a format used to describe `REAPER `_ projects. This package is designed to be an RPP
parser/emitter and uses `PLY `_ as a parser framework.

Examples
--------

Import the package:

.. code-block:: python

>>> import rpp

Decode RPP:

.. code-block:: python

>>> r = rpp.loads("""\

""")
>>> r
Element(tag='REAPER_PROJECT', attrib=['0.1', '4.32', '1372525904'], children=[
['RIPPLE', '0'],
['GROUPOVERRIDE', '0', '0', '0'],
['AUTOXFADE', '1'],
])

Transform elements into RPP:

.. code-block:: python

>>> from rpp import Element
>>> rpp.dumps(
... Element(tag='REAPER_PROJECT', attrib=['0.1', '4.32', '1372525904'], children=[
... ['RIPPLE', '0'],
... ['GROUPOVERRIDE', '0', '0', '0'],
... ['AUTOXFADE', '1'],
... ]))
'\n'

``Element`` mimics the interface of xml.etree.ElementTree.Element_. You can perform querying operations with
``findall``, ``find``, ``iterfind``. Note that attribute and text predicates are not supported.

.. _xml.etree.ElementTree.Element: https://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element

.. code-block:: python

>>> groupoverride = r.find('.//GROUPOVERRIDE')
>>> groupoverride
['GROUPOVERRIDE', '0', '0', '0']
>>> groupoverride[1:] = ['9', '9', '9']
>>> r
Element(tag='REAPER_PROJECT', attrib=['0.1', '4.32', '1372525904'], children=[
['RIPPLE', '0'],
['GROUPOVERRIDE', '9', '9', '9'],
['AUTOXFADE', '1'],
])

Dependencies
------------

- `attrs `_
- `ply `_