I saw his blog posts, and I'm really sorry his MIDI Actions feature never got merged. There's some overlap with this feature in the sense that they both send out MIDI commands, but mostly I see them as independent. I'd like the ability to insert arbitrary MIDI commands anywhere I want in the score, but I also don't want to *have* to do that just to make basic things like dynamics work correctly. So they're useful features that solve different problems. Of the two, this feature is the one I care about more.
I'm certainly willing to help implement this, though I can't commit to doing the whole thing myself. Like everyone, I have limited time! Also, I'm very nervous about stomping around in the heart of a codebase I don't understand very well and probably breaking things in the process. :) I'd rather write things that are self contained, or at least fairly peripheral, and then let someone who knows the code much better integrate them. For example, it looks like the job of playing a score is controlled by the functions in rendermidi.cpp. They look through all the elements in the score and generate a series of NPlayEvents. And NPlayEvent is a subclass of MidiCoreEvent, so the assumption that everything is based on MIDI is already inherent in the event hierarchy! That clearly would need to be changed, and it should probably be done by someone who thoroughly understands the current design. So here's my best attempt at a plan for how to implement this: 1. Create an interface for the new abstraction layer. 2. Create concrete subclasses of it for the three supported types (Fluid, Zerberus, external MIDI). 3. Write the code for instantiating those subclasses based on an XML file. 4. Modify all the playback code to go through the new abstraction layer, rather than calling the synthesizer directly. 5. Change various parts of the UI as needed to support this feature. 6. Probably a lot of other stuff I don't know about. The new system for articulations will presumably involve some architecture changes, but I don't know what. And it will affect the format for score files, since they record the mixer configuration. And I don't know what else, but maybe a lot. I'm pretty confident I can do parts 1-3. Beyond that, I can't commit. -- View this message in context: http://dev-list.musescore.org/Playback-abstraction-layer-tp7579762p7579777.html Sent from the MuseScore Developer mailing list archive at Nabble.com. ------------------------------------------------------------------------------ _______________________________________________ Mscore-developer mailing list Mscore-developer@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mscore-developer