Skip to contents

Cleave, as in "to cleave together," moves data from separate spines (or paths) into new fields in the same spine(s). Under the hood, cleave() essentially runs a specialized call to make the humdrum table "wider," similar to R functions like cast(), spread(), or pivot_wider(). In fact, a humdrumR method for pivot_wider() is defined, which is equivalent to cleave(). The cleave() function is essentially the inverse of rend().

Usage

cleave(humdrumR, ..., field = selectedFields(humdrumR)[1], newFields = NULL)

# S3 method for humdrumR
pivot_wider(data, names_from = "Spine", values_from = selectedFields(data)[1])

cleaveSpines(humdrumR, field = selectedFields(humdrumR)[1])

cleavePaths(humdrumR, field = selectedFields(humdrumR)[1])

cleaveStops(humdrumR, field = selectedFields(humdrumR)[1])

Arguments

humdrumR

HumdrumR data.

Must be a humdrumR data object.

...

What to cleave?

Must be natural numbers, character strings representing exclusive interpretations, or lists of either.

field

Which field cleave data from.

Defaults to first selected field.

Must be a character string partially matching the name of a data field in the humdrumR input. For example, "Tok" would match the Token field.

newFields

Names to use for new fields created by the cleave.

By default generates names by structure/number (like Spine2) or exclusive interpretation (like Silbe).

Must be non-empty character string.

Details

Many humdrum datasets encode data across multiple spines, spine-paths, or stops. By default, humdrumR parses each separate spine, spine-path, and stop as their own individual data points, taking up one row in the humdrum table. If we want to treat data in multiple spines/paths/stops as different aspects of the same data it is easiest to reshape the data so that the information is in different humdrumR fields rather than separate spines/paths/stops. In the humdrum syntax view, the spines (or path/stops) are moved "on top" of each other, cleaving them together.

The convenient cleaveSpines(), cleaveStops(), and cleavePaths() functions automatically cleave all stops/paths in a dataset onto the first spine/stop/path, creating new fields named, e.g., Path1, Path2, etc.

Syntax

The cleave() function takes any number of ... arguments specifying groups of spines/paths/stops to cleave together.

  • cleave(humData, Spine = 1:2) will cleave the first and second spine.

  • cleave(humData, Spine = 1:4) will cleave the first four spines.

  • cleave(humData, Spine = 1:2, Spine = 3:4) will cleave spine 1 with spine 2, and separately, spine 3 with spine 4.

The default is to cleave spines, so you can actually omit the Spine = part: e.g., cleave(humData, 1:2) is the same as cleave(humData, Spine = 1:2). If you want to cleave spine paths, you'll need to explicitly call something like cleave(humData, Path = 0:1). The first element in each group is used as the original location which all other spines/paths/stops are cleaved into. The ordering of the remaining elements is irrelevant.

Piece-specific cleaving

By default, the same cleaving will be applied in all pieces (if the pieces have the target spines/paths/stops). However, you can use an alternate argument structure to apply differerent cleaves to different pieces. To do so, provide groups to cleave arguments in a list, with each element in the list representing cleave group in one piece. If the listed groups are unnamed, the groups are mapped to pieces by index. For example, the call cleave(humData, list(1:2, 2:3, 3:4, NULL, 1:3)) will result in the following cleaves:

  • In piece 1, cleave spines 1 and 2.

  • In piece 2, cleave spines 2 and 3.

  • In piece 3, cleave spines 3 and 4.

  • In piece 4, no cleave (no changes).

  • In piece 5, cleave the first three spines.

  • In any remaining pieces (6 or greater), no cleaves.

