If you want to write lesson files, my advise is to look at
some of the files in lesson-files/
and use this
document and music format
spec for reference.
header { ASSIGNMENT ASSIGNMENT ... } question { ASSIGNMENT ... }
Definitions to put in the header block:
content = LIST
content = chord, id-by-name
musicformat = FORMAT
\staff{ < MUSIC CODE > }or
\staff\transpose NOTENAME{ < MUSIC CODE > }
musicformat = chord
is necessary if lesson files
written for the chord exercise should be used by for example the
id-by-name exercise."c | bes g | e | G C"
will be interpreted as:
\staff{ \stemUp <c> } \addvoice{ \stemDown <bes g> } \staff{\clef bass; \stemUp <e>} \addvoice{ \stemDown <G C>}This is used by the sing-chord exercise.
random_transpose = yes | no
labelformat = normal | progression
filldir = horiz | vertic
fillnum = INTEGER
filldir
tell the direction the buttons are filled,
and fillnum
tell how many buttons there are in
each row or column.name = "some short name"
music = "\staff{c'2 g' e4 e c1}"
question { tempo = 160/4 name = "Lisa gikk til skolen" music = "\staff\relative c'{c d e f g2 g2}" }you can write:
question { tempo = 160/4 name = "Lisa gikk til skolen" "\staff\relative c'{c d e f g2 g2}" }
tempo
= 130/4In lesson files that is written to work with chord
exercise,
two more variables can used:
inversion
toptone
By default, the dictation exercise will show the first column of music, and then the user should write the rest. But if the first column is not good enough, if there for example are only rests on the first beat, these two variables can tell the program how much music to display:
clue_end = nn/dd
clue_end=1/4
will display all music in the first
quarter note.clue_music = MUSIC
key
variable set if the key signature is anything else than
c major (or a minor). Example:
question { "c''|e'|g|c" } question { "a'|e'|c'|a" } question { key="d \major" "a'|fis'|d'|d"} question { key="f \minor" "as'|f'|c'|f"}
s = "\score\relative c'{ %s } question { # instead of music = "\score\relative c'{ c d e f g2 g2 } : music = s % "c d e f g2 g" }The global variable tempo will be the default tempo for the questions following the definition. If not set, the default value is 120 beats per minute. That equals the definition
tempo = 60/4
Everything after # on a line is ignored
Disclaimer: I don't know any of the standard ways of describing grammar, like BNF. So this is just an attemt to describe the file format to get people started writing lesson files.
Lessonfiles consists of assignment statements and blocks containing assignment statements.
description = _("This is a short description")
string
description = "<h1>Long desription</h1> This lessonfile need very much descriptions. bla bla bla"
integer
tempotype
(in lack of a better name)bpm/beatlen
. An example:
tempo = 120/4will set the tempo to 120 beats per minute, each beat being a quarter note.
+
%
%s
. Examples:
"\staff\relative c'{%s}" % "c d e"evaluates to
"\staff\relative c'{c d e}"
chord, dictation, id-by-name, sing-chord
horiz, vertic
normal, progression
yes, no
header
and question
blocktype { CONTENTS }
Copyright (C) 2000 Tom Cato Amundsen. This file may be distributed under the terms of the GNU General Public License version 2 or (at your option) any later version.