Join Google Summer of Code 2018

• Feb 27, 2018 - 19:31

This forum is for discussions relating to MuseScore development through the Google Summer of Code. See

https://musescore.org/en/handbook/developers-handbook/google-summer-cod…

for more information on this exciting program for student programmers!

If you are a student interested in participating in GSoC, or a developer interesting in helping mentor GSoC students, we encourage you to introduce yourself here and to start discussions on topics relating to your project ideas.


Comments

I'm Ruoyu Sun, a 1st year master from Fudan University in Shanghai, China, majoring in Software Engineering.
I'm interested in applying in GSOC 2018, and would like to contribute for the idea about "Page layout control", "Beginner mode" and "Improvements to notation and playback".
I'm better at c ++ than any other language, and Qt is my favorite, too. I have a lot of experience in Qt development and I also used qt for development at the 11th Intel Software Innovation Contest in March. In addition, I'm passionate about music. I have studied harmonica for three years and lute, a Chinese traditional instruments, for six years, and my girlfriend is studying Bel canto in Conservatoire regional de regionement d'amians.
I need help from where to get start.

Hello. My name is Xiaoshuo, a graduate student from Peking University, China. I am interested in the idea about Transcribe Assistant / Auto-transcribe / Interface with Sonic Visualizer or Vamp plugins for analysis of audio.

I read through the idea, and I have some questions. In my first glimpse, it seems that the project is to write a plugin that helps transcription and even perform automatic transcription. Neural networks might be used to obtain good performance. As a graduate student researching into related topics, I feel confident to make contributions to this project.

However, after reading the additional notes, I feel confused. The passage states that subsequent edits in either program would be reflected somehow in the linked program. For instance, suppose that the other program is SonicVisualizer. A user edits notational representation on MuseScore, and then the changes are reflected on SonicVisualizer. Does it mean that I should also modify the code of SonicVisualizer? I am not sure how sharing data would help deal with it. Perhaps the data is referred to audio, music notation, etc. Any suggestion?

In reply to by oddsward

I wrote that project description, although I was deliberately being vague and rambled about a few different approaches, for one reason because I don't know the best way to go about it and was hoping for some fresh ideas from students.

I don't necessarily think that code for automatic transcription should necessarily go inside musescore's code base. There is something called "VAMP" which I mentioned, which is a plugin interface standard for doing audio analysis, and there are already a lot of VAMP plugins which convert audio into predicted midi. Some vamp plugins are better than others for different types of music. So it might makes sense for musescore to just implement the vamp plugin interface.

Regarding Sonic Visualizer interaction, I was imaging if it might be possible for the MuseScore and SonicVisualiser to somehow communicate info between them. For instance the user identifies some series of notes that look correct and so selects those notes to be notated, but then the user might ignore some mispredicted notes. But my idea here might be a little far-fetched and impractical to be honest.

In reply to by ericfontainejazz

Thank you for your reply. I understand your idea about integrating Vamp into the project. Actually, I used Sonic Visualizer before and utilized some Vamp plugins to visualize music in my research. In my opinion, the project is to write a host application which could use some precompiled Vamp plugins. Besides, since Sonic Visualizer is open source, I think that it is easy to adapt some codes about signal transformation into musescore. Furthermore, I found LADSPA might be integrated into this project too but it only supported Linux. Another problem is how to visualize the results. I quickly read through some documents but it seemed that Vamp plugins only returned audio feature but not provided API for illustration. Perhaps, one could utilize Qt to draw plots displaying the results.

Meanwhile, today I read some papers about music transcription. It turns out that current algorithms only work out in clear audio. The algorithms collapse when dealing with polyphonic music or music full of drums, noise, etc. Nevertheless, the state-of-the-art method exploits supervised learning (the underlying feature could be CQT as you mention) and obtains good results on monic music. Hence, I think that it is better to achieve the goal by implementing a transcribe assistant.

As for the idea of establishing communication between musescore and sonic visualizer, I still find it difficult to implement. It seems that to achieve the effects you mentioned, one should extend the code of sonic visualizer and musescore at the same time. Otherwise, how could sonic visualizer detects user's changes on musescore, and vice versa. I am not sure whether I get the point. Anyway, I want to further discuss with you.

In reply to by oddsward

"Another problem is how to visualize the results" -which was my motivation for wanting to interface sonic visualizer with musescore somehow, since sonic visualizer is already good at "visualization".

But you are right that it would be difficult to implement because would require modifying both at the same time. But that is why I was also wondering about defining a standard API for communication which any program could implement.

Regarding a program that I find has a very good gui for analysis is "Trascribe!" by Seventh-string software, which is proprietary demo-ware, but it worth to take a look at...their piano roll has the thickness of each midi note represent the strenght of predition, and you can select a range of audio and get the exact spectrum for that audio range lined up with a piano keyboard (see attached screenshot). Since musescore already has a basic piano roll (although very buggy) with experimental ability already to display waveform, maybe musescore's piano roll and waveform could be improved to be like Transcribe!, and maybe have musescore's barlines be displayed on the waveform with user able to manually adjuste their position to help out analysis.