Alternatively, you can name the list elements with integers corresponding to pieces. For example, cleave(humData, Path = list("1" = 0:1, 5 = 0:2")) will cleave paths 0 and 1 in piece 1, and paths 0:2 in piece 5.

Exclusive interpretations

When cleaving spines, you can specify spines using character strings representing exclusive interpretations. So you can call cleave(humData, c('kern', 'silbe')), which will cause **kern and **silbe spines in each piece to be cleaved. Note that any exclusive interpretations which aren't "mentioned" in the call remain in their original field.

The behavior of exclusive cleaving depends on the relative number of each target exclusive interpretation in each piece. If there are equal numbers of each interpretation, the spines are grouped in parallel. For example, if a piece has the spines **kern **silbe **kern **silbe, the command cleave(humData, c('kern', 'silbe')) will see that there are two **kern/**silbe pairs, and cleave them just like cleave(humData, 1:2, 3:4).

If there are different numbers of spines matching each exclusive interpretation, the cleave behavior depends on which field is the first field in your input argument---we'll call that the "target" exclusive. Consider a file with spines **kern **kern **harm. If we specify a cleave call cleave(humData, c('kern', 'harm')) that means we want **kern to be the "target" exclusive. Since there are fewer **harm spines than **kern spines, the data in the **harm spine will be duplicated, can cleaved to both **kern spines in parallel. If we instead call cleave(humData, c('harm', 'kern')), making **harm the "target", the two **kern spines will both be "piled" atop the single **harm spine, making two new **kern fields.

Fields

Cleaving can (for now) only be applied to one field in our data, which defaults to the first selected field; You can change the target field with the field argument.

Cleaving will always introduce new fields into your data. The first spine/path/stop in each cleave group is left in it's original (target) field. Other spine/path/stops will be put into new fields. So if you call humData |> select(Token) |> cleave(humData, 1:2), spine 1 will remain in the Token field and spine 2 data will be put in a new field. By default, the new field(s) will be automatically named by appending the type of cleave (spine vs path vs stop) to the number. In the cleave(humData, 1:2) case, the new field will be called Spine2. You can control the name with the newFields argument, which must be a character vector. You can provide as many new field names as there will be new fields. If you provide too few field names, your name(s) will have numbers appended as necceasary to cover all the new fields; If you provide too many field names, the extra names will simply be ignored.

When cleaving by exclusive interpretation newFields can be used in the exact same way. However, by default (if newFields is NULL), cleave() will names fields by their exclusive interpretation. Note that the original target field (specified by the field) argument will not have it's name changed. So for example, humData |> select(Token) |> cleave(humData, c('kern', 'silbe')) will result in the spines Token and Silbe. No Kern field is created, because the Kern data is left in the Token field.

See also

The complement/opposite of cleave() is rend(). The collapse family of functions serves a somewhat similar function to cleave().

Other Humdrum table reshaping functions: collapseHumdrum(), expandPaths(), rend()

Other Humdrum table pivoting functions: rend()

Examples


humData <- readHumdrum(humdrumRroot, "HumdrumData/MozartVariations/.*.krn")
#> Finding and reading files...
#> 	REpath-pattern '/home/nat/.tmp/Rtmpn4KeFS/temp_libpath7af94615c2ed/humdrumR/HumdrumData/MozartVariations/.*.krn' matches 8 text files in 1 directory.
#> Eight files read from disk.
#> Validating eight files...
#> all valid.
#> Parsing eight files...
#> Assembling corpus...
#> Done!


humData |> cleave(3:4)
#> #################### vvv M354_00_01a_a.krn vvv ####################
#>    1:  !!!COM: Mozart
#>    2:  !!!OTL: Zwolf Variationen in Es, uber die Romanze '***
#>    3:  !!!Variation: Theme a
#>    4:       **function     **harm        **kern**kern         
#>    5:                *          *      *clefF4*clefG2         
#>    6:                *          *          *k[b-e-a-]         
#>    7:            *M2/4      *M2/4               *M2/4         
#>    8:             *E-:       *E-:                *E-:         
#>    9:               =1         =1                  =1         
#>   10:               2T         2I4EE- 4GG 4BB- 4...B-         
#>   11:                .          .           4r8e-L 8g         
#>   12:                .          .             8e-J 8g         
#>   13:               =2         =2                  =2         
#>   14:               2T         2I          8r4.e- 4.g         
#>   15:                .          .                 8E-         
#>   16:                .          .               8EE-L         
#>   17:                .          .         8GGJ8B- 8e-         
#>   18:               =3         =3                  =3         
#>   19:              4.D        4.V         4.BB-8dL 8f         
#>   20:                .          .              8dJ 8f         
#>   21:                .          .             (8dL 8f         
#>   22:               8D         8I         8E-8e-J) 8g         
#>   23:               =4         =4                  =4         
#>   24:                *          *                   *         
#>   25:               4D        4V7             8DL[8fL      8b-
#>   26:                .          .           8BB-J8fJ]      8a-
#>   27:               4T         4I             8E-L8e-       8g
#>   28:                *          *                   *        .
#>   29:                .          .             8EE-J8r         
#>   30:               *-         *-                  *-         
#> #################### ^^^ M354_00_01a_a.krn ^^^ ####################
#> 
#> 		(six more pieces...)
#> 
#> #################### vvv M354_01_04d_a.krn vvv ####################
#> 1-14:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#>   15:                .          .             (16ccLL        .
#>   16:                .          .                16b-        .
#>   17:                .          .               8f16a        .
#>   18:                .          .             16b-JJ)        .
#>   19:              =41        =41                 =41      =41
#>   20:               2D       2V7d          8r(16ee-LL      2A-
#>   21:                .          .                16dd        .
#>   22:                .          .         4B- 4f16cc#        .
#>   23:                .          .             16ddJJ)        .
#>   24:                .          .             (16ccLL        .
#>   25:                .          .                16b-        .
#>   26:                .          .           8B- 8f16a        .
#>   27:                .          .             16b-JJ)        .
#>   28:                *          *                  *v       *v
#>   29:              =42        =42                 =42         
#>   30:                *          *             *clefF4         
#>   31:               4T        4Ib          8r(16ee-LL         
#>   32:                .          .                16ff         
#>   33:                .          .         8G 8e-16gg)         
#>   34:                .          .              16b'JJ         
#>   35:               4P        4IV           8r(16ccLL         
#>   36:                .          .                16dd         
#>   37:                .          .       8A- 8e-16ee-)         
#>   38:                .          .             16a-'JJ         
#>   39:              =43        =43                 =43         
#>   40:                *          *                  *^         
#>   41:               4D        4Cc            8r(16gLL     2BB-
#>   42:                .          .                16a-        .
#>   43:                .          .            (8G16b-)        .
#>   44:                .          .              16e'JJ        .
#>   45:               4D        4V7          8A-L(16fLL        .
#>   46:                .          .                 16g        .
#>   47:                .          .           8FJ)16a-)        .
#>   48:                .          .              16d'JJ        .
#>   49:                *          *                  *v       *v
#>   50:              =44        =44                 =44         
#>   51:               2T         2I             8E-L4e-         
#>   52:                .          .               8BB-J         
#>   53:                .          .              4EE-4r         
#>   54:               *-         *-                  *-         
#> #################### ^^^ M354_01_04d_a.krn ^^^ ####################
#>              (***one global comment truncated due to screen size***)
#> 
#> 	humdrumR corpus of eight pieces.
#> 
#>    Data fields: 
#> 	        *Spine4 :: character
#> 	        *Token  :: character
#> 
humData |> cleave(Path = 0:1, newFields = 'Ossia')
#> ##################### vvv M354_00_01a_a.krn vvv ######################
#>    1:  !!!COM: Mozart
#>    2:  !!!OTL: Zwolf Variationen in Es, uber die Romanze '***
#>    3:  !!!Variation: Theme a
#>    4:      **function    **harm              **kern            **kern
#>    5:               *         *             *clefF4           *clefG2
#>    6:               *         *          *k[b-e-a-]        *k[b-e-a-]
#>    7:           *M2/4     *M2/4               *M2/4             *M2/4
#>    8:            *E-:      *E-:                *E-:              *E-:
#>    9:              =1        =1                  =1                =1
#>   10:              2T        2I   4EE- 4GG 4BB- 4E-    4B- 4e- 4g 4b-
#>   11:               .         .                  4r           8e-L 8g
#>   12:               .         .                   .           8e-J 8g
#>   13:              =2        =2                  =2                =2
#>   14:              2T        2I                  8r          4.e- 4.g
#>   15:               .         .                 8E-                 .
#>   16:               .         .               8EE-L                 .
#>   17:               .         .                8GGJ           8B- 8e-
#>   18:              =3        =3                  =3                =3
#>   19:             4.D       4.V               4.BB-            8dL 8f
#>   20:               .         .                   .            8dJ 8f
#>   21:               .         .                   .           (8dL 8f
#>   22:              8D        8I                 8E-          8e-J) 8g
#>   23:              =4        =4                  =4                =4
#>   24:               *         *                   *                *^
#>   25:              4D       4V7                 8DL           [8fL8b-
#>   26:               .         .               8BB-J           8fJ]8a-
#>   27:              4T        4I                8E-L             8e-8g
#>   28:               *         *                   *                *v
#>   29:               .         .               8EE-J                8r
#>   30:              *-        *-                  *-                *-
#> ##################### ^^^ M354_00_01a_a.krn ^^^ ######################
#> 
#> 		(six more pieces...)
#> 
#> ##################### vvv M354_01_04d_a.krn vvv ######################
#> 1-14::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#>   15:               .         .                   .           (16ccLL
#>   16:               .         .                   .              16b-
#>   17:               .         .                  8f               16a
#>   18:               .         .                   .           16b-JJ)
#>   19:             =41       =41                 =41               =41
#>   20:              2D      2V7d               8r2A-          (16ee-LL
#>   21:               .         .                   .              16dd
#>   22:               .         .              4B- 4f             16cc#
#>   23:               .         .                   .           16ddJJ)
#>   24:               .         .                   .           (16ccLL
#>   25:               .         .                   .              16b-
#>   26:               .         .              8B- 8f               16a
#>   27:               .         .                   .           16b-JJ)
#>   28:               *         *                  *v                 *
#>   29:             =42       =42                 =42               =42
#>   30:               *         *             *clefF4                 *
#>   31:              4T       4Ib                  8r          (16ee-LL
#>   32:               .         .                   .              16ff
#>   33:               .         .              8G 8e-             16gg)
#>   34:               .         .                   .            16b'JJ
#>   35:              4P       4IV                  8r           (16ccLL
#>   36:               .         .                   .              16dd
#>   37:               .         .             8A- 8e-            16ee-)
#>   38:               .         .                   .           16a-'JJ
#>   39:             =43       =43                 =43               =43
#>   40:               *         *                  *^                 *
#>   41:              4D       4Cc              8r2BB-            (16gLL
#>   42:               .         .                   .              16a-
#>   43:               .         .                 (8G             16b-)
#>   44:               .         .                   .            16e'JJ
#>   45:              4D       4V7                8A-L            (16fLL
#>   46:               .         .                   .               16g
#>   47:               .         .                8FJ)             16a-)
#>   48:               .         .                   .            16d'JJ
#>   49:               *         *                  *v                 *
#>   50:             =44       =44                 =44               =44
#>   51:              2T        2I                8E-L               4e-
#>   52:               .         .               8BB-J                 .
#>   53:               .         .                4EE-                4r
#>   54:              *-        *-                  *-                *-
#> ##################### ^^^ M354_01_04d_a.krn ^^^ ######################
#>                 (***one global comment truncated due to screen size***)
#> 
#> 	humdrumR corpus of eight pieces.
#> 
#>    Data fields: 
#> 	        *Ossia :: character
#> 	        *Token :: character
#> 
humData |> cleavePaths()
#> ##################### vvv M354_00_01a_a.krn vvv ######################
#>    1:  !!!COM: Mozart
#>    2:  !!!OTL: Zwolf Variationen in Es, uber die Romanze '***
#>    3:  !!!Variation: Theme a
#>    4:      **function    **harm              **kern            **kern
#>    5:               *         *             *clefF4           *clefG2
#>    6:               *         *          *k[b-e-a-]        *k[b-e-a-]
#>    7:           *M2/4     *M2/4               *M2/4             *M2/4
#>    8:            *E-:      *E-:                *E-:              *E-:
#>    9:              =1        =1                  =1                =1
#>   10:              2T        2I   4EE- 4GG 4BB- 4E-    4B- 4e- 4g 4b-
#>   11:               .         .                  4r           8e-L 8g
#>   12:               .         .                   .           8e-J 8g
#>   13:              =2        =2                  =2                =2
#>   14:              2T        2I                  8r          4.e- 4.g
#>   15:               .         .                 8E-                 .
#>   16:               .         .               8EE-L                 .
#>   17:               .         .                8GGJ           8B- 8e-
#>   18:              =3        =3                  =3                =3
#>   19:             4.D       4.V               4.BB-            8dL 8f
#>   20:               .         .                   .            8dJ 8f
#>   21:               .         .                   .           (8dL 8f
#>   22:              8D        8I                 8E-          8e-J) 8g
#>   23:              =4        =4                  =4                =4
#>   24:               *         *                   *                *^
#>   25:              4D       4V7                 8DL           [8fL8b-
#>   26:               .         .               8BB-J           8fJ]8a-
#>   27:              4T        4I                8E-L             8e-8g
#>   28:               *         *                   *                *v
#>   29:               .         .               8EE-J                8r
#>   30:              *-        *-                  *-                *-
#> ##################### ^^^ M354_00_01a_a.krn ^^^ ######################
#> 
#> 		(six more pieces...)
#> 
#> ##################### vvv M354_01_04d_a.krn vvv ######################
#> 1-14::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#>   15:               .         .                   .           (16ccLL
#>   16:               .         .                   .              16b-
#>   17:               .         .                  8f               16a
#>   18:               .         .                   .           16b-JJ)
#>   19:             =41       =41                 =41               =41
#>   20:              2D      2V7d               8r2A-          (16ee-LL
#>   21:               .         .                   .              16dd
#>   22:               .         .              4B- 4f             16cc#
#>   23:               .         .                   .           16ddJJ)
#>   24:               .         .                   .           (16ccLL
#>   25:               .         .                   .              16b-
#>   26:               .         .              8B- 8f               16a
#>   27:               .         .                   .           16b-JJ)
#>   28:               *         *                  *v                 *
#>   29:             =42       =42                 =42               =42
#>   30:               *         *             *clefF4                 *
#>   31:              4T       4Ib                  8r          (16ee-LL
#>   32:               .         .                   .              16ff
#>   33:               .         .              8G 8e-             16gg)
#>   34:               .         .                   .            16b'JJ
#>   35:              4P       4IV                  8r           (16ccLL
#>   36:               .         .                   .              16dd
#>   37:               .         .             8A- 8e-            16ee-)
#>   38:               .         .                   .           16a-'JJ
#>   39:             =43       =43                 =43               =43
#>   40:               *         *                  *^                 *
#>   41:              4D       4Cc              8r2BB-            (16gLL
#>   42:               .         .                   .              16a-
#>   43:               .         .                 (8G             16b-)
#>   44:               .         .                   .            16e'JJ
#>   45:              4D       4V7                8A-L            (16fLL
#>   46:               .         .                   .               16g
#>   47:               .         .                8FJ)             16a-)
#>   48:               .         .                   .            16d'JJ
#>   49:               *         *                  *v                 *
#>   50:             =44       =44                 =44               =44
#>   51:              2T        2I                8E-L               4e-
#>   52:               .         .               8BB-J                 .
#>   53:               .         .                4EE-                4r
#>   54:              *-        *-                  *-                *-
#> ##################### ^^^ M354_01_04d_a.krn ^^^ ######################
#>                 (***one global comment truncated due to screen size***)
#> 
#> 	humdrumR corpus of eight pieces.
#> 
#>    Data fields: 
#> 	        *Path1 :: character
#> 	        *Token :: character
#> 

humData |> cleave(c('function', 'harm'), newFields = 'Harmony')
#> ##################### vvv M354_00_01a_a.krn vvv ######################
#>    1:  !!!COM: Mozart
#>    2:  !!!OTL: Zwolf Variationen in Es, uber die Roman***
#>    3:  !!!Variation: Theme a
#>    4:    **function**harm             **kern                **kern    ***
#>    5:                   *            *clefF4               *clefG2    ***
#>    6:                   *         *k[b-e-a-]            *k[b-e-a-]    ***
#>    7:               *M2/4              *M2/4                 *M2/4    ***
#>    8:                *E-:               *E-:                  *E-:    ***
#>    9:                  =1                 =1                    =1    ***
#>   10:                2T2I  4EE- 4GG 4BB- 4E-        4B- 4e- 4g 4b-    ***
#>   11:                   .                 4r               8e-L 8g    ***
#>   12:                   .                  .               8e-J 8g    ***
#>   13:                  =2                 =2                    =2    ***
#>   14:                2T2I                 8r              4.e- 4.g    ***
#>   15:                   .                8E-                     .    ***
#>   16:                   .              8EE-L                     .    ***
#>   17:                   .               8GGJ               8B- 8e-    ***
#>   18:                  =3                 =3                    =3    ***
#>   19:              4.D4.V              4.BB-                8dL 8f    ***
#>   20:                   .                  .                8dJ 8f    ***
#>   21:                   .                  .               (8dL 8f    ***
#>   22:                8D8I                8E-              8e-J) 8g    ***
#>   23:                  =4                 =4                    =4    ***
#>   24:                   *                  *                    *^    ***
#>   25:               4D4V7                8DL                  [8fL    ***
#>   26:                   .              8BB-J                  8fJ]    ***
#>   27:                4T4I               8E-L                   8e-    ***
#>   28:                   *                  *                    *v    ***
#>   29:                   .              8EE-J                    8r    ***
#>   30:                  *-                 *-                    *-    ***
#> ##################### ^^^ M354_00_01a_a.krn ^^^ ######################
#> 
#> 		(six more pieces...)
#> 
#> ##################### vvv M354_01_04d_a.krn vvv ######################
#> 1-14::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#>   15:                   .                  .     .         (16ccLL    ***
#>   16:                   .                  .     .            16b-    ***
#>   17:                   .                 8f     .             16a    ***
#>   18:                   .                  .     .         16b-JJ)    ***
#>   19:                 =41                =41   =41             =41    ***
#>   20:              2D2V7d                 8r   2A-        (16ee-LL    ***
#>   21:                   .                  .     .            16dd    ***
#>   22:                   .             4B- 4f     .           16cc#    ***
#>   23:                   .                  .     .         16ddJJ)    ***
#>   24:                   .                  .     .         (16ccLL    ***
#>   25:                   .                  .     .            16b-    ***
#>   26:                   .             8B- 8f     .             16a    ***
#>   27:                   .                  .     .         16b-JJ)    ***
#>   28:                   *                 *v    *v               *    ***
#>   29:                 =42                =42                   =42    ***
#>   30:                   *            *clefF4                     *    ***
#>   31:               4T4Ib                 8r              (16ee-LL    ***
#>   32:                   .                  .                  16ff    ***
#>   33:                   .             8G 8e-                 16gg)    ***
#>   34:                   .                  .                16b'JJ    ***
#>   35:               4P4IV                 8r               (16ccLL    ***
#>   36:                   .                  .                  16dd    ***
#>   37:                   .            8A- 8e-                16ee-)    ***
#>   38:                   .                  .               16a-'JJ    ***
#>   39:                 =43                =43                   =43    ***
#>   40:                   *                 *^                     *    ***
#>   41:               4D4Cc                 8r  2BB-          (16gLL    ***
#>   42:                   .                  .     .            16a-    ***
#>   43:                   .                (8G     .           16b-)    ***
#>   44:                   .                  .     .          16e'JJ    ***
#>   45:               4D4V7               8A-L     .          (16fLL    ***
#>   46:                   .                  .     .             16g    ***
#>   47:                   .               8FJ)     .           16a-)    ***
#>   48:                   .                  .     .          16d'JJ    ***
#>   49:                   *                 *v    *v               *    ***
#>   50:                 =44                =44                   =44    ***
#>   51:                2T2I               8E-L                   4e-    ***
#>   52:                   .              8BB-J                     .    ***
#>   53:                   .               4EE-                    4r    ***
#>   54:                  *-                 *-                    *-    ***
#> ##################### ^^^ M354_01_04d_a.krn ^^^ ######################
#>                 (***one spine/path not displayed due to screen size***)
#> 
#> 	humdrumR corpus of eight pieces.
#> 
#>    Data fields: 
#> 	        *Harmony :: character
#> 	        *Token   :: character
#> 

humData |> cleave(c('kern', 'function', 'harm'))
#> #################### vvv M354_00_01a_a.krn vvv ####################
#>    1:  !!!COM: Mozart
#>    2:  !!!OTL: Zwolf Variationen in Es, uber die Romanze '***
#>    3:  !!!Variation: Theme a
#>    4:  **kern**functio...ha        **kern**functio...ha       
#>    5:               *clefF4                     *clefG2       
#>    6:            *k[b-e-a-]                  *k[b-e-a-]       
#>    7:                 *M2/4                       *M2/4       
#>    8:                  *E-:                        *E-:       
#>    9:                    =1                          =1       
#>   10:  4EE- 4GG 4BB- 4...T2          4B- 4e- 4g 4b-2T2I       
#>   11:                    4r                     8e-L 8g       
#>   12:                     .                     8e-J 8g       
#>   13:                    =2                          =2       
#>   14:                8r2T2I                4.e- 4.g2T2I       
#>   15:                   8E-                           .       
#>   16:                 8EE-L                           .       
#>   17:                  8GGJ                     8B- 8e-       
#>   18:                    =3                          =3       
#>   19:           4.BB-4.D4.V                8dL 8f4.D4.V       
#>   20:                     .                      8dJ 8f       
#>   21:                     .                     (8dL 8f       
#>   22:               8E-8D8I                8e-J) 8g8D8I       
#>   23:                    =4                          =4       
#>   24:                     *                          *^       
#>   25:              8DL4D4V7                   [8fL4D4V7    8b-
#>   26:                 8BB-J                        8fJ]    8a-
#>   27:              8E-L4T4I                     8e-4T4I     8g
#>   28:                     *                          *v     *v
#>   29:                 8EE-J                          8r       
#>   30:                    *-                          *-       
#> #################### ^^^ M354_00_01a_a.krn ^^^ ####################
#> 
#> 		(six more pieces...)
#> 
#> #################### vvv M354_01_04d_a.krn vvv ####################
#> 1-14:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#>   15:                     .       .             (16ccLL       
#>   16:                     .       .                16b-       
#>   17:                    8f       .                 16a       
#>   18:                     .       .             16b-JJ)       
#>   19:                   =41     =41                 =41       
#>   20:              8r2D2V7d     2A-      (16ee-LL2D2V7d       
#>   21:                     .       .                16dd       
#>   22:                4B- 4f       .               16cc#       
#>   23:                     .       .             16ddJJ)       
#>   24:                     .       .             (16ccLL       
#>   25:                     .       .                16b-       
#>   26:                8B- 8f       .                 16a       
#>   27:                     .       .             16b-JJ)       
#>   28:                    *v      *v                   *       
#>   29:                   =42                         =42       
#>   30:               *clefF4                           *       
#>   31:               8r4T4Ib               (16ee-LL4T4Ib       
#>   32:                     .                        16ff       
#>   33:                8G 8e-                       16gg)       
#>   34:                     .                      16b'JJ       
#>   35:               8r4P4IV                (16ccLL4P4IV       
#>   36:                     .                        16dd       
#>   37:               8A- 8e-                      16ee-)       
#>   38:                     .                     16a-'JJ       
#>   39:                   =43                         =43       
#>   40:                    *^                           *       
#>   41:               8r4D4Cc    2BB-         (16gLL4D4Cc       
#>   42:                     .       .                16a-       
#>   43:                   (8G       .               16b-)       
#>   44:                     .       .              16e'JJ       
#>   45:             8A-L4D4V7       .         (16fLL4D4V7       
#>   46:                     .       .                 16g       
#>   47:                  8FJ)       .               16a-)       
#>   48:                     .       .              16d'JJ       
#>   49:                    *v      *v                   *       
#>   50:                   =44                         =44       
#>   51:              8E-L2T2I                     4e-2T2I       
#>   52:                 8BB-J                           .       
#>   53:                  4EE-                          4r       
#>   54:                    *-                          *-       
#> #################### ^^^ M354_01_04d_a.krn ^^^ ####################
#>              (***one global comment truncated due to screen size***)
#> 
#> 	humdrumR corpus of eight pieces.
#> 
#>    Data fields: 
#> 	        *Function :: character
#> 	        *Harm     :: character
#> 	        *Token    :: character
#>