Ideas 2017

Updated 1 year ago

Your proposal

We strongly believe that the best proposal for you is the one you'll do. If you have any suggestions, come onto the IRC channel #musescore on freenode.net, or contact us on the developer mailing list. Also check ideas from previous years.
Click "Edit" above, then copy and paste an idea below and change the text with your new idea for GSoC 2017

Crash reporting

MuseScore currently doesn't have any crash reporting facility. It would make the job of developers a lot easier if we could gather crash logs in a web interface. The first target would be Windows but the crash reporting system should be cross platform. MuseScore's development infrastructure would need to be updated accordingly.

We could use the Google Breakpad project as a basis, also check Crashpad since breakpad has problem on OSX (Chromium uses crashpad).
Breakpad is only part of a crash reporting system, and it doesn't offer a reporting mechanism or a client UI (only has manual tools for decoding crash dumps on Linux). For a server, see Mozilla's Socorro (Python) or Atom's mini breakpad server (Nodejs).

Other interesting resources:

Timeline

When a score is growing, it's sometimes hard to know where you are located in the score, which part you worked on already etc... The idea would be to create a new panel, potentially to replace the navigator, which gives an abstract view of the score, showing squares for each measure on each instrument, with a different color if the measure is empty or not. Potentially, having one row for rehearsal mark, for tempo markings, time signatures, key signatures etc...
Timeline

  • Difficulty:Medium to Hard
  • Skills: Qt
  • Possible mentor: Nicolas Froment (@lasconic)

Keyboard layout and shortcut management

Many shortcuts in MuseScore do have conflicts due to different international keyboard layouts. Example of such a conflict can be found with the French keyboard. To solve this problem, MuseScore needs a system which can detect the client keyboard layout and auto select the appropriate shortcut list. The developer challenge is to make this work for all international keyboard and if needed create for each of them a custom shortcut list. Additional challenges are the differences between Mac OS X and Windows/Linux. See #47361: [Mac OS X] Insert measure keyboard shortcut doesn't exist More related issue: * http://musescore.org/en/node/48846

  • Difficulty: Medium
  • Skills: Qt
  • Possible mentor: Nicolas Froment (@lasconic)

Plugin manager

MuseScore functionality can be extended by plugins. Discovering the compatible plugins and installing them however is currently a manual job. The goal is to create an App Store-like Plugin Manager from which it is possible to discover, (un-)install, (auto-)update plugins in an easy manner. The Resource Manager currently used to handle language packs could be extended for this purpose, and indeed already has some bare-bones code for plugins.

Since many (a little of 40%) of the current 2.x plugins are available on GitHub; we should consider using their releases-API for those plugins. At the same time, locally installed plugins must still be listed and integrated as well.
Another matter to address is how to know if a plugin is compatible with the current MuseScore version.

  • Difficulty: Medium
  • Skills: C++/Qt
  • Possible mentor:

Chord symbol style editor

MuseScore supports the entry of chord symbols like Gm7, C7b9, etc. It has a pretty flexible system for entering the chords, where you can type pretty much a human musician might understand and MuseScore will do its best to understand it as well. However, there are only limited controls for actually displaying the chord symbol. MuseScore provides two preset options - Standard and Jazz - and does not allow you to customize, for instance, how large the "G" should be relative to the "m" or the "7" in Gm7, or how much subscripting should be applied to the "b9" in C7b9. There was some preliminary work done on an editor years ago that could be leveraged in producing a more complete facility. There are also some improvement that could be considered in how chord symbols are handled with respect to transposition, linked parts, fretboard diagrams, capo, Nashville notation, MIDI import, MusicXML, etc.

  • Difficulty: Medium to Hard
  • Skills: C++/Qt
  • Possible mentor: Marc Sabatella (@MarcSabatella)

Page layout controls

