Skip to content

Commit

Permalink
Add initial guitar chord dataset.
Browse files Browse the repository at this point in the history
  • Loading branch information
leonawicz committed Mar 2, 2019
1 parent f40cf3e commit e48cdbb
Show file tree
Hide file tree
Showing 5 changed files with 144 additions and 1 deletion.
2 changes: 1 addition & 1 deletion R/data.R
Expand Up @@ -29,5 +29,5 @@
#'
#' A data frame containing information for many predefined guitar chords.
#'
#' @format A data frame with 13 columns.
#' @format A data frame with 12 columns and 4,030 rows.
"guitarChords"
28 changes: 28 additions & 0 deletions data-raw/chord_input1.R
@@ -0,0 +1,28 @@
frets <- list(
c(1, 3, 3, 2, 1, 1), c(NA, 1, 3, 3, 3, 1), c(NA, NA, 1, 3, 4, 3),
c(1, 3, 3, 1, 1, 1), c(NA, 1, 3, 3, 2, 1), c(NA, NA, 1, 3, 4, 2),
c(1, 3, 1, 2, 1, 1), c(NA, 1, 3, 1, 3, 1), c(NA, 3, 2, 3, 1, NA), c(NA, NA, 1, 3, 2, 3), c(NA, NA, 3, 2, 4, 1),
c(1, NA, 2, 2, 1, NA), c(NA, 1, 3, 2, 3, 1), c(NA, 4, 3, 1, 1, 1), c(NA, NA, 1, 3, 3, 3), c(NA, NA, 4, 3, 2, 1),
c(1, 3, 1, 1, 1, 1), c(NA, 1, 3, 1, 2, 1), c(NA, 3, 1, 3, 1, NA), c(NA, NA, 1, 3, 2, 2), c(NA, NA, 3, 1, 4, 1),
c(4, 1, 1, 1, NA, NA), c(NA, 1, 3, 3, 1, 1), c(NA, NA, 1, 3, 4, 1),
c(1, 3, 3, 3, 1, 1), c(NA, 1, 3, 3, 4, 1), c(NA, NA, 1, 3, 4, 4),
#c(1, 3, 3, NA, NA, NA), c(NA, 1, 3, 3, NA, NA), c(NA, NA, 1, 3, 4, NA),
c(2, NA, 1, 2, 1, NA), c(NA, 2, 3, 1, 3, NA), c(NA, 2, NA, 1, 3, 1), c(NA, NA, 1, 2, 1, 2), c(NA, NA, 6, 4, 3, 1),
c(2, NA, 2, 2, 1, NA), c(NA, 1, 2, 1, 2, NA), c(NA, 2, NA, 2, 3, 1), c(NA, NA, 1, 2, 2, 2), c(NA, NA, 5, 3, 2, 1),
c(2, NA, 2, 3, 1, NA), c(NA, 1, 2, 1, 3, NA), c(NA, 2, NA, 2, 4, 1), c(NA, NA, 1, 2, 2, 3), c(NA, NA, 5, 4, 2, 1),
c(1, NA, 2, 2, 1, 3), c(NA, 2, 1, 3, 2, NA), c(NA, 4, 1, 1, 1, 1), c(3, NA, 1, 3, 3, 1), c(NA, NA, 2, 1, 4, 3),
c(1, 3, 1, 2, 1, 3), c(NA, 2, 1, 2, 2, 2), c(3, NA, 1, 3, 2, 1), c(NA, NA, 2, 1, 3, 2),
c(1, 3, 1, 1, 1, 3), c(NA, 3, 1, 3, 3, 3), c(2, NA, 1, 3, 2, 1), c(NA, NA, 3, 1, 3, 4),
c(2, 1, 1, 1, 2, 2), c(NA, 2, 1, 1, 2, 2), c(NA, 4, 1, 3, 2, 1), c(3, NA, 1, 3, 1, 1), c(NA, NA, 2, 1, 2, 2),
c(1, 3, 5, 2, 1, 1), c(NA, 1, 3, 5, 3, NA), c(NA, 4, 3, 1, 4, NA), c(NA, NA, 1, 3, 4, 1), c(NA, NA, 3, 2, 1, 3),
c(3, NA, 3, 2, 1, NA), c(NA, 3, NA, 3, 3, 1), c(NA, 1, 1, 1, 1, 1), c(NA, NA, 1, 1, 2, 1), c(NA, NA, 3, 2, 1, 3)
)

