Ukulele Song Editing With Auto-Format: Plain Text to ChordPro in Minutes


This 3 minute video tutorial covers the difference between “plain text” songs and ChordPro formated ones. It also demonstrates how the UkeGeeks editor can automatically do the conversion for you (as well as introducing a few common tags).

Sounds tre fantastic, no?

Well, of course, but there are limits. Rule one for doctors is “do no harm”. Well, not being a perfectionist I aim for “don’t do too much” (harm). So the auto-conversion is cautious — it only recognizes “common” chord shapes (I used Hal Leonard’s “Uke Chord Finder” as a guide). Using “F” as an example here’s the recognized chord names:

Fm, Fm6, Fm7, Fm9, Fdim, Fdim7, Fmaj7, Fsus2, Fsus4, Faug, F6, F7, F9, & Fadd9

In addition, the chord names can only be sharp or flatted: D, D#, Db.

(see footnote if you need more flexibility than this provides)

It’s fair to ask whether one song format is really better than another. For ease of editing the plain text (see below) format is definitely easier — moving when to play a chord requires adding or removing spaces, now that’s easy!

  F                G7
I don't know why I am so very shy,
  C7         F
I always was demure,
I never knew what silly lovers do,

There is a downside, however, and it’s due to how programs need to see data. With plain text a program must guess where the song’s title and artist’s names are located. Compare this to ChordPro file format where you explicitly set these apart:

{title: Loving A Rock Is Hard}
{artist: J.B.Mangrove}

For software this is awesome. Also, marking chords by placing them within square brackets ensures that the program can accurately find them, making features like transpose or drawing chord fingering diagrams a cinch. Here’s that song written in a computer readable form (“ChordPro” format):

{title: Loving A Rock Is Hard}
{artist: J.B.Mangrove}

I [F]don't know why I [G7]am so very shy,
I [C7]always was [F]demure,
I never knew what [C]silly lovers do,

I often keep both formats for songs, certainly while I’m still working through how to play it (when experimentation and moving chords is most useful). I make two files per song:

  • mySong.txt (the “Plain Text” version)
  • mySong.cpm.txt (the ChordPro markup version)

Look, geeks don’t trust computers — good geeks maintain many backups, so I’d encourage you to do the same — especially now that the editor will reformat your plain text version on a whim.



If you need a more forgiving conversion then try the Song Reformat Tool with the “common chords only” option disabled (verify the results, of course).

If your song is all tablature — i.e. it isn’t suppose to contain any chords — then check the “Don’t perform this check again” option.

Tags: , ,


  1. Nice stuff !

    Only showing 5 frets is not a real problem and can be modified in the code
    this.numFrets = 5;
    A pitty chord diagrams only show first 5 frets ok neck.
    Where can I modifiy code so that top fret is not the first of neck and add a little number on the left of diagram to inducate what is the fiste fret of the chords.
    I have trieds modifying the definitions with frets higher than 5 with no succes…

    This type of E chord does not show

    {define: E frets 4 4 4 7 fingers 1 1 1 1 add: string 1 fret 7 finger 4}\

    Am I wrong ?

  2. It’s me again !
    Looks like you can data a chord definition with frets higher than 5 within the syntaxed text cpm.txt
    but not premanently in the definitions.sopraneoUkuleleGcea.js file ?

    • Yeah, If running UGS on your own site you can replace that definitions file. A few folks have come up with “user defined dictionaries” to augment or replace that basic one. But using the editor (such as the one hosted on UkeGeeks) you’re stuck with what’s already been defined or adding your own {define: ...} tags.

Leave a Reply

Your email address will not be published. Required fields are marked *