GSoC 2024 - Work Product - Dynamics Popup

Posted 4 months ago

Hello everyone,

This will be my final blog post as GSoC 2024 comes to an end. It was a very rewarding and fun experience, not only in terms of coding but also in learning more about music. In this blog post, I'll summarize the work I've accomplished over the past 12 weeks and share the pull requests I've made.

Project description

The primary goal of this project was to introduce a new popup that would allow users to enter dynamic markings and hairpins through the popup along with drag handles(or grips) to draw the hairpins. You can find complete details of the project in my introductory blog post.

Following changes have been implemented as a part of this project:

  1. Dynamics popup itself to change existing dynamics and add hairpins.

  2. Drag handles to draw hairpins and shift key functionality to change the hairpin type when dragging.

  3. Shortcut to open popup when a note or rest is selected along with the preview of dynamic. (Ctrl+D/Cmd+D)

  4. Automatic switching of hairpin type based on the end dynamic.

Code changes

The work has been divided into the following four pull requests:

  • PR #24125 Adds the popup with functionality to change dynamics and add hairpins through the popup.
  • PR #24147 Adds drag handles to dynamic to create hairpins and the shift key functionality to change hairpin type.
    • fa61d3f Add grips for dynamic
    • 959ccb2 Draw hairpins on grip drag
    • b11c56f Add shift key functionality to change hairpin type
  • PR #24152 Adds functionality to add dynamic using shortcut, opening of popup when hairpin ends on a note or rest, and the automatic switching of hairpin type.
    • 71a465a Add shortcut functionality and automatic switching of hairpin type
  • PR #24159 Adds the preview of dynamic on hovering.
    • d3ed9c1 Add preview of dynamic on hover
    • a2664dc Update itemRect to use QRectF
    • ce21812 Add adjustedBoundingRect to set a fixed height for bounding rectangle

All of the above pull requests are different parts of the draft pull request #23038. They were split into separate pull requests for a cleaner git history and easier testing and reviewing. They haven’t been merged yet, but they will be soon, as this feature is scheduled for the 4.5 release.

Evaluation

The project has successfully met all the goals outlined in my proposal. The popup allows users to add or change dynamic markings, and the drag handles enable efficient drawing of hairpins. The shortcut functionality and automatic hairpin switching work as intended. The only feature left to implement is the optional typing functionality for dynamics, which I plan to contribute in the future. These enhancements will greatly improve the user experience by reducing the time and effort required to add dynamics and hairpins.

Future work

Since these changes haven’t been merged yet, I will continue to maintain the pull requests and resolve any bugs that arise during testing or after releasing the feature. Additionally, I plan to contribute the typing functionality for dynamics in the near future.

Thank you for reading my final blog post! I also want to extend my gratitude to my mentors and other team members for their continuous support throughout this project.

More information about the project can be found at below links:

  1. Project proposal
  2. Weekly blogs

Comments