And I think human supervision is I think the way to go particuarlly for polyphinic music performed and recorded live by humans.

Attachment Size
Screenshot at 2018-03-05 15-26-01.png 107.35 KB

In reply to by ericfontainejazz

I try to figure out the function of communication API. Consider that two programs are communicating. The API should provide some sort of mechanism to inform the changes of each program. For instance, if the user edits the note on Musescore, then some messages are sent to notify sonic visualizer, and then the waveform is changed on sonic visualizer. It is possible to build the interface through shared memory. In each program, a thread is created to interact with the shared memory. The shared information includes the current window in which the user edits on, the audio, melody representation, etc.

With respect to the gui, I draw a very simple draft. It is similar to Transcribe! and AnthemScore. The difference lies in that the staff is displayed below the piano roll and the waveform. When the user edits on the staff, the waveform would display the current predicted notes and spectrum, which helps him (or her) to transcribe.

Attachment Size
微信图片_20180307223330.jpg 38.38 KB

Hi MuseScore team,

My name is Lauren Arnett, and I am a junior studying computer science at Columbia University. I saw on MuseScore’s website that there is a Google Summer of Code project working on a Machine Learning dataset for Optical Music Recognition. I am currently working on developing OCR software for digitization of a large 35mm slide collection at Columbia’s Media Center for Art History, and I’d like to apply the knowledge I’ve gained through this project to working on Audiveris and MuseScore. As both a computer scientist and a pianist, this project is at the center of my passions.

I’m hoping to find out more about this project. Does this project center more around working on the OMR software and the pipeline between Audiveris and MuseScore, or is it more focused on developing the dataset? What are the main tasks that you would be looking to have done over the summer?

I have cloned and compiled the MuseScore repository, and I've started looking at the OMR code. In the OMR folder, there is a TODO file that includes some tasks including detecting time signature and clefs and creating OMR for chords that look like they could be included as part of the project for the summer. Would these be some of the tasks I could work on through GSoC?

Thank you very much for your help!

Lauren

In reply to by Lauren Arnett

Hi Lauren,

Thank your interest in this project. MuseScore has several OMR projects going on, or at least started :)

  • We have indeed a OMR directory in MuseScore code itself at https://github.com/musescore/MuseScore/tree/master/omr. This is a very limited OMR, no ML here. The main goal is to open PDF files, and be able to align them with MuseScore files to make the transcribing process easier. So from a PDF, we mainly want to extract the staff lines, the space between two stafflines, the number of system per page, the number of measures per system and eventually the clef and time signature. With this information we can setup a MuseScore file similar to the PDF and display both of them side by side, at the same scale, zoom and pan them in sync. The user can then enter the music more easily. This project is not listed in the list of ideas for 2018 but if you believe it's valuable for users and you would like to work on it, please try it, check the code and see how you can improve it. I'm happy to help you find your way and review your proposal.

  • Audiveris is different project than MuseScore. It's a java software entirely dedicated to the task of OMR. The MuseScore project uses Audiveris to provide the feature behind File > Import PDF in MuseScore 2. If you click on this menu, you end up on https://musescore.com/import where you can upload a PDF file. MuseScore.com will run Audiveris 4 on a server and send back a MuseScore file that you can further edit in MuseScore. It hides all the power but also all the complexities of Audiveris.
    Audiveris is now at version 5, and want to improve further. To achieve this goal, hundred of thousands of small images (PNG) centered on a given music symbols in the context of actual sheet music are needed. So we need a tool to export these small images together with annotations from a MuseScore file. This tool can be MuseScore launched with some special command line options. We started this work on the "imeta" branch based on MuseScore 2.1 https://github.com/musescore/MuseScore/compare/2.1...imeta?expand=1 We want this work to be ported to our current development branch "master", which will become MuseScore 3 and of course we want it to be improved. Once done, we can run it on thousands of scores, create a great OMR dataset that Audiveris or other OMR projects can use. That's the idea at https://musescore.org/en/handbook/developers-handbook/google-summer-cod…

Hello! My name is Andy Tang, and I'm a third year student studying Computer Science at the University of Michigan (Ann Arbor). I'm interested in working on a tutorial/Beginner Mode, something that I believe Musescore can greatly benefit from. In its current state, the only guidance I receive is a one page sheet full of cluttered instructions. Not only is this intimidating, but it's also not engaging and barely scratches the surface of Musescore's capabilities. A tutorial of some kind would be extremely useful not only to existing users, but to potential newcomers as well.

