Hello! We are done with the midterm evaluations, so as one half of our project 🙂 The next half will be pretty interesting to work on!
This week was dedicated to adding tests for the functionality that has been implemented so far.
The idea was to have a behavior as reference so that we can know whenever anything breaks in this area while trying to fix another bug / implementing another feature / etc.
The structure of these tests is simple, basically we are taking the score which needs to be tested (We are using a bunch of test files for this) and dumping the values of certain properties that the note-events of this score have to a MIDI text file and comparing these with those which constitute desired behavior. (I have already generated the reference MIDI text files, which model the behavior of the current swing implementation)
The tests pass if these two files are exactly the same, implying the note-events have the same values, implying they sound the same. A bunch of test files, divided into two sets (one to test eighth note swing and one for sixteenth note swing) was used to generate the reference MIDI text files.
These tests can also be used for of testing another issues related to playback too. I gather this test framework was much needed as for MuseScore we currently have enough tests for testing the look but not enough for testing the sound, in words of Marc 🙂
The next step now would be to start working on how to enable the user to apply swing on a particular selection of the score, rather than the entire score. This means that the user will be able to tweak swing through means of text / markings / etc. More on this as we get it cleared up further!