C Integration
Description of how C libraries are integrated with Python.
All C code is in pianoray/cutils.
Code that calls the compiler is in pianoray/cpp.py.
Compilation
At every run, the libraries are compiled and stored in the cache directory
(default .prcache).
Loading
Libraries are compiled to shared libraries (.so) and loaded with the
Python ctypes module.
Conventions
Images are of shape (height, width, 3) and type uint8 and double.
See Rendering for more info on how rendering is done.
Parsed MIDI notes (start, end, note, velocity) are serialized as a string
Python side and parsed C side in order to reduce the amount of function
arguments (one char* vs four double*). Serialization specification
can be found in Specifications.