humdrumR includes a easy-to-use system for
generating a variety of rhythm (time duration) representations,
which can be flexibly modified by users.
"Under the hood" humdrumR represents all rhythmic duration information as rational numbers,
which is typically extracted from input data using the rhythm parser.
This rational representation can then be "deparsed" into a variety of predefined output formats (like **recip),
or into new formats that you create!
Details
Deparsing is the second step in the rhythm function processing pipeline:
Input representation
|>Parsing
|>Intermediate (rational) representation
|>
Deparsing (DEPARSING ARGS GO HERE)
|>
Output representation
Various rhythm representations like **recip, **dur, and **duration can be generated
using predefined rhythm functions like recip()
dur(), and duration() respectively.
All of these functions use a common deparsing framework.
This documentation talks about this deparsing step.
For an overview of the parsing process, look here.
Basic rhythm arguments
Different rhythms share a few standard arguments which control details of the output.
The most important is the scale argument.
Scalar unit
The scale argument is a numeric or rational value which indicates the reference unit used
for duration values: what is "1" duration?
By default, the unit is a "whole note" or duration.
By changing the unit, you can rescale your output.
For example, a recip value represents a fraction of the unit: e.g., "2" equals 1/2 of the unit.
If we call recip('2', scale = 1/16) this is telling us to get half of a sixteenth: which in this case would be '32'.
In-place parsing
In humdrum data, character strings are often encoded with multiple pieces of musical information right besides each other:
for example, **recip data might include tokens like "4.ee-[.
The humdrumR parser (rhythmInterval) will automatically "pull out" rhythm information from within strings, if it can find any
using the appropriate known regular expressions.
For example, duration('4.ee-[') returns 0.375.
However, all the pitch functions (like recip() and dur()) have an option to keep the "extra" information
and return the result "in place"---i.e., embedded right where it was found in the input string.
This is controlled with the inPlace argument, which is FALSE by default.
So, duration('4.ee-[', inPlace = TRUE) will return 0.375ee-[---keeping the "ee-[".
Note that inPlace = TRUE will force functions like duration, which normally return numeric values, to return character strings
if their input is a character string.
See also
All humdrumR rhythm functions make use of the
deparsing functionality.