id <- c(rep("M", 3), rep("m", 3), rep("7", 5), rep("M7", 5), rep("m7", 5), rep("sus2", 3), rep("sus4", 3),
#rep("5", 3),
rep("dim7", 5), rep("m7_5", 5), rep("7_5", 5), rep("M9", 5), rep("9", 4), rep("m9", 4),
rep("6add9", 5), rep("add9", 5), rep("11", 5))

opt <- as.list(rep(NA, 70))

chordData1 <- tibble(id = id, frets = frets, opt = opt)
85 changes: 85 additions & 0 deletions data-raw/chord_input2.R
@@ -0,0 +1,85 @@
frets <- list(
c(1, 3, 3, 2, 1, 1), c(NA, 1, 3, 3, 3, 1), c(NA, 4, 3, 1, 2, 1), c(4, 3, 1, 1, 1, 4), c(NA, NA, 1, 3, 4, 3), #M
c(1, 3, 3, 1, 1, 1), c(NA, 1, 3, 3, 2, 1), c(4, 2, 1, 1, NA, NA), c(NA, 4, 2, 1, 2, NA), c(NA, NA, 1, 3, 4, 2), #m
c(1, 3, 1, 2, 1, 1), c(NA, 1, 3, 1, 3, 1), c(NA, 3, 2, 3, 1, 3), c(1, NA, 1, 2, 1, NA), c(NA, NA, 1, 3, 2, 3), #7

c(1, 3, 2, 2, 1, 1), c(NA, 1, 3, 2, 3, 1), c(NA, 4, 3, 1, 1, 1), c(4, NA, 1, 1, 1, 3), c(NA, NA, 1, 3, 3, 3), #M7
c(1, 3, 1, 1, 1, 1), c(1, NA, 1, 1, 1, 1), c(NA, 1, 3, 1, 2, 1), c(NA, 3, 1, 3, 4, NA), c(NA, NA, 1, 3, 2, 2), #m7
c(2, NA, 2, 2, 1, NA), c(NA, 1, 2, 1, 2, NA), c(NA, 3, 2, 1, 1, NA),
c(1, NA, 1, 2, 2, NA), c(NA, 1, 2, 3, 2, NA), c(2, NA, 1, 2, 1, NA),

c(NA, 1, 3, 3, 1, 1), c(1, 3, 3, 3, 1, 1), c(NA, 1, 3, 3, 4, NA), c(1, 3, 5, 2, 1, 1),
c(NA, 1, 3, 5, 3, 1), c(1, 3 ,5, 1, 1, 1), c(1, 3, 3, 1, 1, 3), c(NA, 1, 3, 5, 1, 1),
c(1, 1, 3, 1, 1, 1), c(NA, 1, 1, 3, 2, 1), c(2, NA, 1, 2, 2, NA),

c(NA, 2, 4, 1, 3, NA), c(3, NA, 1, 3, 3, NA), c(2, NA, 1, 3, 2, NA), c(NA, 2, 4, 1, 4, NA),
c(3, 1, 2, 2, NA, NA), c(NA, 3, 1, 2, 3, NA), c(2, 1, 1, 1, 2, 2), c(NA, 2, 1, 1, 2, 2),
c(1, NA, 1, 1, 1, 3), c(1, NA, 1, 1, 2, NA), c(NA, 1, 4, 1, 2, NA),

c(1, NA, 2, 1, 1, NA), c(NA, 1, 3, 2, 2, NA), c(2, NA, 2, 1, 2, NA), c(NA, 1, 3, 1, 1, 1),
c(1, 3, 1, 3, 1, 1), c(NA, 1, 3, 1, 4, 1), c(NA, 1, 2, 1, 3, NA), c(2, NA, 2, 3, 1, NA),
c(NA, 1, 4, 1, 3, NA), c(1, NA, 1, 2, 2, NA), c(1, NA, 1, 2, 1, 2),

c(NA, 2, 1, 2, 3, NA), c(1, NA, 1, 2, 2, 2), c(2, NA, 2, 3, 1, 3), c(NA, 2, 1, 2, 3, 1),
c(NA, 2, 1, 2, 3, 3), c(2, 1, 2, 2, 3, NA), c(NA, 1, 2, 1, 3, 1),
c(1, 4, 1, 2, 1, 1), c(1, 3, 1, 2, 2, 1), c(NA, 1, 4, 1, 3, 1),

c(2, NA, 3, 3, 1, NA), c(NA, 1, 2, 2, 3, NA), c(1, NA, 3, 3, 3, NA), c(NA, 1, 4, 2, 3, NA),
c(1, 2, 2, 2, 2, NA), c(1, 1, 2, 2, 1, 1), c(NA, 1, 1, 2, 3, 1),
c(2, 4, 3, 3, 1, NA), c(1, 2, 2, 2, 1, NA), c(NA, 1, 2, 2, 3, 1),

c(1, NA, 2, 2, 3, 1), c(NA, 1, 5, 2, 3, 1), c(1, NA, 2, 2, 3, 3),

c(1, 3, 1, 2, 1, 3), c(NA, 2, 1, 2, 2, 2), c(1, NA, 2, 2, 1, 3), c(NA, 3, 1, 3, 3, 3), c(1, 3, 1, 1, 1, 3), #9 etc
c(1, 3, 1, 3, 1, 3), c(NA, 1, 1, 1, 1, 1), c(1, NA, 1, 2, 2, 3), c(2, 1, 2, 1, 1, NA), c(NA, 2, 1, 2, 2, 1),

c(3, NA, 3, 4, 1, NA), c(NA, 1, 1, 1, 3, 1), c(NA, 3, NA, 3, 5, 1), c(3, NA, 3, 2, 1, NA), c(NA, 3, NA, 3, 3, 1), c(2, 1, 2, 4, NA, NA), c(NA, 1, 3, 1, 5, 1), c(NA, NA, 1, 1, 2, 3), #11

c(1, 1, 2, 3, 1, 3), c(NA, 3, NA, 4, 3, 1), #M11

c(3, NA, 3, 3, 1, 1), c(NA, 1, 1, 1, 2, 1), c(3, NA, 3, 3, 1, NA), c(4, NA, 1, 3, 2, NA), c(NA, 3, NA, 3, 4, 1), #m11

c(1, 3, 1, 2, 3, 1), c(NA, 2, 1, 2, 2, 4), c(1, NA, 1, 2, 3, 3), #13

c(1, NA, 2, 2, 3, 3), c(2, 1, 1, 1, 2, 1), c(4, NA, 5, 3, 1, 1), c(NA, 1, NA, 2, 3, 3), c(NA, 4, 3, 3, 1, NA), #M13

c(1, 3, 1, 1, 3, 1), c(1, 3, 1, 1, 3, 3), c(NA, 1, 3, 1, 2, 3), #m13

c(1, 3, 1, 3, 3, 1), c(1, 2, 1, 2, 3, 1), c(1, 2, 1, 2, 3, 1), c(1, 4, 1, 2, 3, 1) #13 etc
)

