dur — duration (time-span) representation


The dur representation can be used to encode a sequence of time-spans or successive durations. Units may be seconds, minutes, hours, days, months, and/or years.

In the dur representation, duration information is encoded according to the following basic syntax:


Duration information may be encoded in full, or may consist of isolated elements or parts. The following table shows the most succinct ways of encoding single duration values within dur:

.11 11 one-hundredths of a second 11 11 seconds 11: 11 minutes 11:: 11 hours 11/ 11 years /11 11 months //11 11 days ——– ——————————-

Examples of dur components

Notice that if a single numerical value appears, it is interpreted as seconds. For example, the data token ` 32` represents a duration of 32 seconds. If a single value appears followed by a slash, it is interpreted as the number of years; if a single value appears followed by a colon, it is interpreted as the number of minutes. Days and hours require two leading or two trailing delimiters respectively. In general, abbreviated forms of dur representations tend to favor the two extremes of durations: in seconds and in years.

The data token ` 1:15:10 represents a duration of one hour fifteen minutes and 10 seconds. It is also possible to encode such durations in seconds alone as in the equivalent — 4510. If only a single colon is encountered, it is presumed to delineate minutes and seconds as in 5:33` (five minutes and 33 seconds).

The data token ` 53/ means an elapsed duration of 53 years, whereas /9// means a duration of 9 months. The data token //730/` means 730 days.

The dur representation provides a means for representing approximate durations. It also provides a means for representing uncertainty, as well as mechanisms for representing time boundaries (prior to ...; after ...).

If a duration token is preceded by the tilde (~) signifier, the entire data token is taken to be approximate. Hence, the token ` ~1/ signifies a duration of about 1 year and the token ~3` means a duration of about 3 seconds.

If a duration token is preceded by the question mark (?), the duration is taken to be uncertain. Hence, the token ` ?3:` signifies a duration of perhaps 3 minutes.

The dur representation does not support the `x' and `z' signifies used by related representations such as date and Zeit. However, dur is able to represent shorter-than (<) and longer-than (>) indications. For example, the data token ` <1:` means a duration of less than one minute.

Barlines are represented using the "common system" for barlines — see barlines.


It is recommended that files containing predominantly dur data should be given names with the distinguishing `.dur' extension.


The following table summarizes the dur mappings of signifiers and signifieds.

0-9 decimal values
/ years-months, months-days and days-hours delimiter
hours-minutes and minutes-seconds delimiter . fractional second delimiter; null token ? duration uncertain ~ duration approximate < duration shorter than > duration longer than = barlines == double barline —– —————————————————-

Summary of dur Signifiers


A sample document is given below:


!! Gustav Holst **dur *M5/4 =1 .3 .3 .3 1 1. 0.5 0.5 1.0 =2 *- —————–


The following Humdrum command produces dur data as output:


change canonical durations (**recip) to elapsed time in seconds


The following tandem interpretations can be used in conjunction with dur:

MIDI channel *Ch1 meter signatures *M6/8 tempo *MM96.3 timebase *tb32 —————— ———–

Tandem interpretations for dur


` barlines, **date, **metpos, **ordo, **recip, **takt, **time, **Zeit`