SpessaSynth icon indicating copy to clipboard operation
SpessaSynth copied to clipboard

[FEATURE REQUEST] MIDI MTS SysEx

Open OpenSourceAnarchist opened this issue 6 months ago • 8 comments

This project is exactly what I was looking for. In short, I'm going to implement the dynamic tuning algorithm proposed in this paper and implemented here. This requires having access to a list of currently playing notes as well as all previously played notes within the previous n seconds, although this is easy enough for me to manually compute with your library. However, I need to set tunings for individual notes, and this is most easily accomplished with SysEx calls in the MIDI Tuning Standard.

See this enum declaration and this API documentation for how Fluidsynth handles this. I can write my own functions to convert between Hz/cents/MIDI frequency data format, but without your library being able to respond to the SysEx calls, I don't know any other way to modify the tunings for all the MIDI notes, for just an octave and extrapolated to the rest, to individual notes, etc. More information about the MTS SysEx calls is available here: http://www.microtonal-synthesis.com/MIDItuning.html

To be honest, I really like the way JZZ implements this as well as the helper functions. See this code and the associated _helper functions as well as the API doc.

I hope this was helpful enough to get an idea on why this is useful and how it could be implemented. Completely understand if this is on the backburner, and I'm open to any ideas you have as well :)

OpenSourceAnarchist avatar Aug 07 '24 14:08 OpenSourceAnarchist