id <- c(rep("M", 5), rep("m", 5), rep("7", 5),
rep("M7", 5), rep("m7", 5), "m7_5", "m7_5", "aug", "aug7", "dim", "dim7",
"sus2", "sus4", "sus4", "add2", "add2", "madd2", "madd2", "madd2", "madd4", "madd4", "m6",
"m6", "m_6", "6", "6", "m6add9", "m6add9", "6add9", "6add9", "m7_9", "m7#5", "m7#5",
"mM7", "mM7", "7sus2", "7sus2", "7sus4", "7sus4", "7_5", "7_5", "7#5", "7#5", "7_9",
"7#9", "7_9#5", "7_9_5", "7#9_5", "7#9_13", "7#9_13", "7#11", "7_13", "7_13", "7_13",
"M7_5", "M7_5", "M7#5", "M7#5", "M7#5#11", "M711", "M711", "M7#11", "M7#11", "M7#11",
"M713", "M713", "M7913",
"9", "9", "M9", "m9", "m9", "9sus4", "9sus4", "9#5", "9#11", "9#11",
"11", "11", "11", "11", "11", "11", "11", "11",
"M11", "M11",
"m11", "m11", "m11", "m11", "m11",
"13", "13", "13",
"M13", "M13", "M13", "M13", "M13",
"m13", "m13", "m13",
"13sus4", "13_5", "13#11", "13#5")

