## Help files

The online documentation is written in DocBook XML and is converted to html by xsltproc. The documentation is written to be viewed from inside Solfege but it can of course be viewed in a web browser. What make the generated html-files different from regular html is that in addition to links to other help files, you can write links that will start and configure an exercise if you click on it, like this one.

Feel free to ask any questions if you want to write some documentation for Solfege.

### The special `solfege:` links

`protocol:action/exercise/lessoncollection/lessonfile?configuration`

`protocol`

  Optional, if omitted, the links if to a html file. One possible value: `solfege`.

`action`

  Optional, possible values: `practise`, `config` or `statistics`. If omitted, you will view the same part of the exercise you used last time. If the exercise has not been used in this session, you will see the practise page.

`exercise`

  Possible values: `chord, harmonic-interval, melodic-interval, sing-interval, identify-scale, dictation, id-by-name, twelve-tone, sing-chord, id-tone, compare-intervals, rhythm`

`lessoncollection`

  Use the value `solfege` for files distributed with Solfege. Use `user` for your own files stored in `$HOME/lessonfiles`. (Optional, only used with lesson file based exercises.)

`lessonfile`

  File name. (Optional, only used with lesson file based exercises.)

`configuration`

  Optional. Semicolon-separated list of assignments. Example:

      highest_instrument=80; intervals=[1, 2, 3, 4]

### Listing of variables used for configuration

Theses two can be used with all exercises that has the New question automatically option on the config page.

`new_question_automatically = true | false`

  Should the user be asked a new question automatically when the current one is answered correctly?

`seconds_before_question = float`

  Set the number of seconds of delay before a new question is asked automatically.

#### Chord

`highest_instrument`, `middle_instrument`, `lowest_instrument`,

  integer 0-127

`highest_instrument_velocity`, `middle_instrument_velocity`, `lowest_instrument_velocity`,

  integer 0-127

#### Harmonic interval

`highest_instrument`, `lowest_instrument`,

  integer 0-127

`highest_instrument_velocity`, `lowest_instrument_velocity`,

  integer 0-127

`override_default_instrument`

  boolean

`intervals`

  list of integers, [1, 2, ... 15, 16]

`highest_tone`, `lowest_tone`,

  Notename, for example `c`, `fis,` or `d''`

`new_question_automatically`

  boolean

`seconds_before_new_question`

  float

#### Harmonic interval and melodic interval

`disable_unused_intervals`

  If you use the buttons interface to identify intervals, use this variable to make buttons insensitive that represent intervals the program will not ask for. This variable is a `boolean`.

#### Melodic interval and sing interval

`number_of_intervals`

  integer

`ask_for_intervals_nn`

  list of integers: [-16

#### Identify scale

`scales`

  list of scale types: ['ionian', 'dorian', 'phrygian', 'lydian', 'mixolydian', 'aeolian', 'lokrisk', 'harmonic_minor', 'melodic_minor']

#### Id by name, dictation, harmonic progression dictation

Only specifying lesson file.

#### Id tone

`c_weight`

  0..1000

`one_chance_only`

  boolean

`warning_sound`

  boolean

`repeat_question`

  boolean