I've played the piano for more then ten years now, and am familiar with how Musescore works. Additionally, I'm experienced in C++ and teaching, but I lack experience with qt. Does anyone have any suggestions on how to start out?

In reply to by tangandy

Hello Andy,

Please read https://musescore.org/en/handbook/steps-toward-successful-application
then try to compile MuseScore by yourself and ask questions on IRC if necessary. Once compiled, you can pick an easy https://musescore.org/en/project/issues/musescore?tags=easy and try to fix it and starting thinking about a way to make MuseScore easier to use for beginners. Again, IRC is a good place to discuss your ideas, or you can open a new discussion in this development forum.

In reply to by tangandy

Hi! As the person who suggested this idea and would possibly mentor it, I thank you for your interest!

Additional tutorials would definitely be nice, but to be clear, the focus of any GSoC project relating to this would be in actually adding code within MuseScore to support these tutorials (eg, a way to guide users to complete desired actions only and give feedback on incorrect actions). So that could be interesting to think about - what other in-application tutorials have you seen that you think are effective, and what program supported would be needed to enable these to be created in MuseScore?

Aside from tutorials, there are lots of other possible aspects to the idea as I envisioned it - simplification of the UI itself for younger users, for example. But in the end, it's about you making a proposal and selling us on it, not about us selling you on doing something we suggested :-)

As for Qt, most of us who work on MuseScore learned it as we went along. There are some tutorials on the Qt site, but mostly it is a matter of seeing how we already use it and then doing more of the same. Maybe someone else has better suggestions...

Hello, I’m Zhesong Yu, a 1st graduate student from Peking University. I’m interested in the idea about ‘Scratch pad’. After reading the idea and thinking for some time, I produce some ideas of my own about the project of ‘Scratch pad’, and also have one question.
Idea1: In general model, when we change a note from 1/4 to double, it will cover the note behind it. In Scratch Pad model, nothing will be covered or deleted automatically.
Idea2: What about adding the ’section break’ ? ‘Section Break’ is similar to ‘Page Break’ in Microsoft Word, the notes behind it will be a new section.
Idea3: I think ‘Ctrl+c’ from the original notes and ‘Ctrl+v’ to the Scratch pad is necessary.
Idea4: There could be many Scratch pads in a time. So the users can play every ‘Scratch pad’ and pick the best version.
Idea5: When we create some new notes by keyboard, it will create some notes with the same tuplets. What about if we type two notes quickly at once, it will create two 1/8 notes ; if we type four notes quickly at once, it will create four 1/16 notes. Maybe this will reduce the user’s operations.

Question: ‘’It could also be used to set up a meterless score.’’ I still have no idea about the meaning of ‘meterless score’ in Musescore project.

Hi MuseScore team,

My name is Justin Nitz and I am a junior studying computer science and instrumental performance(French Horn) at the University of Central Missouri. While looking at the Google Summer of Code 2018 page, I found out that MuseScore was an option. I have been using MuseScore to transpose horn orchestral pieces and general partwriting exercises for a few years now.

I saw that there was a idea listed to create a beginner mode for younger users. In past projects, I have worked with UI design and I have a younger brother that would be able to test out the beginner features! Animation is another passion of mine and I feel like I could create an on-screen help character similar to Mr. Clippy.

I have already cloned the repository and have looked at CMake and the procedure for contributing changes. I hope to make a few contributions this week to demonstrate my understanding of the project.

I look forward to future conversations!

Justin

In reply to by slowpokeguy

Hi Justin,

Great! Feel free to pass by our IRC channel if you need help finding your way. Also, since you are a long time user, it would be great if you think about some ideas to improve MuseScore yourself ! The best ideas often come from frustration you might have when using MuseScore.

Hello guys, i want to participate in Google's Summer of Code!

My name is Stefanos Gin, I am a programmer and a musician (guitar/ music production..) Currently i study computer science at AUTH, Greece and music composition. I already use MuseScore for my music studies and entertainment and today I finally managed to build the master branch (debug), after a couple of unlucky attempts. So I am wondering now whats the most efficient thing to do next so I can get familiar with your code and crew? Have some ideas about how could i contribute but i have no problem at all working on a topic where you need more help. I 'll make a bugfix in the next days and PR it, as the guide of success proposes haha

Hello! I am Dmitri Ovodok, and I am a master student in St. Petersburg State University. I don't use MuseScore myself (though I find sometimes some nice scores on this site), but I like music and am interested in possibility to participate in this project.

I have taken a look through the listed ideas, and I find the task on score diff tool quite interesting for me.

As another option, I can suggest a task on implementing VST instruments support for MuseScore. Browsing this forum, I have noticed that a lot of people ask about using VST instruments and effects with MuseScore. Although it is possible now to use them via external software, built-in support for them in MuseScore can potentially make this process more comfortable for users. I am not sure that this really needs to be done, but if there is some interest in having such a functionality in MuseScore, I will be glad to work on it. I have some experience in working with VST SDK (to be more precise, version 2.4 of SDK, the third version of it will still require additional exploration by me), so this can help me in this task.

