SolFaSoGood

Introduction

Note conversion

Timing

Examples 1

Examples 2

FAQ

Index

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

Click on the "Introduction" tab, above, for further information.

Sol-Fa note conversion

This page describes how the program works out the sol-fa notes, but it can also provide help for anyone doing their own conversions.

How sol-fa conversion works:

A sol-fa conversion table:

Hovering your mouse over parts of the table should help.

Stave Note in
score
  Note number     Sol-Fa index   Sol-fa
note
   Octave 5 Fifths 'value' Key effect Major key Minor key Stave marks
D 4316 r11

C
4215 d11
B 4114 t1   Octave 4

A
4013 l1
G 3912 s1
𝄞
F
3811 f1
E 3710 m1

D
369 r1
C 358 d1

B
347 t
  Octave 3 5
-7
-6 B
C ♭
g ♯
a ♭

A 336 l 3 -5 A f ♮

G
325 s
1 -4 G e
F 314 f 6 -3 F ♯ d ♯

E
303
4 -2 E c ♯
D 292 r 2 -1 D b

C
281 d
0 0 C a blank
or
B 270 t1   Octave 2 -5
7
-1 D ♭
C ♯
b ♭
a ♯

𝄢
A
26-1 l1
-3 -2 E ♭ c
G 25-2 s1 -1 -3 F d

F
24-3 f1
-6 -4 G ♭ e ♭
E 23-4 m1 -4 -5 A ♭ f

D
22-5 r1
-2 -6 B ♭ g
C 21-6 d1

B
20-7 t2
  Octave 1
A 19-8 l2

G
18-9 s2
F 17-10 f2

E
16-11 m2

The XML file and Notes.

Firstly, the files contain entries for each 'voice', for example:

  <sign>G</sign>
  <fifths>1</fifths>

The 'sign' tells which clef the voice is in - 'G' for treble, 'F' for bass, 'C' for alto (not handled yet).
This tells us which octave number to base the voice in, for example a voice in the treble clef will be based in octave 3.

The 'fifths' is a numerical value:
 0 represents the basic key of C.
 positive numbers are for sharps, eg. 3 for
 negative numbers are for flats, eg. -2 for

Fifths are usually represented by a 'circle of fifths' but I have shown their effects on the right of the table alongside.
If you consider this, you may wonder at the thinking processes of whoever thought the whole idea up!

The files then contain entries for each note with, for example:

  <step>E</step>
  <alter>-1</alter>
  <accidental>sharp</accidental>
  <octave>4</octave>
  <voice>1</voice>

The 'step' is the letter for the note, from the score (A to G).

The 'alter' represents chromatic alteration in number of semitones (e.g., -1 for flat, 1 for sharp).
There are other values possible which are not catered for yet.

The 'accidental' does the same thing, but names the sharps or flats.

The 'octave' is represented by the numbers 0 to 9, where 3 is the octave started by middle C (see the table on the right).

The overall calculation of a sol-fa representation of a note is as follows:

with an example worked out -
  Key of E,
  'Voice' 4 (bass),
  'Step' (note in score) of "B",
  Octave number 2.

An 'initial sol-fa index' is calculated from the 'step' value, as follows -
  'C' is 1, 'D' is 2, 'E' is 3, 'F' is 4, 'G' is 5, then 'A' is 6 and 'B' is 7.

  For a step of 'B', the 'initial sol-fa index' is 7.

A 'Doh index value' (the base note number) is set to 28 (middle C) for soprano or alto or 21 for tenor or bass.

  For voice 4 (bass), the 'Doh index value' is set to 21 (C in the bass clef).

Now we take the octave number, for this note, and multiply it by seven to give an 'Octave Index Effect'.

  For octave number 2, the 'Octave Index Effect' is 14.

The 'Key Effect' is taken from the table.

  For a key of E, the 'Key Effect' is -2.

Now we combine these values to obtain a 'Sol-Fa Index' -

  7 from the 'initial sol-fa index' (for step B),
  + 14 from the 'Octave Index Effect' (that's 21),
  - 2 from the 'Key Effect' (that's now 19),
  - 21 from the 'Doh index value'.
  giving a final value (a 'Sol-Fa Index') of -2.

We now look up the 'Sol-Fa Index' in the table -

  a 'Sol-Fa Index' of -2 gives a result of "s 1".

Any 'accidental' value is added -
  on sol-fa a flat is marked with 'a' and a sharp with 'e'.

The fiddle factor.

If in the (highly-unlikely) case that the program gets the sol-fa conversions wrong, then (before telling me about it) you can apply the 'fiddle factor' to adjust the conversion up or down.

Have a look at the table on the right and count how many notes up or down the program is outputting compared to the one it should be.
Then, for example, the parameter FD2 will change the conversions by two steps down.
The parameter FU3 will change it by three up.

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

Web site main menu

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

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