Note conversion


Examples 1

Examples 2



SolFaSoGood can take a music score, saved in Music XML format, and output a Sol-Fa version as a web page.

Many score-creating programs are able to export suitable Music XML files.

A wide range of alternatives for the output format are possible, controlled by parameters.
You can also use alternative HTML CSS files to achieve almost any format you want.

It currently only runs in Linux.

N.B. The program, and this documentatiom, are still under development.

In order to take advantage of all of its options, it may be necessary for you to understand some aspects of Music XML files and how the program interprets them.
On these pages you will find (hopefully) appropriate guidance.

The "Note Conversion" tab, above, takes you to an explanation of how notes on a score are converted to sol-fa notes.
The "Timing" tab shows a page dealing with 'time signatures' (4:4 etc.) and how the notes are split up on the output.
'Examples 1' shows what various options available can produce.
'Examples 2' contains links to several completed conversions.
Then we have 'FAQ' (Frequently Asked Questions) and an Index.

While I'm developing it, I'm open to people sending me Music XML files to try it out on.
If the results look reasonable, I'll send them back.
I'll have to limit this offer to a small number of files.
My eMail address is at the bottom of this page.

Options for lyrics

Firstly, you can add lyrics when you create the score.
These will be included in the sol-fa output, as close to the linked note as possible.
See amongst the
examples for an idea of its appearance.

Secondly, you can include a lyrics file by naming it as the second parameter.

Then you can choose how to split up the verses using the V parameter.

You can also provide alternative titles by including specific lines in this file.

The Nxx parameter then allows for numbering the verses.

The Lyrics file

This is a text file where you can add the lyrics.
See the parameters detail, below, for how to tell the program where it is.

Line breaks will be used, as in the file.
Blank lines will be taken as gaps between the verses.

These values, which are normally taken from the XML file can be over-ridden by lines at the start of the lyrics file:

 <work-title>Replacement for main title</work-title>
 <lyric-title>Title to apply to the lyrics</lyric-title>
 <lyricist>Who to credit for the lyrics</lyricist>

Allows for

Keeps appearance the same when browser view size is changed.
Bar end marker styles - taken from the XML file.
'Repeats', although only via the HTML symbols and

Currently doesn't allow for

Change of key or meter.
More than a single augmentation dot.
Chromatic alteration other than flats and sharps.
New line part way through a bar.
Limiting the voices over a few unison bars.

Changing the appearance of the output

There are quite a few ways of changing how the output looks:

Several of the parameters can be set, to alter:
The number of bars to display on each line.
Displaying the 'voice' names or not.
The type of braces (curly brackets).
Adding a page number.
Alternative style-sheets:
These will (hopefully) be made available in due course to offer a variety of options.
Editing the HTML output file:
Changing the look of any lyrics is the simplest change here -
There is a <style> section, near the top of the file, which controls their appearance.
Simply remove the /* and the */ on the appropriate line(s).
If you understand HTML, then there's all sorts of things you can do -
The program will have added comments to the file to help you find specific notes, etc.
Not forgetting that you can easily re-run SolFaSoGood to over-write the file if you mess up completely.

Width parameter

Use this to get all the sol-fa lines aligned.

This is mostly useful for preparing the output web page for printing or saving as a PDF file.

You will probably need to try various width values until you are happy with the result.

Note that this parameter will mean that, as you display the web page at different widths of a viewer's screen, then the appearance will greatly vary. For one thing, you may find that 'notes' and lyrics split onto a second line and don't fit where they're supposed to be.

Bar end lines, colons and repeats:

Bar end lines.

These are taken from the input file.


These are inserted, depending on the time-signature.
If the output is not what you want, then the Split parameter will double-up their number.
See the page on
Timing for a list of the time signatures allowed for.


Again, the location of these is taken from the input file.
For the time being, the only way these are shown is via the HTML symbols and .

Parts and Voices:

Music XML files vary considerably, even those output by the same score-writing program.

They begin with numerous header lines from which SolFaSoGood extracts the title, composer, etc.

Following these are one or more 'parts'.

Within each 'part' are the entries for each bar (or 'measure').

Within each 'measure' are entries for notes, containing details of the note (labelled 'set'), duration, voice, etc.

You may need to select specific 'parts' of the file using the Pnn parameter (see below) in order to exclude 'voices' which you don't want.
Running the program with the D1 diagnostic parameter will provide a list of 'parts' and 'voices' to aid with this.

Special HTML character codes

The output HTML file may contain special character codes which are not supported by current browsers.
These character codes will appear to be OK when viewed on your computer but will not work on the web.

You have three options if you are warned about this:

  1. If your output file will never be loaded up as a web page, then rerun with parameter NC to switch off all conversions.
  2. You can view the file in your browser and then save it as a PDF file. Then you can upload that to the web instead.
  3. You can leave it with any conversions which the program did manage and then consider what to do about those warned about (and highlighted on the output).
    It's possible that these now have codes which were not around when I wrote this. If so, you can edit the file SolFaSoGood.Conversions,txt (see the next box).

If the conversions file is not in the current directory when you run the program, then no conversions will take place.

The HTML code conversions file.

This file (SolFaSoGood.Conversions,txt) needs to be present in the current directory when you run the program, for conversions to take place.

If you have problems, the first thing to try is to see if there is a new-imporved version available here.

If you want to edit this file, please be careful to only use one tab (and no spaces) between each field.
The second field is not actually used for conversions but is part of the usual way you will find codes listed on the web, thus making it easier to cut-and-paste from somewhere listing such codes.

For characters with no web equivalent, the second field can be set to:

'Bold' to just make the character easier to spot.
'Replace' just replaces it with a more displayable character.
'Caps' to just display the 'to' character larger (eg. a capital Y with a circumflex is displayed as a larger lower-case version (Ÿ).
'Acute', 'Grave', 'Umlaut' or 'Circumflex' to use the replacement but with one of these after it.

Tested on files from

versions 2.1.0 and 3.2.3.
version 25 for Mac
Not supported - sorry, but it outputs rather weird XML files.

Output tested on the following web browsers

Mozilla Firefox
version 79.0 for Linux.
version 7.0 for Linux.
Gnome Web (Epiphany)
version 3.36.2 for Linux.


Run-time messages from the program:

To be completed.....

Please let me know which of the mistakes you found in the above.

Web site main menu

This page last updated 9th. August 2020.
Images and text © Copyright Jim Batten, 2020.

Send corrections, comments, enquiries, etc. to Jim Batten