tests/testthat/test-4-musicxml-divisions.R

test_that("inferring divisions works", {
  music <-
    Music() +
    Line(durations = c("q/3", "h/5", "q/7")) +
    Meter(1, 8) +
    Meter(3, 16, bar = 3)

  notes <- music[["notes"]]
  meters <- music[["meters"]]
  lines <- music[["lines"]]
  tempos <- music[["tempos"]]
  clefs <- music[["clefs"]]

  notes[["measure_rest"]] <- c(FALSE, FALSE, TRUE)
  out <- infer_divisions(lines, notes, meters, tempos, clefs)
  expected <- 60
  expect_identical(out, expected)

  notes[["measure_rest"]] <- c(FALSE, FALSE, FALSE)
  out <- infer_divisions(lines, notes, meters, tempos, clefs)
  expected <- 420
  expect_identical(out, expected)
})


test_that("voice offsets work", {
  music <-
    Music() +
    Line(durations = "q") +
    Line(durations = "q", offset = 0.125, as = "voice") +
    Meter(4, 4)

  notes <- music[["notes"]]
  meters <- music[["meters"]]
  lines <- music[["lines"]]
  tempos <- music[["tempos"]]
  clefs <- music[["clefs"]]

  lines[["start_offset"]] <- lines[["offset"]]
  notes[["measure_rest"]] <- c(FALSE, FALSE)

  out <- infer_divisions(lines, notes, meters, tempos, clefs)
  expected <- 8
  expect_identical(out, expected)
})

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.