This is a Python3 library for building Native Format Scores.
Note: Currently this library supports building Native Format Scores for the Native Format Smart Player, however reading or deserializing scores from JSON is currently unsupported.
- Python3
- virtualenv
pip install nf_grapher
Setup a virtual environment with the following:
virtualenv -p python3 e
source ./e/bin/activate
You can use whatever environment name you'd like, e
is used here because it's short.
This python library is divided into 3 modules. nf_grapher.score
contains all the Score level objects
defined by the Native Format Score schema. nf_grapher.typed
contains useful "typed" nodes defined
by the smart player contract. Because Python is not
statically typed, these types are not yet enforced. nf_grapher.encoder
contains a function encode
for serializing grapher objects into JSON.
Run tests with the following command:
python -m unittest discover -v
from nf_grapher.score import *
from nf_grapher.typed import *
from nf_grapher.encoder import encode
# Build a source node for a Spotify track
# Start from 5.6 seconds into the track and play for 5.6 seconds
source = FileNode('spotify:track:4RDKrwyA9YouzL1LxvMaxH', offset=5.6e+9, duration=5.6e+9)
# Create a 5.6 second loop from the beginning of the track
loop = LoopNode(when=0, duration=5.6e+9)
# Create the full score
score = Score(Graph(
nodes=[source, loop],
edges=[source.connect(loop)]
))
print(encode(score))
You can see a list of all supported typed nodes by using the Python help
feature in a REPL.
For instance,
python
>>> from nf_grapher import typed
>>> help(typed)