MuseScore provides a number of global controls over page layout - you can set the page size and margins, staff size, control distance between staves, hide empty staves, etc. There are certain overrides possible like staff spacers to change the distance between two staves. However, sometimes there is still a need to for more control - override global settings for individual pages, or particular systems. You cannot have the overall staff size or default staff distance slightly smaller on one page than another, or designate certain systems to not hide empty staves, etc. This project would involve an investigation of how we might best expose controls like this to the user and then to design and implement the facility.

  • Difficulty: Medium to Hard
  • Skills: C++/Qt
  • Possible mentor: Marc Sabatella (@MarcSabatella)

Accessibility

Largely as a result of work done in a previous GSoC, MuseScore can be used to some extent by blind users via keyboard control and screenreader feedback. See https://musescore.org/en/node/37476 for more information on what is currently possible. Mostly, one can navigate existing scores; most of the editing facilities still require use of a mouse which is not an option for blind users. There is still a lot of work that needs to be done before blind users can take full advantage of MuseScore. These include making the palettes fully keyboard accessible, also making it possible to access all score elements (including text, articulations, and other markings) via keyboard only. These enhancements will also benefit sighted users who prefer the keyboard for efficiency.

  • Difficulty: Medium to Hard
  • Skills: C++/Qt
  • Possible mentor: Marc Sabatella (@MarcSabatella)

Lyrics editor

As described here and partially implemented here, the Lyrics Editor would display all lyrics from the score as plaintext in an editable multiline text field. The contents of the text field would be doubly linked with the score, meaning that a change to lyrics in either the score or the Lyrics Editor would be reflected in the other. Users would be able to search for lyrics online and paste them into the lyrics editor, or copy lyrics from the editor to produce lyric booklets for choirs and church services.
Possible extensions: spell-checking, automatic hyphenation, verse extraction.

  • Difficulty: Easy to Medium
  • Skills: C++/Qt
  • Possible mentor: Peter Jonas (@shoogle)

Transcribe Assistant / Auto-transcribe / Interface with Sonic Visualizer or Vamp plugins for analysis of audio

This idea is bit open-ended, but the general desire is to facilitate musical transcription from audio with musescore. Considering that there is already a lot of prior knowledge on Automatic music transcription, it might make sense to focus on integrating with external tools rather than reinvent the wheel. Sonic Visualizer is a particularly powerful open source desktop application which has all sorts of methods to visualize the waveform. In particular it has a Peak Frequency Spectogram view mode, which is useful for visually identiying notes and creating them on the midi layer. Sonic Visualizer also can interface with "Vamp plugins" to do all sorts of analysis, in particlar there are a few which can help convert the audio into midi. It would be useful to interface Vamp plugins or Sonic Visualizer into musescore, so could see notation along with the analyzed midi and spectogram. And there is a standalone command line tool aubio that can detect note onset and interface with jack. But probably would need manual assistance for converting the messy analyzed midi into something that looks nice in musescore...might need to identifying things like time signatures and tempo changes and isolating instruments & voices. In addition to dealing with an entire file of pre-recorded music, it would be nice to be able to sing or play on a non-midi instrument in the middle of score writing and have an easy way to input that analyzed midi into the score, synced to the time sig and beat.

And rather than complete auto-transcribe, another approach is just an transcribe assistant, similar to the proprietary program Transcribe! but something that can interace or be incorporated maybe as a plugin into MuseScore. Would be useful would be to display the Constant-Q Transform of audio as the background for the piano-roll editor, that way can visually verify if notes in musescore match frequencies in the audio.

Aside: there is also a proprietary program AnthemScore which converts audio into MusicXML via a Convolutional Neural Networks described here which operates on entire file at a time, but since it is not open source it would be probably be hard to integrate into musescore. It also takes several minutes on a Quad-core machine to analyse, and it doesn't seem to handle tempo and time sig changes well (although pitch detection is almost spot on), and puts all note onto a single grandstaff.

Anyway maybe another approach is to simply focus on making musescore midi file input be much more smarter to be able to identify time sig changes, tempo changes, breaths/pauses, rubato, etc.

Sorry this is a bit rambling, but maybe there is a specific project description along any of these lines.

  • Difficulty: Medium to Hard
  • Skills: C++/Qt
  • Possible mentor: Eric Fontaine (@ericfontainejazz)