R/4-musicxml-instrument.R

Defines functions insert.Instrument to_MusicXML.Instrument

Documented in insert.Instrument to_MusicXML.Instrument

#' @keywords internal
#' @export
to_MusicXML.Instrument <- function(x, ...) {
  id <- sprintf("P%s-I1", x[["part"]])
  attributes <- list(id = id)

  musicxml_score_instrument <- MusicXML(
    "score-instrument",
    MusicXML("instrument-name", ""),
    attributes
  )

  musicxml_midi_instrument <- MusicXML(
    "midi-instrument",

    list(
      MusicXML("midi-program", x[["midi"]]),
      MusicXML("volume", x[["volume"]]),
      MusicXML("pan", x[["pan"]])
    ),

    attributes
  )

  list(
    musicxml_score_instrument,
    musicxml_midi_instrument
  )
}


#' @keywords internal
#' @export
insert.Instrument <- function(x, to, ...) {
  part <- x[["part"]]

  to$contents[[1]]$contents[[part]]$contents <- append(
    to$contents[[1]]$contents[[part]]$contents,
    to_MusicXML(x)
  )

  to
}

Try the gm package in your browser

Any scripts or data that you put into this service are public.

gm documentation built on Sept. 11, 2024, 6:11 p.m.