Over the past 3 months, I have worked to improve how instrument changes are implemented in MuseScore, to make them more user friendly, and more powerful. I have completed a lot of work in this time, and made many improvements. This would not have been possible without the help of my mentor, James Thistlewood, and the other developers of MuseScore, who have been incredibly helpful with their knowledge of the project in keeping me pointed in the right direction.
These past few weeks I have been busy with the Edinburgh Fringe Festival, but I have still managed to get a lot of work done. After finishing off with instrument change warnings, I started work on allowing changing to unpitched percussion staves. My initial thought was to add a staff type change object to the instrument change when necessary, but this provided a lot of complications when copying and pasting, as the user would be able to change the propertiesRead more
This week I've been working on finishing and stabilising the instrument change warning system. I started off the week by fixing the undo/redo functionality for all the different aspects of the system, such as deleting an instrument change, deleting a warning, and deleting the note underneath a warning. After this, I started work on making sure that files with instrument changes saved correctly. After talking about this in the developers chat, we decided that the best way to do thisRead more
I spent the first half of this week converting the instrument change warning text, which was previously a staff text object, to a new custom class. This has allowed me to do things like change the style of the object (it now matches instrument changes), and add the correct behaviour for deleting notes under the warning, allowing the text to move properly automatically. Adding the new object proved quite difficult, as there are a lot of places in the codeRead more
This past week I have been working on fixing the issues of the instrument change warning text. I first managed to fix the broken tests, which was a problem with how some of the methods I had written worked with linked scores. I then started working on changing the existing implementation of the text, which simply created a new staff text object, to a custom type called InstrumentChangeWarning. This has the advantage of allowing me to implement custom behaviour forRead more
This week I've been working on adding an instrument change warning automatically when an instrument change is added. So far I have a very basic implementation that adds the warning when an instrument change object is added before some notes, and automatically moves the warning when more notes are added before the existing warning. The basic idea is that if an instrument change is added, it finds the next note on that staff (if there is one), and adds aRead more
Building on my progress from last week, I have finished my work on key signatures interacting with key changes, at least for now. Adding a key change before an instrument change now updates the key signature for that instrument change, including for atonal key signatures, and deleting an instrument change deletes the key change.
After finishing this work, I have been investigating approaches into a dynamic instrument change warning object that is automatically placed at the end of the lastRead more
This past week I have been working on further improving key signatures for instrument changes. After fixing the bug where deleting a key signature before an instrument change would crash the program, I have been working on allowing the user to insert an ordinary key change before an instrument change, and have the key signatures for subsequent instrument changes update accordingly.
This has proved to not be an easy task. My current solution is to create a method that isRead more
My task this week has been to implement automatically changing key for transposing instruments, which in my mind is probably the most important part of the project that I have done so far. I spent a lot of time learning about how key signatures worked, especially with regards to transposing instruments, and key signatures that only applied to a single stave. After doing this, I attempted to implement automatically adding a key change object to each stave that was affectedRead more
After last week's work of automatically opening the instrument change dialog when an instrument change is added, my goal this week was to automatically change the instrument change text to the newly selected instrument.
After a bit of experimentation, this turned out to be a fairly simple thing to do, using the trackName() function on the instrument template, which gets the long name. There is some scope for future work for allowing the user to choose which name to useRead more