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 |