Weekly status update August 15th to 21st
this is my last status update during GSoC. GSoC officially ends on 23rd of August - but I will continue work after that. On the one hand side there are still open things that need to be finished and on the other hand side there are still interesting things that should be done. I learned quite a lot during that program and feel like I have a good understanding how MuseScore's code works and is organized.
I think it would be a big missed opportunity if I wouldn't use my understanding of the internals to further improve the project. Of course there will be other things (like university ;)) that will consume more of my time - so I'll probably not be able to have the same focus as during GSoC - but I still want to continuous work on this project!
This week I added a GUI to the SamplePool that makes it possible to change its values. This led to quite some performance testing and finding good default values. I wasn't satisfied with the performance (especially with complicated scores on medium or low hardware) - so I tried to improve the performance by reducing locking (now there are no mutexes anymore) and also do calculations just one time. It still not there were I want it and so I'm doing some work with profilers. Callgrind (part of Vallgrind) sadly slows the code so much that no buffer refilling is happening and so it is useless to test it for these kind of problems. Linux's perf and oprofile don't slow the code down too much. But (I worked most with perf) until now I just see that getSample() is called a lot and using quite some cycles because of that.
I think learning more how to use these tools might also help to increase the performance of the sample accurate Fluidsynth.
I also worked on the MidiSpanner branch some more. I moved the default settings from synthcontrol to editstaff. This makes sense since these spanner defaults are now part of the instrument. I also added midi notes and offset to MidiActions. I did a little test with Kontakt - this will be included in my screencast about how it is working now. I also did some little fixes about deleting SoundBanks from the list of loaded banks.
I also plan to publish my work product in this blog. So stay tuned for more!