Automatically generate figured bass numbers.

The fb filter analyzes harmonies in **kern data and reduces them to figured bass like numbers. There are different modes of how the numbers can be displayed. This filter supports chords as well as spine splits. The reference note for the calculations is in each case the lowest pitch within the base track that can be passed with the --base option.

Here is a basic example:

If you do not pass any additional options fb will calculate the interval of the distance between the base voice (default is the first **kern spine) and each note that occurs in a single slice of music (which corresponds to one line of the file in humdrum).

Options

Compound intervals

By default, fb will display the exact distance between the target and base note as compound intervals. If you want to display the numbers 2-7 as non-compound intervals reduced with an octave you can use the -c option (--compound) to do so. This is similar to the -c option of the hint command in the Humdrum Toolkit. When -c is used in combination with -i, 1 is displayed for a unison.

When using the -c option the fb filter will try to replace the number 2 with the number 9 when appropriate. Currently, this feature is not very sophisticated.

Accidentals

By default, fb will not display any accidentals. Use the -a option (--accidentals) to display naturals, sharps and flats in front of the numbers.

The display of naturals, sharps and flats depends on the current key signature:

You can hide the number 3 with the option -3 (--hide-three) if the display is not necessary because of an existing accidental.

Negative intervals

By default fb will ignore intervals if they are below the pitch of the base track. You can change this behavior by adding an option -m (--negative). This is especially interesting in combination with the option -i, for example in renaissance music, when there is a voice exchange.

Lowest pitch as base

With the -l option (--lowest) you can let fb find the lowest pitch of each slice and use this note as base for all number calculations. This option ignores the base track passed with -b.

Base track

By default fb will use the first **kern spine as base track. But you can change this behavior by using the -b option (--base). Valid values are numbers of the desired base **kern spine (compare to -k). This is especially useful in combination with -i -m.

Selective analysis

In addition to calculating the numbers of all **kern spines in a file, the fb filter can select a subset of the music to be analyzed. Spines can be selected either by using -s to select the nth spine in the file, or with -k to select the nth **kern spine in the file.

Selecting spines with -s

Example Meaning
-s 1 Analyze only the first (leftmost) spine in the input data.
-s 1,4 Analyze the first and fourth spine.
-s 2-4 Analyze the second, third and fourth spines.
-s $ Analyze the last spine.
-s 3,$ Analyze the third and last spines.
-s 1-4,6,9-$ Analyze the first, second, third, fourth, sixth, and ninth through last spines.
-s $1 Analyze the penultimate spine.
-s $2-$ analyze from two spines before the end to the last spine.

Selecting spines with -k

Example Meaning
-k 1 Analyze only the first (leftmost) kern spine in the input data.
-k 1,4 Analyze the first and fourth kern spine.
-k 2-4 Analyze the second, third and fourth kern spines.
-k $ Analyze the last kern spine.
-k 3,$ Analyze the third and last kern spines.
-k 1-4,6,9-$ Analyze the first, second, third, fourth, sixth, and ninth through last kern spines.
-k $1 Analyze the penultimate kern spine.
-k $2-$ analyze from two kern spines before the end to the last kern spine.

Place numbers above the staff

By default numbers will be displayed below the staff when shown in a musical score. You can add the --above option to show them above the staff.

This also works in combination with the -i option.

Intervallsatz

Especially with e.g. polyphonic renaissance music the Intervallsatz option -i (--intervallsatz) is the best way to display the numbers of each voice directly under it’s staff. This is a good way for students to get a fast overview over the intervals and check for possible dissonant or parallel intervals. Recommended options are in combination with -i -c -a -t -m.

When passing the -t option (--ties) in combination with -i, numbers without attack or changing base note can be hidden.

Control the rate of the numbers

By default fb will calculate number for every single slice (=line). You can control this by passing the option --rate with a rhythmical value for a note duration (compare with the exclusive interpretation **recip). With this option you can e.g. tell fb to only display numbers on every quarter note.

This option is particularly useful when the meter is ternary, e.g. six-eighths or nine-eighths.

Sort numbers

You can sort from small to large numbers (from bottom to top) with the -o option (--sort).

Normalize numbers

Normalizing figured base numbers with the -n option (--normalize) will automatically add -c -s. It will remove the number 8 and 1 if they don’t need to be displayed due to an accidental and remove any duplicate numbers.

Abbreviated number figures

With the -r option (--reduce) numbers for once slice will get abbreviated to match a reasonable and more or less typical figured bass numbering. This option will automatically add -n -c -s.

The current mapping is:

Numbers Abbreviation
3
5
5 3
6 3 6
5 4 4
7 5 3 7
7 3 7
7 5 7
6 5 3 6 5
6 4 3 4 3
6 4 2 4 2
9 5 3 9
9 5 9
9 3 9

If numbers for slice don’t match a mapping all numbers will be displayed as normalized numbers. Note that this mapping may change in future.

Interval quality

Similar to the hint command of the original Humdrum Toolkit, it is possible to display the intervals with their interval quality by using the --hint option. This option uses a **hint spine instead of **fb. For example, this option encodes a perfect fifth as P5 or a major sixth as M6. You probably want to use this option in combination with -c to display the intervals as non-compound intervals. Note that intervals are always calculated with the lowest note as base when --hint is enabled. Otherwise diminished and augmented intervals will be displayed incorrectly.

Unlike the hint command of the original Humdrum Toolkit, with this option null tokens in a harmonix interval will always contain the calculated intervals with their quality.

If you apply fb --hint -c to this input data:

you will get this output:

Aliases

For easy usage there are shortcuts for some option configurations.

Option Long name Shortcut for
-f -–figuredbass -acorn3