As far as I understand, you will send me to fix some bugs, so I will do it soon :) I just wanted to introduce myself and ask for your opinion on my proposal.

In reply to by dmitrio95

I don't think implementing VST support in MuseScore is has much utility. MuseScore has for a long time been able to interface with VST externally via "Jack", and this will become even easier with MuseScore 2.2 which has direct midiout without the need for Jack. Midi is the standard method of communication for this type of stuff, so as long as MuseScore is properly communicating midi, then I see no need to bring VST inside of MuseScore (in fact that additional code might cause more headaches than the benefit).

Are you aware of any specific benefit that having VST inside of MuseScore would have over simply communicating to another VST host via Midi? To me there are plenty of other issues of higher utility.

If you want to fix bugs, the easy ones to start off are: https://musescore.org/en/project/issues/search/musescore?tags=easy

In reply to by jeetee

Thank you for replies! In fact, I do not see any further benefits from this except a bit more of user friendliness. As I have already mentioned, I am not an active user of MuseScore editor, and I understand that the possible benefit may not overcome the drawbacks. As it seems to be so, I will probably better focus on other possible ideas.

In reply to by dmitrio95

Hi! I'm very glad to get to know you, as a big fan of MuseScore and VST SDK! :D
To be honest, I'd rather use MuseScore and a VST intrument seperately with communications via MIDI ports like ericfontainejazz suggested.. It's more interesting that we bring MuseScore to a plattform on higher level as a notes editor, and build all other connections there to enhance the user facility. Let me know your opinions on this idea maybe it can be a brand new open source project :D

Hello MuseScore Team,

My name is Roshni Biswas and I am an undergraduate student majoring in Computer Science and Engineering at National Institute of Technology, Rourkela (India). I am highly passionate about programming and music (Pianist and Singer). I have been familiar with various music notation/composition software and have been using Musescore intensively for the last couple of months. I'm specifically interested in taking up the project on ‘Lyrics Editor’ for GSoC 2018.

I have noticed that Mr. Peter Jones (shoogle) had worked on this initially, and Kavindu Chamiran is currently expanding on it, but some features that are yet to be worked upon including copy-paste, spell-check and auto-hyphenation.

I have built MuseScore on my system and am getting familiar with the existing codebase and IRC discussions, hoping to grasp a good starting point to begin work from where it was left off. Please guide me with my creating my project proposal on these lines.

Thank you!

Hi, MuseScore Team.

I'm Claude Gao from Nanjing University of Aeronautics and Astronautics, majoring in Computer Science and Technology. I have a good command of C++ and have some experience working with QT before.
I'm as an independent musician as well using Digital Audio Workstation, so I am very proficient in the digital audio workflow.
Though I havent used MuseScore before, I have experience int using Sibelius, Cubase and other score softwares.
My ideas are listed as below:
1. [Chord symbol style editor] I've seen that now users have to customize XML file to change with chord styles, this may be a bit geek for general users. So I assume that a more user-friendly interface is applied will be helpful. Furthermore, like the idea for plug-ins store, a well-integrated style store will also help a lot, which allows user upload there own style data and preview the style as clicked.
2. [Transcribe Assistant] As far as I've seen there is no good enough auto-audio2midi projects can work well till now, so only providing spectrum for experienced user is preferred. But I don't know if there is needs for MuseScore integrated with this feature, since many DAW have more powerful audio analysing feature and are VST supported. And for non-midi clips, I think MuseScore can introduce a feature like "Background music" feature.
3. Still, I wonder if it would be helpful that making a elite VST version of MuseScore, so that users can deal with spectrurm visualization, audio clips with external tools in DAW.

Looking forward to feedbacks!

In reply to by tenyuuk

I like the idea of integrating the chord style editor with a plugin store. Probably other things in MuseScore like templates, styles, and palettes could be shared in a similar way. Probably doesn't make sense to tackle all of this in one project, but it could be interesting if one person tackled the editor and another the sharing.

I for one am not in favor of saddling MuseScore with VST support - I'd rather see MuseScore continue to focus on notation and then on communicating better programs that specialize in playback. And I think this is a common feeling among other developers and in particular among those who would likely be selecting the GSoC projects. Which isn't to say you can't submit a proposal, but I do think your chances of success are greater with something less controversial.

Hello Musescore Team,

Its Mahima here. I am an undergraduate student from Jaypee Institute of Information Technology, Noida (India) majoring in Information Tchnology . I have a good command in C++ and want to contribute towards Musescore. Its definitely a bit late for Gsoc so I know i am at a disadvntage still can i do something to make my chances of getting selected better.

Do you still have an unanswered question? Please log in first to post your question.