Song Text Format definition

History

Kind of definition of a 'Song Text Format' was invented originally by the author of KaraDos: Jean-Pierre Cocatrix. He calls it a TXK ('TeXt Karaoke'?) format. With KaraDos, the lyrics contained in TXK files can be displayed on the screen synchroneously with the music (with a MID channel as a text synchro parameter). The following is (more or less) a quotation from the 'KARA.EN' file accompanying the (now obsolete) KaraDos product:
Text lines are as you want to see them on the screen apart from a syllable
separator. Valid separators are: blank  -  ,  ;  . The '-' separator is not
displayed. For example the line 'I be-come la-zy' is displayed as 'I become
lazy' but is 'karaoked' as 'I be come la zy'. It's more easy to understand
than to explain.
In conclusion: TXK files are not defined very precisely. This does no harm as long as there is only one product making use of these files (and only one person or company producing them). But Midi Karaoke is now spreading rapidly all over the Midi place. And the need for Karaoke-editor programs was uttered several times in the alt.binaries.sounds.midi newsgroup (where is it nowadays?).

Edwin van Veldhoven and/or Han de Bruijn (myself) have produced several KARaoke files, such as 'Meteoor (Something Strange)', 'Die blik in je ogen (That Look in Your Eyes)' and 'Eurydice'. This work was accomplished with help of clumsy programming and work-arounds. In October 1995, it was decided to tackle the problem more seriously.
That is: to develop a 'Midi + Text -> Karaoke' conversion program
But we did such rather independently of each other. And the inevitable happened: our Song Texts turned out to be mutually incompatible. Hence we concluded that a somewhat more accurate definition of what is called a 'Song Text Format' (STF) would be desirable. Here comes what we considered as our best shot at that time.

Description

Song Text Format (.STF) files are ordinary ASCII files.
STF files consist of two different parts:

Header material

A STF file starts immediately with the Header material, without leaving any empty lines at the top, or in between. Or it starts with one or more empty lines, followed by the Bulk material.

With my 'MIDIDOOS', the Header material simply consists of the following:

containing the title and authors of the song. You can have up to three of these. An example with 2 title lines is given here:
Silent Night
Words and Music by Joseph Mohr & Franz Gruber
Note:
With Edwin van Veldhoven's 'KARAKAN', the Header material consists of

Bulk material

The Bulk material contains the Lyrics of the song themselves. It is separated from the header material by: one or more empty lines. Empty lines are lines consisting of nothing else but a <carriage return> <newline> (DOS) or <newline> (UNIX), optionally preceded or followed by blanks.

Within the bulk material, empty lines also mark the boundaries between 'verses'. (A new verse corresponds with a '\' character in the Karaoke file.) A new verse is visualized by a clear screen, two empty lines, or one empty line: it all heavily depends upon the Karaoke Player used.

There will be NO pure syntax checking on the contents of the bulk part. Certain symbols have a special meaning, however, as was suggested already by Cocatrix. In the first place, the notion of a separator, between syllables, is important. Now I think it is desirable to stay as close as possible to conventional music practice (: sol-fa). I've checked out several song-books - as they are used in church, for example - and it is conjectured that there will be little dispute about the validity of the following separators (between syllables).

  Name         typed as     ASCII      displayed
  -----------------------------------------------
- NewLine        ''        (13) 10        yes

- Blank          ' '         32           yes

- Tab            ' '          9      yes, as a blank

- Hyphen         '-'         45           no

- Underscore     '_'         95           no
Separators serve as marks for synchronization with the music. To be more precise: (the beginning or the end of) a separator (depending on the player) corresponds with a Note-ON event in the MIDi file. As follows:
        separator syllable separator syllable separator syllable ...
Note ON ---------^------------------^------------------^--------
Whereby it is assumed that people can sing only one note at a time: no chords. (Note that this is in fact a serious limitation!)

Any separator, except a NewLine, can be 'escaped'. The backslash symbol '\' is reserved for this purpose. A separator which is preceded by a backslash is NOT a separator anymore; it must be considered as part of a syllable (which is the stuff between two separators). Definition:

  Name         typed as     ASCII      displayed
  -----------------------------------------------
- Escape         '\'         92           no
Blanks deserve some special attention. What about a series of blanks, a blank preceding a newline or a blank following a newline? The following arrangement about blanks is proposed (where it is assumed that they are not '\' escaped): Thus the Song Text
   Ad-di-ti-o-nal blanks  are   ig-nored  
will be found to be to be entirely equivalent to
Ad-di-ti-o-nal blanks are ig-nored
If you insist on displaying additional blanks, escapes must be used:
Ad-di-ti-o-nal blanks are NOT \ \ ig-nored here\ ...
This sentence is karaoked as:
'Ad','di','ti','o','nal ','blanks ','are ','NOT ','   ig','nored ','here ...'
Though blanks may serve as separators, they nevertheless are always displayed on the computer screen. Such is contrary with the hyphen and underscore signs, which, as a default, are NOT displayed. Here is where the Escape character '\' comes in again. With help of it, hyphens and underscores can yet be displayed, but only as as part of a syllable. The escape sign itself is never displayed.

Take the sentence: 'I've checked out several song-books - as they are used in church - and I've learned how lyrics are used in practice'. This text might be translated in STF language (apart from any newlines) as follows: 'I've checked out se-ve-ral song\--books \-\ as they are used in church \-\ and I've learned how ly-rics are used in prac-tise'.

It often occurs that More than One note is associated with just one syllable. Extensive examples of this are found in the Latin music of the catholic church. Looking up the lyrics, one finds that they are printed as follows:

        De _ o  _   _   _   gra _ ti _ as
This brings up the idea of an empty syllable. It's basically simple: everything between two separators is a syllable, even if it's ... just nothing! Let's make use of such empty syllables, for making the above example more computer minded:
        De____o_________________ gra_ti_as
It is remarked that Proper Counting of everything between two '_' is necessary, in order to stay in tempo with the music. The above example shows that such is not always simple. It would be of great help if empty syllables, yet, could be visible, let it be in the STF file alone! This can be made possible, if only people are willing to agree upon the following convention: cipher's may be included in Song Texts as syllables, but they will never be displayed on a PC screen. Definition:
  Name         typed as       ASCII      displayed
  -------------------------------------------------
- Cipher       '0' - '9'     48 - 57        no
Let's try on the above example:
      De_2_3_4_o_2_3_4_5_1_2_3_4_5_6_7_1_2_3_4_5_6 gra_ti_as
Which is, indeed, much less sensitive to error making than the preceding one.

Let 'Silent Night' serve as a well known application of the above theory.
It's not so difficult after all !!