opt <- list(c(2, 6), 6, 6, NA, NA, c(2, 6), 6, NA, NA, NA, c(2, 6), 6, 6, NA, NA,
c(2, 6), 6, 6, NA, NA, c(2, 6), 6, NA, NA, NA, NA, NA, NA, NA, NA, NA,
6, c(2, 5, 6), NA, 6, 6, c(2, 6), 2, 6, 6, 6, NA,
NA, NA, NA, NA, NA, NA, c(5, 6), 6, NA, NA, NA,
NA, NA, NA, 6, c(2, 5, 6), 6, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, 6, 6, NA,
NA, NA, NA, NA, NA, 6, 6, NA, NA, NA,
6, 6, NA,
2, 6, NA, 6, 2, 2, 6, NA, NA, NA,
NA, 6, NA, NA, NA, NA, NA, NA,
NA, NA,
6, 6, NA, NA, NA,
c(2, 6), NA, 6,
6, NA, NA, NA, NA,
c(2, 6), c(2, 6), 3,
c(2, 6), 6, 6, 6)

chordData2 <- tibble(id = id, frets = frets, opt = opt)
30 changes: 30 additions & 0 deletions data-raw/chords.R
@@ -0,0 +1,30 @@
library(dplyr)
library(tabr)
source("data-raw/chord_input1.R")
source("data-raw/chord_input2.R")

f <- function(x, d, key){
purrr::map_dfr(seq_along(d$frets), ~chord_def(d$frets[[.x]] + x, d$id[.x], d$opt[[.x]], key = key))
}

guitarChords <- bind_rows(
purrr::map_dfr(-1:11, ~f(.x, chordData1, "g")),
purrr::map_dfr(-1:11, ~f(.x, chordData1, "f")),
purrr::map_dfr(-1:11, ~f(.x, chordData2, "g")),
purrr::map_dfr(-1:11, ~f(.x, chordData2, "f"))
) %>% select(-optional) %>% filter(!duplicated(.))

id_levels <- c("M", "m", "7", "M7", "m7",
"sus2", "sus4", "aug", "aug7", "dim", "dim7", "7_5", "7#5", "M7_5", "M7#5", "m7_5", "m7#5",
"9", "M9", "m9", "add9","9sus4", "9#5",
"6", "m6", "m_6", "6add9", "m6add9",
"add2", "madd2", "madd4",
"mM7",
"7sus2", "7sus4", "7_9", "7#9", "m7_9", "7_9_5", "7_9#5", "7#9_5",
"7#9_13", "7#11", "7_13", "M7#5#11", "M711", "M7#11", "M713", "M7913",
"9#11", "11", "M11", "m11", "13", "M13", "m13", "13sus4", "13_5", "13#5", "13#11")

guitarChords <- mutate(guitarChords, id = factor(id, levels = id_levels)) %>%
arrange(root, octave, root_fret, id)

usethis::use_data(guitarChords, overwrite = TRUE)
Binary file added data/guitarChords.rda
Binary file not shown.

0 comments on commit e48cdbb

Please sign in to comment.