Eric Foxley's Music Database
Music storage in ASCII

Music database home
The tunes
The PDF pages
[The scores]
[Browse the tunes]
[Find similar tunes]
[The statistics]
[The database]
Storing music
Music analysis

Options in [] I'm working on.


When research into music stylistics was starting in the 1960s, all data was stored in ASCII, mostly in unfriendly (but comprehensive) systems such as DARMS.

We developed a user friendly system specifically aimed at the storage and analysis of traditional music.

It later became easy to enhance the language so that it became a representation for music printing, not just analysis. The implementation as a roff preprocessor was then straightforward, so that the same files can be used for the printing and analysis of the music. Most modern PC music programs store music scores in a form which is not amenable to analysis of any sort.

Typical example A typical score appears as in the example for Davy Davy Knick Knack (a super tune which no-one should underestimate, capable of endless variation):

The ASCII version uses a header to define the key, time signature etc., and a body to define the notes and print formatting if required. The full system manual is available in PDF format. A quick summary of the ASCII is as follows.

The body of the file:

  • | separates bars, :| for repeat, || for double barline
  • f, g, a, b, c, d, e are the appropriate notes of default length within the stave
  • f^ means "f up an octave", fv "f down an octave", etc.
  • f> means "twice as long", f< "half default length", f. "50% longer", etc.
  • text in double quotes goes under the stave, single quotes goes above
  • \10 means insert a copy of bar 10
  • \endstave. Causes the printing to move to the next stave
  • # to end of line is comment
The header (items separated by semicolon, ended by full stop):
  • "title = ..." gives the title, appears top left
  • "rtitle = ..." is "right title", we use it to denote the source
  • "ctitle = ..." is "centre title", we use it for repeat information
  • "timesig = 6 8;" sets the default note length to 6 notes per bar, default bar length to 6 / 8 of a full note
  • "key = g;" makes "f" default to "f sharp", printed signatures to 1 sharp
  • "key = g<;" as well as setting the key, makes default note length half of what "timesig" determines
  • "autobeam;" puts beams in automatically (official rules forbid beaming across quarter bars in 4/4, etc.)
  • "autobeam = 2;" puts beams in automatically across twice default length
  • "octave = s;" sets the default octave (no need for "^" or "v") to the stave interior
  • "octave = c;" sets it to start at middle "c" (default)
  • "keyout = d;" causes it to be printed in the key of "d"
  • "chords;" causes text under (in double quotes) to be treated a chord names, and transposed if required on output
  • "bps = " is "bars per stave" for printing, no longer used
  • "bars =" gives a check on the total number of bars

The Nottingham Folk Music Database is stored in this form.

We should soon be able to play it too!


Eric's home page
E-mail Eric Foxley
Greenwood Clog Foresters Morris Freds Folks King Billy pub singing sessions
Site under recovery from an ancient version, latest update 12-Jan-2021