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

Reply via email to