COMMAND

hint -- determine harmonic intervals between concurrent pitches for Humdrum inputs


SYNOPSIS

hint [-a|-l|-v] [-cdu] [-s regexp] [inputfile ...] [> outputfile.hnt]


DESCRIPTION

The hint command outputs the harmonic interval distances between simultaneous notated pitches. Output pitch intervals are expressed as a combination of diatonic interval size and interval quality (such as a `perfect fifth' or `minor ninth'). Standard musical abbreviations are used (e.g., m2 - minor second; P4 - perfect fourth; A6 - augmented sixth; dd7 - doubly diminished seventh). By way of illustration, hint will change the **pitch diad C4-E4 (or E4-C4) -- to the interval token M3.

The hint command determines harmonic intervals for pitch tokens spanning all pitch-related spines in an input record; this includes multiple-stops within spines. In the default operation, a single output interpretation (**hint) is generated for any given input. All pitches in a given sonority (sounding moment) are first sorted in ascending pitch order. If the -u option is selected, duplicate pitches (unisons) are treated as a single pitch-instance when calculating the intervening intervals. Intervals are then calculated between successive pairs of pitches -- ordered from low to high. A single data token is output -- representing all intervals in a given sonority. If more than one interval is present, the interval tokens are assembled as Humdrum multiple-stops within the output data token.

Input records containing no pitch tokens result in the outputting of a null token (.). Input records containing only rests result in the outputting of a rest token (r). Input records containing only a single pitch result in the outputting of a hyphen (-). Input records containing only a single duplicated pitch result in the outputting of the interval (P1) -- unless the -u option is selected, in which case the a hyphen is output (-).

The hint command recognizes and echoes "common-system" barlines (see barlines (2)). It is also able to handle multiple-stops.

By defining regular expression patterns, the user may select which data records should be ignored by hint. (See EXAMPLES below.)

Note that the output spine generated by hint preserves the same record-type structure as the input, and so may readily be pasted with the input file using the Humdrum assemble command.

The hint command is able to accept any of the pitch-related representations listed below. For descriptions of the various input representations refer to Section 2 (Representation Reference) of this reference manual.

It is recommended that output files produced using the hint command should be given names with the distinguishing `.hnt' extension.

**kerncore absolute pitch representation
**TonhGerman pitch system
**pitchAmerican National Standards Institute pitch notation (e.g. "A#4")
**solfgFrench solfège system (fixed `doh')
Input representations processed by hint.

OPTIONS

The hint command provides the following options:
-acalculate all intervals by permuting all pitches present
-coutput compound intervals as non-compound intervals
-doutput diatonic interval size only, without the interval quality
-hdisplays a help screen summarizing the command syntax
-lcalculate intervals with respect to the lowest pitch present
-s regexpskip; completely ignore records matching regexp;
(output null token)
-ueliminate unisons from the output
The -a and -l options are mutually exclusive.

Options are specified in the command line.

The -a option causes all permuted intervals within a sonority to be output rather than only those intervals between successive pitch-ordered pitches. Hence, the sonority (E4 G4 C5) will produce the output m3 m6 P4 rather than m3 P4. A tandem interpretation (*all) is added to the output in order to indicate that the interval content is exhaustive. Note that the order of the intervals in the output token no longer has any significance when the -a option is invoked.

The -c option causes all compound intervals to be output as non-compound equivalents. Compound intervals are defined as those intervals greater than or equal to an octave in size. Hence, a major tenth interval will be output as a major third, and an octave will be output as a perfect unison.

The -d option causes only the diatonic interval size to be output. In this case, the interval quality signifiers (AdmMP) will be suppressed. For example, with the -d option, the output token `3' signifies any interval of a third, including major, minor, diminished, etc.

The -l option causes hint to calculate all intervals with respect to the lowest notated pitch present. Hence, the input sonority (G4 E4 C4) will produce the output M3 P5 rather than M3 m3.

The -s option allows the user to define a regular expression, that if matched, causes a null token to be output for the given record.

The -u option eliminates duplicate pitches in interval calculations. For example, rather than outputting P1 M3 P1 for the sonority (C4 C4 E4 E4), the -u option will result in the output M3. In the case of a sonority consisting of a repeated single pitch, the -u option will cause a hyphen (-) to be output.


EXAMPLES

The various aspects of the hint command are illustrated in the following examples. Consider the following input:
**kern**kern**pitch**commentary
=1=1=1barline
8c8eG4C major triad
8g8cE4reordered pitches
4r4rrrest
...null tokens
4C4eG5open position triad
=2=2=2barline
4C 4E4G 4cC5multiple-stops
4CC 4r4e 4grmixed notes & rest
8C8C.unison
8C8r.single pitch
=3=3=3barline
*-*-*-*-
Using the default invocation, the hint command transforms the above input as follows:
**hint
=1
M3 m3
M3 m3
.
M10 m10
=2
M3 m3 P4 P8
M17 m3
P1
-
=3
*-
The hint command correctly echoes (and ignores) both rests and kern-like barlines -- as illustrated in the first and fourth output data records. The second output data record (M3 m3) indicates that two intervals are present: the first interval is a major third above the lowest pitch, and the second interval is a minor third above the other pitch. The third data record shows that rearranging the order of the input pitches has no effect on the output.

Notice that the null-token in the sixth record has been echoed. Null-tokens have no effect on interval calculations and are treated as though they are non-existent. Multiple-stops are treated the same as if each pitch was in a separate spine (eighth data record), and rests within a sonority containing pitches are ignored (ninth data record). The perfect unison signifier (P1) is output only if more than one pitch is present (tenth data record). If a single pitch is present in the input, a hyphen is output rather than the P1 token (eleventh data record).

The -d option causes only the diatonic interval sizes to be output as follows:

**hint
=1
3 3
3 3
.
10 10
=2
3 3 4 8
17 3
1
-
=3
*-
The -s (skip) option can be used to allow the user to selectively identify records that should not be involved in processing. Consider the command
hint -s r input > output.hnt
will cause any data token containing the letter `r' to suspend the calculation of any harmonic intervals for the current record. The corresponding **hint output for data records matching the pattern will consist simply of a null token. Given the sample input, intervals will be calculated only when none of the pitch-related spines contain a rest.

Given the first three spines of the above sample input (i.e. without the **commentary spine), the command

hint -cu -s r input > output

will produce the following output:

**hint
=1
M3 m3
M3 m3
.
M3 m3
=2
M3 m3 P4
.
-
-
=3
*-
Notice that the major and minor tenths in the sixth data record have been rendered as major and minor thirds. Also note that the perfect unison in the tenth data record has been output as a hyphen -- and that the P1 formerly present in the eighth data record has disappeared. The presence of the rest in the original ninth data record has caused the outputting of a simple null token.

The -l option causes hint to calculate intervals with respect to the lowest pitch present in the sonority. For example, with the above sample input, the -l option would produce the following output:

**hint
*
=1
M3 P5
M3 P5
.
M10 P19
=2
M3 P5 P8 P15
M17 P19
P1
-
=3
*-
The -a option calculates all possible intervals by pairing all pitches present in a given sonority. The order of the output intervals conforms to the following standard: all pitches are sorted from low to high; intervals are determined as 1-2, 1-3, 1-4, etc., 2-3, 2-4, etc. By way of example, the following input:
**kern**kern
4C 4E 4G4c 4c 4r
*-*-
would produce the following output:
**hint
*all
M3 P5 P8 P8 m3 m6 m6 P4 P4 P1
*-

PORTABILITY

DOS 2.0 and up, with the MKS Toolkit. OS/2 with the MKS Toolkit. UNIX systems supporting the Korn shell or Bourne shell command interpreters, and revised awk (1985).


SEE ALSO

**deg (2), **degree (2), **hint (2),
humsed (4), **kern (2), **mint (2), mint (4), recode (4), regexp (6), **semits (2), semits (4), solfg (2), **Tonh (2), xdelta (4), ydelta (4)