How to : export lyrics and chords

• Jan 3, 2016 - 19:21

Well, I suppose the title says it all ...
A bit more info ?

I am needing to export the lyrics and chords from scores that I transcribe.
More specifically, to chordpro format.

Is this possible ?
Does a plugin exist for doing this ?


MuseScore's main tool to export to other software is File>Export>MusicXML. There are other output format types but I doubt they would be helpful.

As to whether some other software reads MusicXML and writes to ChordPro, I did a quick Google search and didn't find any. You might try a more careful search. It seems the most promising route if you can find a program that reads MusicXML and writes ChordPro.

As for a plugin, you can look in the MuseScore plugin repository at []. I saw nothing there that suggested anything to do with ChordPro. There could be other plugins elsewhere on the Internet.

I'm currently contributing on the UltraStar export plugin, which is fairly easy to program.

I might have a go at this request in the future as the [ChordPro format]( itself is really simple.

The 'future' however could be anything between next week and next year, so if anyone wants to go ahead first, feel free to mention it here.

I have done some experimentation with a script that creates a Chordpro file from MusicXML exported from Musescore.

Note that this is very experimental code to see what is possible. It is intended to break at the slightest provocation, to see what needs to be has been tested with one MusicXML file.

This script gets you some way there, but there is is not enough information in the MusicXML file to make it a fully automatic process -- you will have to edit the Chordpro file to improve it.

The worst problem is that there is no nice way to break lines in the Chordpro file. Often, a fixed 4-bars per line is good enough. However, where the last beat of a bar is a pickup beat, you usually want that pickup beat on the next line so that the lyrics read properly.

Our [F]love af[Do]fair is a [C]wondrous [Cm]thing
That [Gm]we'll re[C7]joice in re[F]membering

In this example, the word 'That' is actually the last beat of a bar, but it is best to put it at the start of the phrase that it belongs to. However, there is no information in the MusicXML file to indicate this.

In reply to by ironss

I wonder if we have gotten any further on this?
A direct musescore export would be nicer than the xml route(less things to go wrong) and might simplify the ability to start end phrases using some sort of markup. I believe our hymnal for example uses a "/" to indicate the end of a phrase.

While I am on that, Often, (hymnal example again) they put the first verse lyrics under the notes and then the other verses are just in column at the end of the page. When i convert these to chordpro I have to add all the extra chords for the other verses. So I have one long sequential chord lyric sheet. (I prefer this to bouncing back n forth, as chordpro apps can auto scroll thru the page very nicely)

Now what if using the score phrase markings and 'assuming" the column of text is in the same, phrase per line. MS exported the chords for each verse...Now yes sure they wont end up in exactly the right place in the line, cause lyrics just dont work like that. But moving (known correct) chords "[G]" in chordpro editors is relatively simpler than having to manually insert chords(which I keep having to lookup).
Even if it only created this
[G] [F] [C]Mary had a little lamb
[D] [E] [A]Its fleece was white as snow
would ease of my burden considerably.

In reply to by [DELETED] 5

I am very keen to see this come to fruition. Unfortunately Im not much of a coder but Im happy to test or help out in any other way.
My problem is I dont even know how to implement the script? Does that code sit inside musescore, a plugin or is it a stand alone script? How is it used?

In reply to by vector180

As way of update,
I got this python script to work as explained and made some subtle changes.(about my level of coding expertise)

modified MDS Jan 2018

added line between verses

added verse number as a typical chordpro format {c:Verse{0}}

I have not, nor know how as yet, how to submit that to github, Will chase this up at a later date.

But I iterated this over a 4 verse song and it worked rather well. Sure knowing when to break a line is a tricky one. In this song(which happened to have one of those odd 'starts on last beat of bar not 1st') I did by hand in chordpro editor(SongBook). But this little post edit is far easier than typing the whole thing in so very happy with it.

Would be nice to implement this as a plugin within Muscore(a compromise between embedding it in musescore(see Marcs reasons why not) and having it as a command line) jsut so we remain within the nice gui environment. However I have no idea how to do this.. a job for another day.

Have much appreciated everyone's input and the original source writers efforts

In reply to by vector180

I would challenge the assumption that inventing a brand new non-standard format and writing brand new code to export to that format is in any way better than using the well-established MusicXML format. You say less could go wrong, but actually much more could. There could be things that aren't as well-thought out in the design of the new format, there could be miscommunications about the actual definition of the format leading, there would be only one or two developers max working on this export and thus practically guaranteeing it would not be well-maintained over time leading to bugs as internals change and this code is not properly updated, etc etc etc.

Much better to export to well understood standard formats like MusicXML and then depend on the enormous community of people with interest in that format to worry about creating converters to other formats. That is, if a good converter from MusicXML to chordpro doesn't already exist, someone should write one, and that effort would benefit everyone using chordpro, not just the subset also using MuseScore.

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