In the “I probably should have been doing something else” category, I added an NRT rendering class to the MMMAudio python library. It is now in the dev branch and will go into the main branch on the next release.
This is actually kind of awesome (especially if you have ever done NRT in SuperCollider). Just call:
`NRT.save_to_wav(mmm_audio, “tmp/bach.wav”, duration_seconds=60, score_path=“resources/bach2.json”, targets=targets, verbose=False)`
You pass it a MMMAudio instance, where to save the audio file, the duration of the file, the path to an optional json file with events, a list of targets (so it knows what mmm_audio or poly_pal is, and whether you want to print all events to the screen.
Then it goes through and renders the audio. I have two examples:
WavetableOSCNRT - renders the bach F major invention with filter sweeps
NessStretchNRT - renders the NessStretch offline
It should also be able to render files of any channel layout depending on the MMMAudio instance settings.