Extract octave.
octave.RdReturns which octave each pitch falls in.
By default, middle-C is the bottom of the zeroth-octave, but this can be changed with the octave.offset
argument.
Other octave labels (like lilypond-style marks) can be used if you set octave.integer = FALSE.
Arguments
- x
Input data to parse as pitch information.
The
xargument can be any (atomic) vector, or a tonalInterval, orNULL.- ...
Arguments passed to the pitch deparser.
There are also two hidden (advanced) arguments you can specify:
memoizeanddeparse(see the details below).- generic
Should "specific" pitch information (accidentals and qualites) be discarded?
Defaults to
FALSE.Must be a singleton
logicalvalue: an on/off switch.- simple
Should "compound" pitch information (octave/contour) be discarded?
Defaults to
FALSE.Must be a singleton
logicalvalue: an on/off switch.- Key
The input
Keyused by the parser, deparser, and transposer.Defaults to
NULL.Must be a
diatonicSetor something coercable todiatonicSet; must be either length1orlength(x)- transposeArgs
An optional list of arguments passed to a special
transpose()call.Defaults to an empty
list().Must be a
listof named arguments totranspose().- parseArgs
An optional list of arguments passed to the pitch parser.
Defaults to an empty
list().Must be a
listof named arguments to the pitch parser.- inPlace
Should non-pitch information be retained in the output string.
Defaults to
FALSE.Must be a singleton
logicalvalue: an on/off switch.This argument only has an effect if the input (the
xargument) ischaracterstrings, and there is extra, non-pitch information in the input strings "besides" the pitch information. If so, andinPlace = TRUE, the output will be placed into an output string beside the original non-pitch information. IfinPlace = FALSE, only the pitch output information will be returned (details below).
See also
Other pitch functions:
accidental(),
bhatk(),
degree(),
freq(),
helmholtz(),
interval(),
kern(),
lilypond(),
pc(),
pitch(),
quality(),
semits(),
solfa(),
solfg(),
step(),
tonh()
Other partial pitch functions:
accidental(),
quality(),
step()
Examples
chorale <- readHumdrum(humdrumRroot, 'HumdrumData/BachChorales/chor001.krn')
#> Finding and reading files...
#> REpath-pattern '/home/nat/.tmp/RtmpBDgnJw/temp_libpath28db92437ebb13/humdrumR/HumdrumData/BachChorales/chor001.krn' matches 1 text files in 1 directory.
#> One file read from disk.
#> Validating one file...
#> all valid.
#> Parsing one file...
#> Assembling corpus...
#> Done!
chorale[[20:30,]]
#> ######################## vvv chor001.krn vvv #########################
#> 8: **kern **kern **kern **kern
#> 12: *>[A,A,B] *>[A,A,B] *>[A,A,B] *>[A,A,B]
#> 13: *>norep[A,B] *>norep[A,B] *>norep[A,B] *>norep[A,B]
#> 14: *>A *>A *>A *>A
#> 20: 4GG 4B 4d 4g
#> 21: =1 =1 =1 =1
#> 22: 4G 4B 4d 2g
#> 23: 4E 8cL 4e .
#> 24: . 8BJ . .
#> 25: 4F# 4A 4d 4dd
#> 26: =2 =2 =2 =2
#> 27: 4G 4G 2d 4.b
#> 28: 4D 4F# . .
#> 29: . . . 8a
#> 30: 4E 4G 4B 4g
#> 52: *>B *>B *>B *>B
#> 124: *- *- *- *-
#> ######################## ^^^ chor001.krn ^^^ #########################
#>
#> Data fields:
#> *Token :: character
#>
within(chorale[[20:30,]], octave(Token))
#> ######################## vvv chor001.krn vvv #########################
#> 8: **octave **octave **octave **octave
#> 12: *>[A,A,B] *>[A,A,B] *>[A,A,B] *>[A,A,B]
#> 13: *>norep[A,B] *>norep[A,B] *>norep[A,B] *>norep[A,B]
#> 14: *>A *>A *>A *>A
#> 20: -2 -1 -1 0
#> 21: =1 =1 =1 =1
#> 22: -1 -1 -1 0
#> 23: -2 -1 -1 .
#> 24: . -1 . .
#> 25: -2 -1 -1 0
#> 26: =2 =2 =2 =2
#> 27: -1 -1 -1 0
#> 28: -2 -2 . .
#> 29: . . . 0
#> 30: -2 -1 -1 0
#> 52: *>B *>B *>B *>B
#> 124: *- *- *- *-
#> ######################## ^^^ chor001.krn ^^^ #########################
#>
#> Data fields:
#> Token :: character
#> *humdrumR:::octave(Token) :: integer (**octave tokens)
#>
within(chorale[[20:30,]], octave(Token, octave.offset = 4)) # traditional octaves
#> ######################## vvv chor001.krn vvv #########################
#> 8: **octave **octave **octave **octave
#> 12: *>[A,A,B] *>[A,A,B] *>[A,A,B] *>[A,A,B]
#> 13: *>norep[A,B] *>norep[A,B] *>norep[A,B] *>norep[A,B]
#> 14: *>A *>A *>A *>A
#> 20: 2 3 3 4
#> 21: =1 =1 =1 =1
#> 22: 3 3 3 4
#> 23: 2 3 3 .
#> 24: . 3 . .
#> 25: 2 3 3 4
#> 26: =2 =2 =2 =2
#> 27: 3 3 3 4
#> 28: 2 2 . .
#> 29: . . . 4
#> 30: 2 3 3 4
#> 52: *>B *>B *>B *>B
#> 124: *- *- *- *-
#> ######################## ^^^ chor001.krn ^^^ #########################
#>
#> Data fields:
#> Token :: character
#> *humdrumR:::octave(Token, octave.offset = 4) :: integer (**octave tokens)
#>
within(chorale[[20:30,]], octave(Token, octave.integer = FALSE))
#> ######################## vvv chor001.krn vvv #########################
#> 8: **octave **octave **octave **octave
#> 12: *>[A,A,B] *>[A,A,B] *>[A,A,B] *>[A,A,B]
#> 13: *>norep[A,B] *>norep[A,B] *>norep[A,B] *>norep[A,B]
#> 14: *>A *>A *>A *>A
#> 20: vv v v '
#> 21: =1 =1 =1 =1
#> 22: v v v '
#> 23: vv v v .
#> 24: . v . .
#> 25: vv v v '
#> 26: =2 =2 =2 =2
#> 27: v v v '
#> 28: vv vv . .
#> 29: . . . '
#> 30: vv v v '
#> 52: *>B *>B *>B *>B
#> 124: *- *- *- *-
#> ######################## ^^^ chor001.krn ^^^ #########################
#>
#> Data fields:
#> Token :: character
#> *humdrumR:::octave(Token, octave.integer = FALSE) :: character (**octave tokens)
#>