We're hiring a C++ developer to work primarily on engraving within the MuseScore Studio team. This is hands-on, experienced independent contributor role with lots of autonomy. You'll take on ambiguous, complex problems and see them through from design to shipping and long-term maintenance.
MuseScore Studio is free, open-source software used by millions of musicians, students, and composers worldwide, so the code you write here has a lot of impact and is used by an active community of creators around the world.
- You'll work on the layout and rendering engine that turns musical data into beautifully typeset, readable scores. It's one of the most interesting and rewarding problems in the product: the difference between a score that looks professionally published and one that just barely conveys the notes. The team is responsible for:
- Domain model - representation of elements of music theory as objects in code (including parts)
- Engraving - arrangement and drawing of objects on the canvas
- Playback - generating events for a synthesizer from objects
- Editing - changing objects and their relationships, taking into account the rules of musical theory
- Infrastructure - read, write to file, import, export, API, commands.
- Significant professional experience as software developer, including modern C++ in a large, long-lived, performance-sensitive desktop codebase.
- Experience owning solutions end to end, from design through delivery and maintenance, not just implementing tickets.
- Committed to code quality, with good judgment for making solid architectural decisions.
- Experience with OOP and domain model design.
- Able to read and understand fairly complex sheet music, with a good understanding of music theory.
- Solid communication and collaboration, comfortable working async across a distributed, global team.
- AI coding-savvy, applying critical thinking to discern when it is the right tool for the job
- Attention to detail: in engraving, small inconsistencies are immediately visible to the musicians who rely on the output.
- An eye for visual design: you know what a beautiful score looks like and care about making that happen.
Desirable
- Hands-on experience with MuseScore Studio or a competing notation/composition tool, as a user, arranger, or composer.
- Experience with MIDI and synthesizers
- Experience with asynchronous and multi-threaded code
- Experience working with fonts, with freetype
- Experience in rendering and OpenGL
Bonus Points
- Experience working on engraving for a music composition software or publisher