outro_rails 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2012) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +295 -0
  4. data/Rakefile +6 -0
  5. data/app/assets/images/outro_rails/add.svg +1 -0
  6. data/app/assets/images/outro_rails/capo.svg +18 -0
  7. data/app/assets/images/outro_rails/check.svg +1 -0
  8. data/app/assets/images/outro_rails/circle.svg +15 -0
  9. data/app/assets/images/outro_rails/clear.svg +1 -0
  10. data/app/assets/images/outro_rails/edit.svg +1 -0
  11. data/app/assets/images/outro_rails/filter.svg +1 -0
  12. data/app/assets/images/outro_rails/guitar.svg +1 -0
  13. data/app/assets/images/outro_rails/instruments.svg +2 -0
  14. data/app/assets/images/outro_rails/library.svg +7 -0
  15. data/app/assets/images/outro_rails/music.svg +1 -0
  16. data/app/assets/images/outro_rails/piano.svg +4 -0
  17. data/app/assets/images/outro_rails/save.svg +1 -0
  18. data/app/assets/images/outro_rails/scales.svg +2 -0
  19. data/app/assets/images/outro_rails/search.svg +1 -0
  20. data/app/assets/images/outro_rails/shapes.svg +1 -0
  21. data/app/assets/images/outro_rails/transposer.svg +2 -0
  22. data/app/assets/images/outro_rails/undo.svg +1 -0
  23. data/app/assets/javascripts/outro_rails/outro_rails.js +451 -0
  24. data/app/assets/stylesheets/outro_rails/outro_rails.css +1260 -0
  25. data/app/controllers/concerns/outro_rails/guitar_tuning_selectable.rb +17 -0
  26. data/app/controllers/concerns/outro_rails/instrument_selectable.rb +15 -0
  27. data/app/controllers/concerns/outro_rails/invalid_params_redirectable.rb +29 -0
  28. data/app/controllers/concerns/outro_rails/root_selectable.rb +19 -0
  29. data/app/controllers/outro_rails/application_controller.rb +6 -0
  30. data/app/controllers/outro_rails/caged/pickers_controller.rb +16 -0
  31. data/app/controllers/outro_rails/caged_controller.rb +57 -0
  32. data/app/controllers/outro_rails/capo_controller.rb +14 -0
  33. data/app/controllers/outro_rails/chord_charts/voicings_controller.rb +109 -0
  34. data/app/controllers/outro_rails/chord_voicings_controller.rb +12 -0
  35. data/app/controllers/outro_rails/chords/pickers_controller.rb +32 -0
  36. data/app/controllers/outro_rails/chords_controller.rb +61 -0
  37. data/app/controllers/outro_rails/circle_of_fifths_controller.rb +38 -0
  38. data/app/controllers/outro_rails/home_controller.rb +8 -0
  39. data/app/controllers/outro_rails/instruments/pickers_controller.rb +21 -0
  40. data/app/controllers/outro_rails/instruments_controller.rb +24 -0
  41. data/app/controllers/outro_rails/scales/pickers_controller.rb +27 -0
  42. data/app/controllers/outro_rails/scales_controller.rb +58 -0
  43. data/app/controllers/outro_rails/transposer_controller.rb +33 -0
  44. data/app/helpers/outro_rails/application_helper.rb +7 -0
  45. data/app/helpers/outro_rails/capo_helper.rb +9 -0
  46. data/app/helpers/outro_rails/chord_charts_helper.rb +51 -0
  47. data/app/helpers/outro_rails/chords_helper.rb +30 -0
  48. data/app/helpers/outro_rails/circle_of_fifths_helper.rb +44 -0
  49. data/app/helpers/outro_rails/instruments_helper.rb +41 -0
  50. data/app/helpers/outro_rails/scales_helper.rb +34 -0
  51. data/app/helpers/outro_rails/transposer_helper.rb +27 -0
  52. data/app/jobs/outro_rails/application_job.rb +4 -0
  53. data/app/mailers/outro_rails/application_mailer.rb +6 -0
  54. data/app/models/outro_rails/application_record.rb +7 -0
  55. data/app/models/outro_rails/chord.rb +85 -0
  56. data/app/models/outro_rails/chord_chart/voicing.rb +54 -0
  57. data/app/models/outro_rails/chord_chart.rb +106 -0
  58. data/app/models/outro_rails/chord_voicing.rb +45 -0
  59. data/app/views/layouts/outro_rails/application.html.erb +29 -0
  60. data/app/views/outro_rails/caged/show.html.erb +78 -0
  61. data/app/views/outro_rails/capo/show.html.erb +62 -0
  62. data/app/views/outro_rails/chord_charts/_chart.html.erb +286 -0
  63. data/app/views/outro_rails/chord_charts/_fields.html.erb +50 -0
  64. data/app/views/outro_rails/chord_voicings/_chord_voicing.html.erb +41 -0
  65. data/app/views/outro_rails/chord_voicings/_figure.html.erb +37 -0
  66. data/app/views/outro_rails/chord_voicings/_guitar.html.erb +13 -0
  67. data/app/views/outro_rails/chord_voicings/_piano.html.erb +17 -0
  68. data/app/views/outro_rails/chord_voicings/show.html.erb +17 -0
  69. data/app/views/outro_rails/chords/_chord.html.erb +50 -0
  70. data/app/views/outro_rails/chords/_chords.html.erb +29 -0
  71. data/app/views/outro_rails/chords/_filter.html.erb +87 -0
  72. data/app/views/outro_rails/chords/index.html.erb +31 -0
  73. data/app/views/outro_rails/chords/show.html.erb +24 -0
  74. data/app/views/outro_rails/circle_of_fifths/_wheel.html.erb +64 -0
  75. data/app/views/outro_rails/circle_of_fifths/show.html.erb +95 -0
  76. data/app/views/outro_rails/home/index.html.erb +75 -0
  77. data/app/views/outro_rails/instruments/_guitar.html.erb +37 -0
  78. data/app/views/outro_rails/instruments/_guitar_figure.html.erb +145 -0
  79. data/app/views/outro_rails/instruments/_guitar_midi.html.erb +137 -0
  80. data/app/views/outro_rails/instruments/_piano.html.erb +9 -0
  81. data/app/views/outro_rails/instruments/_piano_figure.html.erb +82 -0
  82. data/app/views/outro_rails/instruments/_piano_midi.html.erb +74 -0
  83. data/app/views/outro_rails/instruments/index.html.erb +50 -0
  84. data/app/views/outro_rails/instruments/show.html.erb +31 -0
  85. data/app/views/outro_rails/scales/_chords_table.html.erb +39 -0
  86. data/app/views/outro_rails/scales/_picker.html.erb +37 -0
  87. data/app/views/outro_rails/scales/_related_scales.html.erb +65 -0
  88. data/app/views/outro_rails/scales/index.html.erb +52 -0
  89. data/app/views/outro_rails/scales/show.html.erb +102 -0
  90. data/app/views/outro_rails/shared/_breadcrumb.html.erb +31 -0
  91. data/app/views/outro_rails/shared/_header.html.erb +12 -0
  92. data/app/views/outro_rails/transposer/show.html.erb +85 -0
  93. data/config/routes.rb +68 -0
  94. data/db/migrate/20260702141708_create_outro_rails_chords.rb +21 -0
  95. data/db/migrate/20260702141728_create_outro_rails_chord_voicings.rb +23 -0
  96. data/db/migrate/20260815090000_create_outro_rails_chord_charts.rb +23 -0
  97. data/db/migrate/20260815090100_create_outro_rails_chord_chart_voicing_selections.rb +30 -0
  98. data/db/seeds/chord_voicings/a/a-guitar.yml +71 -0
  99. data/db/seeds/chord_voicings/a/a-piano.yml +32 -0
  100. data/db/seeds/chord_voicings/a/a11-guitar.yml +11 -0
  101. data/db/seeds/chord_voicings/a/a11-piano.yml +71 -0
  102. data/db/seeds/chord_voicings/a/a13-guitar.yml +11 -0
  103. data/db/seeds/chord_voicings/a/a13-piano.yml +71 -0
  104. data/db/seeds/chord_voicings/a/a13flat9-guitar.yml +11 -0
  105. data/db/seeds/chord_voicings/a/a13flat9-piano.yml +71 -0
  106. data/db/seeds/chord_voicings/a/a13sharp11-guitar.yml +11 -0
  107. data/db/seeds/chord_voicings/a/a13sharp11-piano.yml +83 -0
  108. data/db/seeds/chord_voicings/a/a13sharp9-guitar.yml +11 -0
  109. data/db/seeds/chord_voicings/a/a13sharp9-piano.yml +71 -0
  110. data/db/seeds/chord_voicings/a/a13sus4-guitar.yml +11 -0
  111. data/db/seeds/chord_voicings/a/a13sus4-piano.yml +71 -0
  112. data/db/seeds/chord_voicings/a/a5-guitar.yml +23 -0
  113. data/db/seeds/chord_voicings/a/a5-piano.yml +21 -0
  114. data/db/seeds/chord_voicings/a/a6-guitar.yml +83 -0
  115. data/db/seeds/chord_voicings/a/a6-piano.yml +43 -0
  116. data/db/seeds/chord_voicings/a/a7-guitar.yml +83 -0
  117. data/db/seeds/chord_voicings/a/a7-piano.yml +43 -0
  118. data/db/seeds/chord_voicings/a/a7flat13-guitar.yml +11 -0
  119. data/db/seeds/chord_voicings/a/a7flat13-piano.yml +54 -0
  120. data/db/seeds/chord_voicings/a/a7flat5-guitar.yml +11 -0
  121. data/db/seeds/chord_voicings/a/a7flat5-piano.yml +43 -0
  122. data/db/seeds/chord_voicings/a/a7flat5flat9-guitar.yml +11 -0
  123. data/db/seeds/chord_voicings/a/a7flat5flat9-piano.yml +54 -0
  124. data/db/seeds/chord_voicings/a/a7flat5sharp9-guitar.yml +11 -0
  125. data/db/seeds/chord_voicings/a/a7flat5sharp9-piano.yml +54 -0
  126. data/db/seeds/chord_voicings/a/a7flat9-guitar.yml +11 -0
  127. data/db/seeds/chord_voicings/a/a7flat9-piano.yml +54 -0
  128. data/db/seeds/chord_voicings/a/a7flat9flat13-guitar.yml +11 -0
  129. data/db/seeds/chord_voicings/a/a7flat9flat13-piano.yml +65 -0
  130. data/db/seeds/chord_voicings/a/a7flat9sharp11-guitar.yml +11 -0
  131. data/db/seeds/chord_voicings/a/a7flat9sharp11-piano.yml +65 -0
  132. data/db/seeds/chord_voicings/a/a7sharp11-guitar.yml +11 -0
  133. data/db/seeds/chord_voicings/a/a7sharp11-piano.yml +54 -0
  134. data/db/seeds/chord_voicings/a/a7sharp5-guitar.yml +11 -0
  135. data/db/seeds/chord_voicings/a/a7sharp5-piano.yml +43 -0
  136. data/db/seeds/chord_voicings/a/a7sharp5flat9-guitar.yml +11 -0
  137. data/db/seeds/chord_voicings/a/a7sharp5flat9-piano.yml +54 -0
  138. data/db/seeds/chord_voicings/a/a7sharp5sharp9-guitar.yml +11 -0
  139. data/db/seeds/chord_voicings/a/a7sharp5sharp9-piano.yml +54 -0
  140. data/db/seeds/chord_voicings/a/a7sharp9-guitar.yml +11 -0
  141. data/db/seeds/chord_voicings/a/a7sharp9-piano.yml +54 -0
  142. data/db/seeds/chord_voicings/a/a7sharp9flat13-guitar.yml +11 -0
  143. data/db/seeds/chord_voicings/a/a7sharp9flat13-piano.yml +65 -0
  144. data/db/seeds/chord_voicings/a/a7sus2-guitar.yml +47 -0
  145. data/db/seeds/chord_voicings/a/a7sus2-piano.yml +43 -0
  146. data/db/seeds/chord_voicings/a/a7sus4-guitar.yml +59 -0
  147. data/db/seeds/chord_voicings/a/a7sus4-piano.yml +43 -0
  148. data/db/seeds/chord_voicings/a/a9-guitar.yml +11 -0
  149. data/db/seeds/chord_voicings/a/a9-piano.yml +54 -0
  150. data/db/seeds/chord_voicings/a/a9flat13-guitar.yml +11 -0
  151. data/db/seeds/chord_voicings/a/a9flat13-piano.yml +65 -0
  152. data/db/seeds/chord_voicings/a/a9sharp11-guitar.yml +11 -0
  153. data/db/seeds/chord_voicings/a/a9sharp11-piano.yml +65 -0
  154. data/db/seeds/chord_voicings/a/a9sus4-guitar.yml +11 -0
  155. data/db/seeds/chord_voicings/a/a9sus4-piano.yml +54 -0
  156. data/db/seeds/chord_voicings/a/aadd11-guitar.yml +11 -0
  157. data/db/seeds/chord_voicings/a/aadd11-piano.yml +43 -0
  158. data/db/seeds/chord_voicings/a/aadd13-guitar.yml +11 -0
  159. data/db/seeds/chord_voicings/a/aadd13-piano.yml +43 -0
  160. data/db/seeds/chord_voicings/a/aadd2-guitar.yml +11 -0
  161. data/db/seeds/chord_voicings/a/aadd2-piano.yml +43 -0
  162. data/db/seeds/chord_voicings/a/aadd4-guitar.yml +11 -0
  163. data/db/seeds/chord_voicings/a/aadd4-piano.yml +43 -0
  164. data/db/seeds/chord_voicings/a/aadd9-guitar.yml +11 -0
  165. data/db/seeds/chord_voicings/a/aadd9-piano.yml +43 -0
  166. data/db/seeds/chord_voicings/a/aaug-guitar.yml +35 -0
  167. data/db/seeds/chord_voicings/a/aaug-piano.yml +32 -0
  168. data/db/seeds/chord_voicings/a/adim-guitar.yml +23 -0
  169. data/db/seeds/chord_voicings/a/adim-piano.yml +32 -0
  170. data/db/seeds/chord_voicings/a/adim7-guitar.yml +23 -0
  171. data/db/seeds/chord_voicings/a/adim7-piano.yml +43 -0
  172. data/db/seeds/chord_voicings/a/am-guitar.yml +47 -0
  173. data/db/seeds/chord_voicings/a/am-maj7-guitar.yml +47 -0
  174. data/db/seeds/chord_voicings/a/am-maj7-piano.yml +43 -0
  175. data/db/seeds/chord_voicings/a/am-piano.yml +32 -0
  176. data/db/seeds/chord_voicings/a/am11-guitar.yml +11 -0
  177. data/db/seeds/chord_voicings/a/am11-piano.yml +71 -0
  178. data/db/seeds/chord_voicings/a/am13-guitar.yml +11 -0
  179. data/db/seeds/chord_voicings/a/am13-piano.yml +71 -0
  180. data/db/seeds/chord_voicings/a/am6-guitar.yml +59 -0
  181. data/db/seeds/chord_voicings/a/am6-piano.yml +43 -0
  182. data/db/seeds/chord_voicings/a/am7-guitar.yml +59 -0
  183. data/db/seeds/chord_voicings/a/am7-piano.yml +43 -0
  184. data/db/seeds/chord_voicings/a/am7add11-guitar.yml +11 -0
  185. data/db/seeds/chord_voicings/a/am7add11-piano.yml +54 -0
  186. data/db/seeds/chord_voicings/a/am7flat5-guitar.yml +35 -0
  187. data/db/seeds/chord_voicings/a/am7flat5-piano.yml +43 -0
  188. data/db/seeds/chord_voicings/a/am9-guitar.yml +11 -0
  189. data/db/seeds/chord_voicings/a/am9-piano.yml +54 -0
  190. data/db/seeds/chord_voicings/a/amadd11-guitar.yml +11 -0
  191. data/db/seeds/chord_voicings/a/amadd11-piano.yml +43 -0
  192. data/db/seeds/chord_voicings/a/amadd13-guitar.yml +11 -0
  193. data/db/seeds/chord_voicings/a/amadd13-piano.yml +43 -0
  194. data/db/seeds/chord_voicings/a/amadd2-guitar.yml +11 -0
  195. data/db/seeds/chord_voicings/a/amadd2-piano.yml +43 -0
  196. data/db/seeds/chord_voicings/a/amadd4-guitar.yml +11 -0
  197. data/db/seeds/chord_voicings/a/amadd4-piano.yml +43 -0
  198. data/db/seeds/chord_voicings/a/amadd9-guitar.yml +11 -0
  199. data/db/seeds/chord_voicings/a/amadd9-piano.yml +43 -0
  200. data/db/seeds/chord_voicings/a/amaj7-guitar.yml +71 -0
  201. data/db/seeds/chord_voicings/a/amaj7-piano.yml +43 -0
  202. data/db/seeds/chord_voicings/a/amaj7sharp5-guitar.yml +35 -0
  203. data/db/seeds/chord_voicings/a/amaj7sharp5-piano.yml +43 -0
  204. data/db/seeds/chord_voicings/a/asus2-guitar.yml +35 -0
  205. data/db/seeds/chord_voicings/a/asus2-piano.yml +32 -0
  206. data/db/seeds/chord_voicings/a/asus4-guitar.yml +47 -0
  207. data/db/seeds/chord_voicings/a/asus4-piano.yml +32 -0
  208. data/db/seeds/chord_voicings/a-flat/aflat-guitar.yml +59 -0
  209. data/db/seeds/chord_voicings/a-flat/aflat-piano.yml +32 -0
  210. data/db/seeds/chord_voicings/a-flat/aflat11-guitar.yml +11 -0
  211. data/db/seeds/chord_voicings/a-flat/aflat11-piano.yml +71 -0
  212. data/db/seeds/chord_voicings/a-flat/aflat13-guitar.yml +11 -0
  213. data/db/seeds/chord_voicings/a-flat/aflat13-piano.yml +71 -0
  214. data/db/seeds/chord_voicings/a-flat/aflat13flat9-guitar.yml +11 -0
  215. data/db/seeds/chord_voicings/a-flat/aflat13flat9-piano.yml +71 -0
  216. data/db/seeds/chord_voicings/a-flat/aflat13sharp11-guitar.yml +11 -0
  217. data/db/seeds/chord_voicings/a-flat/aflat13sharp11-piano.yml +83 -0
  218. data/db/seeds/chord_voicings/a-flat/aflat13sharp9-guitar.yml +11 -0
  219. data/db/seeds/chord_voicings/a-flat/aflat13sharp9-piano.yml +71 -0
  220. data/db/seeds/chord_voicings/a-flat/aflat13sus4-guitar.yml +11 -0
  221. data/db/seeds/chord_voicings/a-flat/aflat13sus4-piano.yml +71 -0
  222. data/db/seeds/chord_voicings/a-flat/aflat5-guitar.yml +23 -0
  223. data/db/seeds/chord_voicings/a-flat/aflat5-piano.yml +21 -0
  224. data/db/seeds/chord_voicings/a-flat/aflat6-guitar.yml +59 -0
  225. data/db/seeds/chord_voicings/a-flat/aflat6-piano.yml +43 -0
  226. data/db/seeds/chord_voicings/a-flat/aflat7-guitar.yml +59 -0
  227. data/db/seeds/chord_voicings/a-flat/aflat7-piano.yml +43 -0
  228. data/db/seeds/chord_voicings/a-flat/aflat7flat13-guitar.yml +11 -0
  229. data/db/seeds/chord_voicings/a-flat/aflat7flat13-piano.yml +54 -0
  230. data/db/seeds/chord_voicings/a-flat/aflat7flat5-guitar.yml +11 -0
  231. data/db/seeds/chord_voicings/a-flat/aflat7flat5-piano.yml +43 -0
  232. data/db/seeds/chord_voicings/a-flat/aflat7flat5flat9-guitar.yml +11 -0
  233. data/db/seeds/chord_voicings/a-flat/aflat7flat5flat9-piano.yml +54 -0
  234. data/db/seeds/chord_voicings/a-flat/aflat7flat5sharp9-guitar.yml +11 -0
  235. data/db/seeds/chord_voicings/a-flat/aflat7flat5sharp9-piano.yml +54 -0
  236. data/db/seeds/chord_voicings/a-flat/aflat7flat9-guitar.yml +11 -0
  237. data/db/seeds/chord_voicings/a-flat/aflat7flat9-piano.yml +54 -0
  238. data/db/seeds/chord_voicings/a-flat/aflat7flat9flat13-guitar.yml +11 -0
  239. data/db/seeds/chord_voicings/a-flat/aflat7flat9flat13-piano.yml +65 -0
  240. data/db/seeds/chord_voicings/a-flat/aflat7flat9sharp11-guitar.yml +11 -0
  241. data/db/seeds/chord_voicings/a-flat/aflat7flat9sharp11-piano.yml +65 -0
  242. data/db/seeds/chord_voicings/a-flat/aflat7sharp11-guitar.yml +11 -0
  243. data/db/seeds/chord_voicings/a-flat/aflat7sharp11-piano.yml +54 -0
  244. data/db/seeds/chord_voicings/a-flat/aflat7sharp5-guitar.yml +11 -0
  245. data/db/seeds/chord_voicings/a-flat/aflat7sharp5-piano.yml +43 -0
  246. data/db/seeds/chord_voicings/a-flat/aflat7sharp5flat9-guitar.yml +11 -0
  247. data/db/seeds/chord_voicings/a-flat/aflat7sharp5flat9-piano.yml +54 -0
  248. data/db/seeds/chord_voicings/a-flat/aflat7sharp5sharp9-guitar.yml +11 -0
  249. data/db/seeds/chord_voicings/a-flat/aflat7sharp5sharp9-piano.yml +54 -0
  250. data/db/seeds/chord_voicings/a-flat/aflat7sharp9-guitar.yml +11 -0
  251. data/db/seeds/chord_voicings/a-flat/aflat7sharp9-piano.yml +54 -0
  252. data/db/seeds/chord_voicings/a-flat/aflat7sharp9flat13-guitar.yml +11 -0
  253. data/db/seeds/chord_voicings/a-flat/aflat7sharp9flat13-piano.yml +65 -0
  254. data/db/seeds/chord_voicings/a-flat/aflat7sus2-guitar.yml +23 -0
  255. data/db/seeds/chord_voicings/a-flat/aflat7sus2-piano.yml +43 -0
  256. data/db/seeds/chord_voicings/a-flat/aflat7sus4-guitar.yml +35 -0
  257. data/db/seeds/chord_voicings/a-flat/aflat7sus4-piano.yml +43 -0
  258. data/db/seeds/chord_voicings/a-flat/aflat9-guitar.yml +11 -0
  259. data/db/seeds/chord_voicings/a-flat/aflat9-piano.yml +54 -0
  260. data/db/seeds/chord_voicings/a-flat/aflat9flat13-guitar.yml +11 -0
  261. data/db/seeds/chord_voicings/a-flat/aflat9flat13-piano.yml +65 -0
  262. data/db/seeds/chord_voicings/a-flat/aflat9sharp11-guitar.yml +11 -0
  263. data/db/seeds/chord_voicings/a-flat/aflat9sharp11-piano.yml +65 -0
  264. data/db/seeds/chord_voicings/a-flat/aflat9sus4-guitar.yml +11 -0
  265. data/db/seeds/chord_voicings/a-flat/aflat9sus4-piano.yml +54 -0
  266. data/db/seeds/chord_voicings/a-flat/aflatadd11-guitar.yml +11 -0
  267. data/db/seeds/chord_voicings/a-flat/aflatadd11-piano.yml +43 -0
  268. data/db/seeds/chord_voicings/a-flat/aflatadd13-guitar.yml +11 -0
  269. data/db/seeds/chord_voicings/a-flat/aflatadd13-piano.yml +43 -0
  270. data/db/seeds/chord_voicings/a-flat/aflatadd2-guitar.yml +11 -0
  271. data/db/seeds/chord_voicings/a-flat/aflatadd2-piano.yml +43 -0
  272. data/db/seeds/chord_voicings/a-flat/aflatadd4-guitar.yml +11 -0
  273. data/db/seeds/chord_voicings/a-flat/aflatadd4-piano.yml +43 -0
  274. data/db/seeds/chord_voicings/a-flat/aflatadd9-guitar.yml +11 -0
  275. data/db/seeds/chord_voicings/a-flat/aflatadd9-piano.yml +43 -0
  276. data/db/seeds/chord_voicings/a-flat/aflataug-guitar.yml +23 -0
  277. data/db/seeds/chord_voicings/a-flat/aflataug-piano.yml +32 -0
  278. data/db/seeds/chord_voicings/a-flat/aflatdim-guitar.yml +23 -0
  279. data/db/seeds/chord_voicings/a-flat/aflatdim-piano.yml +32 -0
  280. data/db/seeds/chord_voicings/a-flat/aflatdim7-guitar.yml +23 -0
  281. data/db/seeds/chord_voicings/a-flat/aflatdim7-piano.yml +43 -0
  282. data/db/seeds/chord_voicings/a-flat/aflatm-guitar.yml +35 -0
  283. data/db/seeds/chord_voicings/a-flat/aflatm-maj7-guitar.yml +35 -0
  284. data/db/seeds/chord_voicings/a-flat/aflatm-maj7-piano.yml +43 -0
  285. data/db/seeds/chord_voicings/a-flat/aflatm-piano.yml +32 -0
  286. data/db/seeds/chord_voicings/a-flat/aflatm11-guitar.yml +11 -0
  287. data/db/seeds/chord_voicings/a-flat/aflatm11-piano.yml +71 -0
  288. data/db/seeds/chord_voicings/a-flat/aflatm13-guitar.yml +11 -0
  289. data/db/seeds/chord_voicings/a-flat/aflatm13-piano.yml +71 -0
  290. data/db/seeds/chord_voicings/a-flat/aflatm6-guitar.yml +35 -0
  291. data/db/seeds/chord_voicings/a-flat/aflatm6-piano.yml +43 -0
  292. data/db/seeds/chord_voicings/a-flat/aflatm7-guitar.yml +35 -0
  293. data/db/seeds/chord_voicings/a-flat/aflatm7-piano.yml +43 -0
  294. data/db/seeds/chord_voicings/a-flat/aflatm7add11-guitar.yml +11 -0
  295. data/db/seeds/chord_voicings/a-flat/aflatm7add11-piano.yml +54 -0
  296. data/db/seeds/chord_voicings/a-flat/aflatm7flat5-guitar.yml +23 -0
  297. data/db/seeds/chord_voicings/a-flat/aflatm7flat5-piano.yml +43 -0
  298. data/db/seeds/chord_voicings/a-flat/aflatm9-guitar.yml +11 -0
  299. data/db/seeds/chord_voicings/a-flat/aflatm9-piano.yml +54 -0
  300. data/db/seeds/chord_voicings/a-flat/aflatmadd11-guitar.yml +11 -0
  301. data/db/seeds/chord_voicings/a-flat/aflatmadd11-piano.yml +43 -0
  302. data/db/seeds/chord_voicings/a-flat/aflatmadd13-guitar.yml +11 -0
  303. data/db/seeds/chord_voicings/a-flat/aflatmadd13-piano.yml +43 -0
  304. data/db/seeds/chord_voicings/a-flat/aflatmadd2-guitar.yml +11 -0
  305. data/db/seeds/chord_voicings/a-flat/aflatmadd2-piano.yml +43 -0
  306. data/db/seeds/chord_voicings/a-flat/aflatmadd4-guitar.yml +11 -0
  307. data/db/seeds/chord_voicings/a-flat/aflatmadd4-piano.yml +43 -0
  308. data/db/seeds/chord_voicings/a-flat/aflatmadd9-guitar.yml +11 -0
  309. data/db/seeds/chord_voicings/a-flat/aflatmadd9-piano.yml +43 -0
  310. data/db/seeds/chord_voicings/a-flat/aflatmaj7-guitar.yml +59 -0
  311. data/db/seeds/chord_voicings/a-flat/aflatmaj7-piano.yml +43 -0
  312. data/db/seeds/chord_voicings/a-flat/aflatmaj7sharp5-guitar.yml +23 -0
  313. data/db/seeds/chord_voicings/a-flat/aflatmaj7sharp5-piano.yml +43 -0
  314. data/db/seeds/chord_voicings/a-flat/aflatsus2-guitar.yml +23 -0
  315. data/db/seeds/chord_voicings/a-flat/aflatsus2-piano.yml +32 -0
  316. data/db/seeds/chord_voicings/a-flat/aflatsus4-guitar.yml +35 -0
  317. data/db/seeds/chord_voicings/a-flat/aflatsus4-piano.yml +32 -0
  318. data/db/seeds/chord_voicings/a-sharp/asharp-guitar.yml +59 -0
  319. data/db/seeds/chord_voicings/a-sharp/asharp-piano.yml +32 -0
  320. data/db/seeds/chord_voicings/a-sharp/asharp11-guitar.yml +11 -0
  321. data/db/seeds/chord_voicings/a-sharp/asharp11-piano.yml +71 -0
  322. data/db/seeds/chord_voicings/a-sharp/asharp13-guitar.yml +11 -0
  323. data/db/seeds/chord_voicings/a-sharp/asharp13-piano.yml +71 -0
  324. data/db/seeds/chord_voicings/a-sharp/asharp13flat9-guitar.yml +11 -0
  325. data/db/seeds/chord_voicings/a-sharp/asharp13flat9-piano.yml +71 -0
  326. data/db/seeds/chord_voicings/a-sharp/asharp13sharp11-guitar.yml +11 -0
  327. data/db/seeds/chord_voicings/a-sharp/asharp13sharp11-piano.yml +83 -0
  328. data/db/seeds/chord_voicings/a-sharp/asharp13sharp9-guitar.yml +11 -0
  329. data/db/seeds/chord_voicings/a-sharp/asharp13sharp9-piano.yml +71 -0
  330. data/db/seeds/chord_voicings/a-sharp/asharp13sus4-guitar.yml +11 -0
  331. data/db/seeds/chord_voicings/a-sharp/asharp13sus4-piano.yml +71 -0
  332. data/db/seeds/chord_voicings/a-sharp/asharp5-guitar.yml +23 -0
  333. data/db/seeds/chord_voicings/a-sharp/asharp5-piano.yml +21 -0
  334. data/db/seeds/chord_voicings/a-sharp/asharp6-guitar.yml +59 -0
  335. data/db/seeds/chord_voicings/a-sharp/asharp6-piano.yml +43 -0
  336. data/db/seeds/chord_voicings/a-sharp/asharp7-guitar.yml +59 -0
  337. data/db/seeds/chord_voicings/a-sharp/asharp7-piano.yml +43 -0
  338. data/db/seeds/chord_voicings/a-sharp/asharp7flat13-guitar.yml +11 -0
  339. data/db/seeds/chord_voicings/a-sharp/asharp7flat13-piano.yml +54 -0
  340. data/db/seeds/chord_voicings/a-sharp/asharp7flat5-guitar.yml +11 -0
  341. data/db/seeds/chord_voicings/a-sharp/asharp7flat5-piano.yml +43 -0
  342. data/db/seeds/chord_voicings/a-sharp/asharp7flat5flat9-guitar.yml +11 -0
  343. data/db/seeds/chord_voicings/a-sharp/asharp7flat5flat9-piano.yml +54 -0
  344. data/db/seeds/chord_voicings/a-sharp/asharp7flat5sharp9-guitar.yml +11 -0
  345. data/db/seeds/chord_voicings/a-sharp/asharp7flat5sharp9-piano.yml +54 -0
  346. data/db/seeds/chord_voicings/a-sharp/asharp7flat9-guitar.yml +11 -0
  347. data/db/seeds/chord_voicings/a-sharp/asharp7flat9-piano.yml +54 -0
  348. data/db/seeds/chord_voicings/a-sharp/asharp7flat9flat13-guitar.yml +11 -0
  349. data/db/seeds/chord_voicings/a-sharp/asharp7flat9flat13-piano.yml +65 -0
  350. data/db/seeds/chord_voicings/a-sharp/asharp7flat9sharp11-guitar.yml +11 -0
  351. data/db/seeds/chord_voicings/a-sharp/asharp7flat9sharp11-piano.yml +65 -0
  352. data/db/seeds/chord_voicings/a-sharp/asharp7sharp11-guitar.yml +11 -0
  353. data/db/seeds/chord_voicings/a-sharp/asharp7sharp11-piano.yml +54 -0
  354. data/db/seeds/chord_voicings/a-sharp/asharp7sharp5-guitar.yml +11 -0
  355. data/db/seeds/chord_voicings/a-sharp/asharp7sharp5-piano.yml +43 -0
  356. data/db/seeds/chord_voicings/a-sharp/asharp7sharp5flat9-guitar.yml +11 -0
  357. data/db/seeds/chord_voicings/a-sharp/asharp7sharp5flat9-piano.yml +54 -0
  358. data/db/seeds/chord_voicings/a-sharp/asharp7sharp5sharp9-guitar.yml +11 -0
  359. data/db/seeds/chord_voicings/a-sharp/asharp7sharp5sharp9-piano.yml +54 -0
  360. data/db/seeds/chord_voicings/a-sharp/asharp7sharp9-guitar.yml +11 -0
  361. data/db/seeds/chord_voicings/a-sharp/asharp7sharp9-piano.yml +54 -0
  362. data/db/seeds/chord_voicings/a-sharp/asharp7sharp9flat13-guitar.yml +11 -0
  363. data/db/seeds/chord_voicings/a-sharp/asharp7sharp9flat13-piano.yml +65 -0
  364. data/db/seeds/chord_voicings/a-sharp/asharp7sus2-guitar.yml +23 -0
  365. data/db/seeds/chord_voicings/a-sharp/asharp7sus2-piano.yml +43 -0
  366. data/db/seeds/chord_voicings/a-sharp/asharp7sus4-guitar.yml +35 -0
  367. data/db/seeds/chord_voicings/a-sharp/asharp7sus4-piano.yml +43 -0
  368. data/db/seeds/chord_voicings/a-sharp/asharp9-guitar.yml +11 -0
  369. data/db/seeds/chord_voicings/a-sharp/asharp9-piano.yml +54 -0
  370. data/db/seeds/chord_voicings/a-sharp/asharp9flat13-guitar.yml +11 -0
  371. data/db/seeds/chord_voicings/a-sharp/asharp9flat13-piano.yml +65 -0
  372. data/db/seeds/chord_voicings/a-sharp/asharp9sharp11-guitar.yml +11 -0
  373. data/db/seeds/chord_voicings/a-sharp/asharp9sharp11-piano.yml +65 -0
  374. data/db/seeds/chord_voicings/a-sharp/asharp9sus4-guitar.yml +11 -0
  375. data/db/seeds/chord_voicings/a-sharp/asharp9sus4-piano.yml +54 -0
  376. data/db/seeds/chord_voicings/a-sharp/asharpadd11-guitar.yml +11 -0
  377. data/db/seeds/chord_voicings/a-sharp/asharpadd11-piano.yml +43 -0
  378. data/db/seeds/chord_voicings/a-sharp/asharpadd13-guitar.yml +11 -0
  379. data/db/seeds/chord_voicings/a-sharp/asharpadd13-piano.yml +43 -0
  380. data/db/seeds/chord_voicings/a-sharp/asharpadd2-guitar.yml +11 -0
  381. data/db/seeds/chord_voicings/a-sharp/asharpadd2-piano.yml +43 -0
  382. data/db/seeds/chord_voicings/a-sharp/asharpadd4-guitar.yml +11 -0
  383. data/db/seeds/chord_voicings/a-sharp/asharpadd4-piano.yml +43 -0
  384. data/db/seeds/chord_voicings/a-sharp/asharpadd9-guitar.yml +11 -0
  385. data/db/seeds/chord_voicings/a-sharp/asharpadd9-piano.yml +43 -0
  386. data/db/seeds/chord_voicings/a-sharp/asharpaug-guitar.yml +23 -0
  387. data/db/seeds/chord_voicings/a-sharp/asharpaug-piano.yml +32 -0
  388. data/db/seeds/chord_voicings/a-sharp/asharpdim-guitar.yml +23 -0
  389. data/db/seeds/chord_voicings/a-sharp/asharpdim-piano.yml +32 -0
  390. data/db/seeds/chord_voicings/a-sharp/asharpdim7-guitar.yml +47 -0
  391. data/db/seeds/chord_voicings/a-sharp/asharpdim7-piano.yml +43 -0
  392. data/db/seeds/chord_voicings/a-sharp/asharpm-guitar.yml +35 -0
  393. data/db/seeds/chord_voicings/a-sharp/asharpm-maj7-guitar.yml +35 -0
  394. data/db/seeds/chord_voicings/a-sharp/asharpm-maj7-piano.yml +43 -0
  395. data/db/seeds/chord_voicings/a-sharp/asharpm-piano.yml +32 -0
  396. data/db/seeds/chord_voicings/a-sharp/asharpm11-guitar.yml +11 -0
  397. data/db/seeds/chord_voicings/a-sharp/asharpm11-piano.yml +71 -0
  398. data/db/seeds/chord_voicings/a-sharp/asharpm13-guitar.yml +11 -0
  399. data/db/seeds/chord_voicings/a-sharp/asharpm13-piano.yml +71 -0
  400. data/db/seeds/chord_voicings/a-sharp/asharpm6-guitar.yml +35 -0
  401. data/db/seeds/chord_voicings/a-sharp/asharpm6-piano.yml +43 -0
  402. data/db/seeds/chord_voicings/a-sharp/asharpm7-guitar.yml +35 -0
  403. data/db/seeds/chord_voicings/a-sharp/asharpm7-piano.yml +43 -0
  404. data/db/seeds/chord_voicings/a-sharp/asharpm7add11-guitar.yml +11 -0
  405. data/db/seeds/chord_voicings/a-sharp/asharpm7add11-piano.yml +54 -0
  406. data/db/seeds/chord_voicings/a-sharp/asharpm7flat5-guitar.yml +23 -0
  407. data/db/seeds/chord_voicings/a-sharp/asharpm7flat5-piano.yml +43 -0
  408. data/db/seeds/chord_voicings/a-sharp/asharpm9-guitar.yml +11 -0
  409. data/db/seeds/chord_voicings/a-sharp/asharpm9-piano.yml +54 -0
  410. data/db/seeds/chord_voicings/a-sharp/asharpmadd11-guitar.yml +11 -0
  411. data/db/seeds/chord_voicings/a-sharp/asharpmadd11-piano.yml +43 -0
  412. data/db/seeds/chord_voicings/a-sharp/asharpmadd13-guitar.yml +11 -0
  413. data/db/seeds/chord_voicings/a-sharp/asharpmadd13-piano.yml +43 -0
  414. data/db/seeds/chord_voicings/a-sharp/asharpmadd2-guitar.yml +11 -0
  415. data/db/seeds/chord_voicings/a-sharp/asharpmadd2-piano.yml +43 -0
  416. data/db/seeds/chord_voicings/a-sharp/asharpmadd4-guitar.yml +11 -0
  417. data/db/seeds/chord_voicings/a-sharp/asharpmadd4-piano.yml +43 -0
  418. data/db/seeds/chord_voicings/a-sharp/asharpmadd9-guitar.yml +11 -0
  419. data/db/seeds/chord_voicings/a-sharp/asharpmadd9-piano.yml +43 -0
  420. data/db/seeds/chord_voicings/a-sharp/asharpmaj7-guitar.yml +59 -0
  421. data/db/seeds/chord_voicings/a-sharp/asharpmaj7-piano.yml +43 -0
  422. data/db/seeds/chord_voicings/a-sharp/asharpmaj7sharp5-guitar.yml +23 -0
  423. data/db/seeds/chord_voicings/a-sharp/asharpmaj7sharp5-piano.yml +43 -0
  424. data/db/seeds/chord_voicings/a-sharp/asharpsus2-guitar.yml +23 -0
  425. data/db/seeds/chord_voicings/a-sharp/asharpsus2-piano.yml +32 -0
  426. data/db/seeds/chord_voicings/a-sharp/asharpsus4-guitar.yml +35 -0
  427. data/db/seeds/chord_voicings/a-sharp/asharpsus4-piano.yml +32 -0
  428. data/db/seeds/chord_voicings/b/b-guitar.yml +59 -0
  429. data/db/seeds/chord_voicings/b/b-piano.yml +32 -0
  430. data/db/seeds/chord_voicings/b/b11-guitar.yml +11 -0
  431. data/db/seeds/chord_voicings/b/b11-piano.yml +71 -0
  432. data/db/seeds/chord_voicings/b/b13-guitar.yml +11 -0
  433. data/db/seeds/chord_voicings/b/b13-piano.yml +71 -0
  434. data/db/seeds/chord_voicings/b/b13flat9-guitar.yml +11 -0
  435. data/db/seeds/chord_voicings/b/b13flat9-piano.yml +71 -0
  436. data/db/seeds/chord_voicings/b/b13sharp11-guitar.yml +11 -0
  437. data/db/seeds/chord_voicings/b/b13sharp11-piano.yml +83 -0
  438. data/db/seeds/chord_voicings/b/b13sharp9-guitar.yml +11 -0
  439. data/db/seeds/chord_voicings/b/b13sharp9-piano.yml +71 -0
  440. data/db/seeds/chord_voicings/b/b13sus4-guitar.yml +11 -0
  441. data/db/seeds/chord_voicings/b/b13sus4-piano.yml +71 -0
  442. data/db/seeds/chord_voicings/b/b5-guitar.yml +23 -0
  443. data/db/seeds/chord_voicings/b/b5-piano.yml +21 -0
  444. data/db/seeds/chord_voicings/b/b6-guitar.yml +59 -0
  445. data/db/seeds/chord_voicings/b/b6-piano.yml +43 -0
  446. data/db/seeds/chord_voicings/b/b7-guitar.yml +59 -0
  447. data/db/seeds/chord_voicings/b/b7-piano.yml +43 -0
  448. data/db/seeds/chord_voicings/b/b7flat13-guitar.yml +11 -0
  449. data/db/seeds/chord_voicings/b/b7flat13-piano.yml +54 -0
  450. data/db/seeds/chord_voicings/b/b7flat5-guitar.yml +11 -0
  451. data/db/seeds/chord_voicings/b/b7flat5-piano.yml +43 -0
  452. data/db/seeds/chord_voicings/b/b7flat5flat9-guitar.yml +11 -0
  453. data/db/seeds/chord_voicings/b/b7flat5flat9-piano.yml +54 -0
  454. data/db/seeds/chord_voicings/b/b7flat5sharp9-guitar.yml +11 -0
  455. data/db/seeds/chord_voicings/b/b7flat5sharp9-piano.yml +54 -0
  456. data/db/seeds/chord_voicings/b/b7flat9-guitar.yml +11 -0
  457. data/db/seeds/chord_voicings/b/b7flat9-piano.yml +54 -0
  458. data/db/seeds/chord_voicings/b/b7flat9flat13-guitar.yml +11 -0
  459. data/db/seeds/chord_voicings/b/b7flat9flat13-piano.yml +65 -0
  460. data/db/seeds/chord_voicings/b/b7flat9sharp11-guitar.yml +11 -0
  461. data/db/seeds/chord_voicings/b/b7flat9sharp11-piano.yml +65 -0
  462. data/db/seeds/chord_voicings/b/b7sharp11-guitar.yml +11 -0
  463. data/db/seeds/chord_voicings/b/b7sharp11-piano.yml +54 -0
  464. data/db/seeds/chord_voicings/b/b7sharp5-guitar.yml +11 -0
  465. data/db/seeds/chord_voicings/b/b7sharp5-piano.yml +43 -0
  466. data/db/seeds/chord_voicings/b/b7sharp5flat9-guitar.yml +11 -0
  467. data/db/seeds/chord_voicings/b/b7sharp5flat9-piano.yml +54 -0
  468. data/db/seeds/chord_voicings/b/b7sharp5sharp9-guitar.yml +11 -0
  469. data/db/seeds/chord_voicings/b/b7sharp5sharp9-piano.yml +54 -0
  470. data/db/seeds/chord_voicings/b/b7sharp9-guitar.yml +11 -0
  471. data/db/seeds/chord_voicings/b/b7sharp9-piano.yml +54 -0
  472. data/db/seeds/chord_voicings/b/b7sharp9flat13-guitar.yml +11 -0
  473. data/db/seeds/chord_voicings/b/b7sharp9flat13-piano.yml +65 -0
  474. data/db/seeds/chord_voicings/b/b7sus2-guitar.yml +23 -0
  475. data/db/seeds/chord_voicings/b/b7sus2-piano.yml +43 -0
  476. data/db/seeds/chord_voicings/b/b7sus4-guitar.yml +35 -0
  477. data/db/seeds/chord_voicings/b/b7sus4-piano.yml +43 -0
  478. data/db/seeds/chord_voicings/b/b9-guitar.yml +11 -0
  479. data/db/seeds/chord_voicings/b/b9-piano.yml +54 -0
  480. data/db/seeds/chord_voicings/b/b9flat13-guitar.yml +11 -0
  481. data/db/seeds/chord_voicings/b/b9flat13-piano.yml +65 -0
  482. data/db/seeds/chord_voicings/b/b9sharp11-guitar.yml +11 -0
  483. data/db/seeds/chord_voicings/b/b9sharp11-piano.yml +65 -0
  484. data/db/seeds/chord_voicings/b/b9sus4-guitar.yml +11 -0
  485. data/db/seeds/chord_voicings/b/b9sus4-piano.yml +54 -0
  486. data/db/seeds/chord_voicings/b/badd11-guitar.yml +11 -0
  487. data/db/seeds/chord_voicings/b/badd11-piano.yml +43 -0
  488. data/db/seeds/chord_voicings/b/badd13-guitar.yml +11 -0
  489. data/db/seeds/chord_voicings/b/badd13-piano.yml +43 -0
  490. data/db/seeds/chord_voicings/b/badd2-guitar.yml +11 -0
  491. data/db/seeds/chord_voicings/b/badd2-piano.yml +43 -0
  492. data/db/seeds/chord_voicings/b/badd4-guitar.yml +11 -0
  493. data/db/seeds/chord_voicings/b/badd4-piano.yml +43 -0
  494. data/db/seeds/chord_voicings/b/badd9-guitar.yml +11 -0
  495. data/db/seeds/chord_voicings/b/badd9-piano.yml +43 -0
  496. data/db/seeds/chord_voicings/b/baug-guitar.yml +23 -0
  497. data/db/seeds/chord_voicings/b/baug-piano.yml +32 -0
  498. data/db/seeds/chord_voicings/b/bdim-guitar.yml +23 -0
  499. data/db/seeds/chord_voicings/b/bdim-piano.yml +32 -0
  500. data/db/seeds/chord_voicings/b/bdim7-guitar.yml +23 -0
  501. data/db/seeds/chord_voicings/b/bdim7-piano.yml +43 -0
  502. data/db/seeds/chord_voicings/b/bm-guitar.yml +35 -0
  503. data/db/seeds/chord_voicings/b/bm-maj7-guitar.yml +35 -0
  504. data/db/seeds/chord_voicings/b/bm-maj7-piano.yml +43 -0
  505. data/db/seeds/chord_voicings/b/bm-piano.yml +32 -0
  506. data/db/seeds/chord_voicings/b/bm11-guitar.yml +11 -0
  507. data/db/seeds/chord_voicings/b/bm11-piano.yml +71 -0
  508. data/db/seeds/chord_voicings/b/bm13-guitar.yml +11 -0
  509. data/db/seeds/chord_voicings/b/bm13-piano.yml +71 -0
  510. data/db/seeds/chord_voicings/b/bm6-guitar.yml +35 -0
  511. data/db/seeds/chord_voicings/b/bm6-piano.yml +43 -0
  512. data/db/seeds/chord_voicings/b/bm7-guitar.yml +35 -0
  513. data/db/seeds/chord_voicings/b/bm7-piano.yml +43 -0
  514. data/db/seeds/chord_voicings/b/bm7add11-guitar.yml +11 -0
  515. data/db/seeds/chord_voicings/b/bm7add11-piano.yml +54 -0
  516. data/db/seeds/chord_voicings/b/bm7flat5-guitar.yml +23 -0
  517. data/db/seeds/chord_voicings/b/bm7flat5-piano.yml +43 -0
  518. data/db/seeds/chord_voicings/b/bm9-guitar.yml +11 -0
  519. data/db/seeds/chord_voicings/b/bm9-piano.yml +54 -0
  520. data/db/seeds/chord_voicings/b/bmadd11-guitar.yml +11 -0
  521. data/db/seeds/chord_voicings/b/bmadd11-piano.yml +43 -0
  522. data/db/seeds/chord_voicings/b/bmadd13-guitar.yml +11 -0
  523. data/db/seeds/chord_voicings/b/bmadd13-piano.yml +43 -0
  524. data/db/seeds/chord_voicings/b/bmadd2-guitar.yml +11 -0
  525. data/db/seeds/chord_voicings/b/bmadd2-piano.yml +43 -0
  526. data/db/seeds/chord_voicings/b/bmadd4-guitar.yml +11 -0
  527. data/db/seeds/chord_voicings/b/bmadd4-piano.yml +43 -0
  528. data/db/seeds/chord_voicings/b/bmadd9-guitar.yml +11 -0
  529. data/db/seeds/chord_voicings/b/bmadd9-piano.yml +43 -0
  530. data/db/seeds/chord_voicings/b/bmaj7-guitar.yml +59 -0
  531. data/db/seeds/chord_voicings/b/bmaj7-piano.yml +43 -0
  532. data/db/seeds/chord_voicings/b/bmaj7sharp5-guitar.yml +23 -0
  533. data/db/seeds/chord_voicings/b/bmaj7sharp5-piano.yml +43 -0
  534. data/db/seeds/chord_voicings/b/bsus2-guitar.yml +23 -0
  535. data/db/seeds/chord_voicings/b/bsus2-piano.yml +32 -0
  536. data/db/seeds/chord_voicings/b/bsus4-guitar.yml +35 -0
  537. data/db/seeds/chord_voicings/b/bsus4-piano.yml +32 -0
  538. data/db/seeds/chord_voicings/b-flat/bflat-guitar.yml +59 -0
  539. data/db/seeds/chord_voicings/b-flat/bflat-piano.yml +32 -0
  540. data/db/seeds/chord_voicings/b-flat/bflat11-guitar.yml +11 -0
  541. data/db/seeds/chord_voicings/b-flat/bflat11-piano.yml +71 -0
  542. data/db/seeds/chord_voicings/b-flat/bflat13-guitar.yml +11 -0
  543. data/db/seeds/chord_voicings/b-flat/bflat13-piano.yml +71 -0
  544. data/db/seeds/chord_voicings/b-flat/bflat13flat9-guitar.yml +11 -0
  545. data/db/seeds/chord_voicings/b-flat/bflat13flat9-piano.yml +71 -0
  546. data/db/seeds/chord_voicings/b-flat/bflat13sharp11-guitar.yml +11 -0
  547. data/db/seeds/chord_voicings/b-flat/bflat13sharp11-piano.yml +83 -0
  548. data/db/seeds/chord_voicings/b-flat/bflat13sharp9-guitar.yml +11 -0
  549. data/db/seeds/chord_voicings/b-flat/bflat13sharp9-piano.yml +71 -0
  550. data/db/seeds/chord_voicings/b-flat/bflat13sus4-guitar.yml +11 -0
  551. data/db/seeds/chord_voicings/b-flat/bflat13sus4-piano.yml +71 -0
  552. data/db/seeds/chord_voicings/b-flat/bflat5-guitar.yml +23 -0
  553. data/db/seeds/chord_voicings/b-flat/bflat5-piano.yml +21 -0
  554. data/db/seeds/chord_voicings/b-flat/bflat6-guitar.yml +59 -0
  555. data/db/seeds/chord_voicings/b-flat/bflat6-piano.yml +43 -0
  556. data/db/seeds/chord_voicings/b-flat/bflat7-guitar.yml +59 -0
  557. data/db/seeds/chord_voicings/b-flat/bflat7-piano.yml +43 -0
  558. data/db/seeds/chord_voicings/b-flat/bflat7flat13-guitar.yml +11 -0
  559. data/db/seeds/chord_voicings/b-flat/bflat7flat13-piano.yml +54 -0
  560. data/db/seeds/chord_voicings/b-flat/bflat7flat5-guitar.yml +11 -0
  561. data/db/seeds/chord_voicings/b-flat/bflat7flat5-piano.yml +43 -0
  562. data/db/seeds/chord_voicings/b-flat/bflat7flat5flat9-guitar.yml +11 -0
  563. data/db/seeds/chord_voicings/b-flat/bflat7flat5flat9-piano.yml +54 -0
  564. data/db/seeds/chord_voicings/b-flat/bflat7flat5sharp9-guitar.yml +11 -0
  565. data/db/seeds/chord_voicings/b-flat/bflat7flat5sharp9-piano.yml +54 -0
  566. data/db/seeds/chord_voicings/b-flat/bflat7flat9-guitar.yml +11 -0
  567. data/db/seeds/chord_voicings/b-flat/bflat7flat9-piano.yml +54 -0
  568. data/db/seeds/chord_voicings/b-flat/bflat7flat9flat13-guitar.yml +11 -0
  569. data/db/seeds/chord_voicings/b-flat/bflat7flat9flat13-piano.yml +65 -0
  570. data/db/seeds/chord_voicings/b-flat/bflat7flat9sharp11-guitar.yml +11 -0
  571. data/db/seeds/chord_voicings/b-flat/bflat7flat9sharp11-piano.yml +65 -0
  572. data/db/seeds/chord_voicings/b-flat/bflat7sharp11-guitar.yml +11 -0
  573. data/db/seeds/chord_voicings/b-flat/bflat7sharp11-piano.yml +54 -0
  574. data/db/seeds/chord_voicings/b-flat/bflat7sharp5-guitar.yml +11 -0
  575. data/db/seeds/chord_voicings/b-flat/bflat7sharp5-piano.yml +43 -0
  576. data/db/seeds/chord_voicings/b-flat/bflat7sharp5flat9-guitar.yml +11 -0
  577. data/db/seeds/chord_voicings/b-flat/bflat7sharp5flat9-piano.yml +54 -0
  578. data/db/seeds/chord_voicings/b-flat/bflat7sharp5sharp9-guitar.yml +11 -0
  579. data/db/seeds/chord_voicings/b-flat/bflat7sharp5sharp9-piano.yml +54 -0
  580. data/db/seeds/chord_voicings/b-flat/bflat7sharp9-guitar.yml +11 -0
  581. data/db/seeds/chord_voicings/b-flat/bflat7sharp9-piano.yml +54 -0
  582. data/db/seeds/chord_voicings/b-flat/bflat7sharp9flat13-guitar.yml +11 -0
  583. data/db/seeds/chord_voicings/b-flat/bflat7sharp9flat13-piano.yml +65 -0
  584. data/db/seeds/chord_voicings/b-flat/bflat7sus2-guitar.yml +23 -0
  585. data/db/seeds/chord_voicings/b-flat/bflat7sus2-piano.yml +43 -0
  586. data/db/seeds/chord_voicings/b-flat/bflat7sus4-guitar.yml +35 -0
  587. data/db/seeds/chord_voicings/b-flat/bflat7sus4-piano.yml +43 -0
  588. data/db/seeds/chord_voicings/b-flat/bflat9-guitar.yml +11 -0
  589. data/db/seeds/chord_voicings/b-flat/bflat9-piano.yml +54 -0
  590. data/db/seeds/chord_voicings/b-flat/bflat9flat13-guitar.yml +11 -0
  591. data/db/seeds/chord_voicings/b-flat/bflat9flat13-piano.yml +65 -0
  592. data/db/seeds/chord_voicings/b-flat/bflat9sharp11-guitar.yml +11 -0
  593. data/db/seeds/chord_voicings/b-flat/bflat9sharp11-piano.yml +65 -0
  594. data/db/seeds/chord_voicings/b-flat/bflat9sus4-guitar.yml +11 -0
  595. data/db/seeds/chord_voicings/b-flat/bflat9sus4-piano.yml +54 -0
  596. data/db/seeds/chord_voicings/b-flat/bflatadd11-guitar.yml +11 -0
  597. data/db/seeds/chord_voicings/b-flat/bflatadd11-piano.yml +43 -0
  598. data/db/seeds/chord_voicings/b-flat/bflatadd13-guitar.yml +11 -0
  599. data/db/seeds/chord_voicings/b-flat/bflatadd13-piano.yml +43 -0
  600. data/db/seeds/chord_voicings/b-flat/bflatadd2-guitar.yml +11 -0
  601. data/db/seeds/chord_voicings/b-flat/bflatadd2-piano.yml +43 -0
  602. data/db/seeds/chord_voicings/b-flat/bflatadd4-guitar.yml +11 -0
  603. data/db/seeds/chord_voicings/b-flat/bflatadd4-piano.yml +43 -0
  604. data/db/seeds/chord_voicings/b-flat/bflatadd9-guitar.yml +11 -0
  605. data/db/seeds/chord_voicings/b-flat/bflatadd9-piano.yml +43 -0
  606. data/db/seeds/chord_voicings/b-flat/bflataug-guitar.yml +23 -0
  607. data/db/seeds/chord_voicings/b-flat/bflataug-piano.yml +32 -0
  608. data/db/seeds/chord_voicings/b-flat/bflatdim-guitar.yml +23 -0
  609. data/db/seeds/chord_voicings/b-flat/bflatdim-piano.yml +32 -0
  610. data/db/seeds/chord_voicings/b-flat/bflatdim7-guitar.yml +47 -0
  611. data/db/seeds/chord_voicings/b-flat/bflatdim7-piano.yml +43 -0
  612. data/db/seeds/chord_voicings/b-flat/bflatm-guitar.yml +35 -0
  613. data/db/seeds/chord_voicings/b-flat/bflatm-maj7-guitar.yml +35 -0
  614. data/db/seeds/chord_voicings/b-flat/bflatm-maj7-piano.yml +43 -0
  615. data/db/seeds/chord_voicings/b-flat/bflatm-piano.yml +32 -0
  616. data/db/seeds/chord_voicings/b-flat/bflatm11-guitar.yml +11 -0
  617. data/db/seeds/chord_voicings/b-flat/bflatm11-piano.yml +71 -0
  618. data/db/seeds/chord_voicings/b-flat/bflatm13-guitar.yml +11 -0
  619. data/db/seeds/chord_voicings/b-flat/bflatm13-piano.yml +71 -0
  620. data/db/seeds/chord_voicings/b-flat/bflatm6-guitar.yml +35 -0
  621. data/db/seeds/chord_voicings/b-flat/bflatm6-piano.yml +43 -0
  622. data/db/seeds/chord_voicings/b-flat/bflatm7-guitar.yml +35 -0
  623. data/db/seeds/chord_voicings/b-flat/bflatm7-piano.yml +43 -0
  624. data/db/seeds/chord_voicings/b-flat/bflatm7add11-guitar.yml +11 -0
  625. data/db/seeds/chord_voicings/b-flat/bflatm7add11-piano.yml +54 -0
  626. data/db/seeds/chord_voicings/b-flat/bflatm7flat5-guitar.yml +23 -0
  627. data/db/seeds/chord_voicings/b-flat/bflatm7flat5-piano.yml +43 -0
  628. data/db/seeds/chord_voicings/b-flat/bflatm9-guitar.yml +11 -0
  629. data/db/seeds/chord_voicings/b-flat/bflatm9-piano.yml +54 -0
  630. data/db/seeds/chord_voicings/b-flat/bflatmadd11-guitar.yml +11 -0
  631. data/db/seeds/chord_voicings/b-flat/bflatmadd11-piano.yml +43 -0
  632. data/db/seeds/chord_voicings/b-flat/bflatmadd13-guitar.yml +11 -0
  633. data/db/seeds/chord_voicings/b-flat/bflatmadd13-piano.yml +43 -0
  634. data/db/seeds/chord_voicings/b-flat/bflatmadd2-guitar.yml +11 -0
  635. data/db/seeds/chord_voicings/b-flat/bflatmadd2-piano.yml +43 -0
  636. data/db/seeds/chord_voicings/b-flat/bflatmadd4-guitar.yml +11 -0
  637. data/db/seeds/chord_voicings/b-flat/bflatmadd4-piano.yml +43 -0
  638. data/db/seeds/chord_voicings/b-flat/bflatmadd9-guitar.yml +11 -0
  639. data/db/seeds/chord_voicings/b-flat/bflatmadd9-piano.yml +43 -0
  640. data/db/seeds/chord_voicings/b-flat/bflatmaj7-guitar.yml +59 -0
  641. data/db/seeds/chord_voicings/b-flat/bflatmaj7-piano.yml +43 -0
  642. data/db/seeds/chord_voicings/b-flat/bflatmaj7sharp5-guitar.yml +23 -0
  643. data/db/seeds/chord_voicings/b-flat/bflatmaj7sharp5-piano.yml +43 -0
  644. data/db/seeds/chord_voicings/b-flat/bflatsus2-guitar.yml +23 -0
  645. data/db/seeds/chord_voicings/b-flat/bflatsus2-piano.yml +32 -0
  646. data/db/seeds/chord_voicings/b-flat/bflatsus4-guitar.yml +35 -0
  647. data/db/seeds/chord_voicings/b-flat/bflatsus4-piano.yml +32 -0
  648. data/db/seeds/chord_voicings/c/c-guitar.yml +83 -0
  649. data/db/seeds/chord_voicings/c/c-piano.yml +32 -0
  650. data/db/seeds/chord_voicings/c/c11-guitar.yml +11 -0
  651. data/db/seeds/chord_voicings/c/c11-piano.yml +71 -0
  652. data/db/seeds/chord_voicings/c/c13-guitar.yml +11 -0
  653. data/db/seeds/chord_voicings/c/c13-piano.yml +71 -0
  654. data/db/seeds/chord_voicings/c/c13flat9-guitar.yml +11 -0
  655. data/db/seeds/chord_voicings/c/c13flat9-piano.yml +71 -0
  656. data/db/seeds/chord_voicings/c/c13sharp11-guitar.yml +11 -0
  657. data/db/seeds/chord_voicings/c/c13sharp11-piano.yml +83 -0
  658. data/db/seeds/chord_voicings/c/c13sharp9-guitar.yml +11 -0
  659. data/db/seeds/chord_voicings/c/c13sharp9-piano.yml +71 -0
  660. data/db/seeds/chord_voicings/c/c13sus4-guitar.yml +11 -0
  661. data/db/seeds/chord_voicings/c/c13sus4-piano.yml +71 -0
  662. data/db/seeds/chord_voicings/c/c5-guitar.yml +23 -0
  663. data/db/seeds/chord_voicings/c/c5-piano.yml +21 -0
  664. data/db/seeds/chord_voicings/c/c6-guitar.yml +83 -0
  665. data/db/seeds/chord_voicings/c/c6-piano.yml +43 -0
  666. data/db/seeds/chord_voicings/c/c7-guitar.yml +83 -0
  667. data/db/seeds/chord_voicings/c/c7-piano.yml +43 -0
  668. data/db/seeds/chord_voicings/c/c7flat13-guitar.yml +11 -0
  669. data/db/seeds/chord_voicings/c/c7flat13-piano.yml +54 -0
  670. data/db/seeds/chord_voicings/c/c7flat5-guitar.yml +11 -0
  671. data/db/seeds/chord_voicings/c/c7flat5-piano.yml +43 -0
  672. data/db/seeds/chord_voicings/c/c7flat5flat9-guitar.yml +11 -0
  673. data/db/seeds/chord_voicings/c/c7flat5flat9-piano.yml +54 -0
  674. data/db/seeds/chord_voicings/c/c7flat5sharp9-guitar.yml +11 -0
  675. data/db/seeds/chord_voicings/c/c7flat5sharp9-piano.yml +54 -0
  676. data/db/seeds/chord_voicings/c/c7flat9-guitar.yml +11 -0
  677. data/db/seeds/chord_voicings/c/c7flat9-piano.yml +54 -0
  678. data/db/seeds/chord_voicings/c/c7flat9flat13-guitar.yml +11 -0
  679. data/db/seeds/chord_voicings/c/c7flat9flat13-piano.yml +65 -0
  680. data/db/seeds/chord_voicings/c/c7flat9sharp11-guitar.yml +11 -0
  681. data/db/seeds/chord_voicings/c/c7flat9sharp11-piano.yml +65 -0
  682. data/db/seeds/chord_voicings/c/c7sharp11-guitar.yml +11 -0
  683. data/db/seeds/chord_voicings/c/c7sharp11-piano.yml +54 -0
  684. data/db/seeds/chord_voicings/c/c7sharp5-guitar.yml +11 -0
  685. data/db/seeds/chord_voicings/c/c7sharp5-piano.yml +43 -0
  686. data/db/seeds/chord_voicings/c/c7sharp5flat9-guitar.yml +11 -0
  687. data/db/seeds/chord_voicings/c/c7sharp5flat9-piano.yml +54 -0
  688. data/db/seeds/chord_voicings/c/c7sharp5sharp9-guitar.yml +11 -0
  689. data/db/seeds/chord_voicings/c/c7sharp5sharp9-piano.yml +54 -0
  690. data/db/seeds/chord_voicings/c/c7sharp9-guitar.yml +11 -0
  691. data/db/seeds/chord_voicings/c/c7sharp9-piano.yml +54 -0
  692. data/db/seeds/chord_voicings/c/c7sharp9flat13-guitar.yml +11 -0
  693. data/db/seeds/chord_voicings/c/c7sharp9flat13-piano.yml +65 -0
  694. data/db/seeds/chord_voicings/c/c7sus2-guitar.yml +23 -0
  695. data/db/seeds/chord_voicings/c/c7sus2-piano.yml +43 -0
  696. data/db/seeds/chord_voicings/c/c7sus4-guitar.yml +35 -0
  697. data/db/seeds/chord_voicings/c/c7sus4-piano.yml +43 -0
  698. data/db/seeds/chord_voicings/c/c9-guitar.yml +11 -0
  699. data/db/seeds/chord_voicings/c/c9-piano.yml +54 -0
  700. data/db/seeds/chord_voicings/c/c9flat13-guitar.yml +11 -0
  701. data/db/seeds/chord_voicings/c/c9flat13-piano.yml +65 -0
  702. data/db/seeds/chord_voicings/c/c9sharp11-guitar.yml +11 -0
  703. data/db/seeds/chord_voicings/c/c9sharp11-piano.yml +65 -0
  704. data/db/seeds/chord_voicings/c/c9sus4-guitar.yml +11 -0
  705. data/db/seeds/chord_voicings/c/c9sus4-piano.yml +54 -0
  706. data/db/seeds/chord_voicings/c/cadd11-guitar.yml +11 -0
  707. data/db/seeds/chord_voicings/c/cadd11-piano.yml +43 -0
  708. data/db/seeds/chord_voicings/c/cadd13-guitar.yml +11 -0
  709. data/db/seeds/chord_voicings/c/cadd13-piano.yml +43 -0
  710. data/db/seeds/chord_voicings/c/cadd2-guitar.yml +11 -0
  711. data/db/seeds/chord_voicings/c/cadd2-piano.yml +43 -0
  712. data/db/seeds/chord_voicings/c/cadd4-guitar.yml +11 -0
  713. data/db/seeds/chord_voicings/c/cadd4-piano.yml +43 -0
  714. data/db/seeds/chord_voicings/c/cadd9-guitar.yml +11 -0
  715. data/db/seeds/chord_voicings/c/cadd9-piano.yml +43 -0
  716. data/db/seeds/chord_voicings/c/caug-guitar.yml +23 -0
  717. data/db/seeds/chord_voicings/c/caug-piano.yml +32 -0
  718. data/db/seeds/chord_voicings/c/cdim-guitar.yml +23 -0
  719. data/db/seeds/chord_voicings/c/cdim-piano.yml +32 -0
  720. data/db/seeds/chord_voicings/c/cdim7-guitar.yml +23 -0
  721. data/db/seeds/chord_voicings/c/cdim7-piano.yml +43 -0
  722. data/db/seeds/chord_voicings/c/cm-guitar.yml +35 -0
  723. data/db/seeds/chord_voicings/c/cm-maj7-guitar.yml +35 -0
  724. data/db/seeds/chord_voicings/c/cm-maj7-piano.yml +43 -0
  725. data/db/seeds/chord_voicings/c/cm-piano.yml +32 -0
  726. data/db/seeds/chord_voicings/c/cm11-guitar.yml +11 -0
  727. data/db/seeds/chord_voicings/c/cm11-piano.yml +71 -0
  728. data/db/seeds/chord_voicings/c/cm13-guitar.yml +11 -0
  729. data/db/seeds/chord_voicings/c/cm13-piano.yml +71 -0
  730. data/db/seeds/chord_voicings/c/cm6-guitar.yml +35 -0
  731. data/db/seeds/chord_voicings/c/cm6-piano.yml +43 -0
  732. data/db/seeds/chord_voicings/c/cm7-guitar.yml +35 -0
  733. data/db/seeds/chord_voicings/c/cm7-piano.yml +43 -0
  734. data/db/seeds/chord_voicings/c/cm7add11-guitar.yml +11 -0
  735. data/db/seeds/chord_voicings/c/cm7add11-piano.yml +54 -0
  736. data/db/seeds/chord_voicings/c/cm7flat5-guitar.yml +23 -0
  737. data/db/seeds/chord_voicings/c/cm7flat5-piano.yml +43 -0
  738. data/db/seeds/chord_voicings/c/cm9-guitar.yml +11 -0
  739. data/db/seeds/chord_voicings/c/cm9-piano.yml +54 -0
  740. data/db/seeds/chord_voicings/c/cmadd11-guitar.yml +11 -0
  741. data/db/seeds/chord_voicings/c/cmadd11-piano.yml +43 -0
  742. data/db/seeds/chord_voicings/c/cmadd13-guitar.yml +11 -0
  743. data/db/seeds/chord_voicings/c/cmadd13-piano.yml +43 -0
  744. data/db/seeds/chord_voicings/c/cmadd2-guitar.yml +11 -0
  745. data/db/seeds/chord_voicings/c/cmadd2-piano.yml +43 -0
  746. data/db/seeds/chord_voicings/c/cmadd4-guitar.yml +11 -0
  747. data/db/seeds/chord_voicings/c/cmadd4-piano.yml +43 -0
  748. data/db/seeds/chord_voicings/c/cmadd9-guitar.yml +11 -0
  749. data/db/seeds/chord_voicings/c/cmadd9-piano.yml +43 -0
  750. data/db/seeds/chord_voicings/c/cmaj7-guitar.yml +83 -0
  751. data/db/seeds/chord_voicings/c/cmaj7-piano.yml +43 -0
  752. data/db/seeds/chord_voicings/c/cmaj7sharp5-guitar.yml +23 -0
  753. data/db/seeds/chord_voicings/c/cmaj7sharp5-piano.yml +43 -0
  754. data/db/seeds/chord_voicings/c/csus2-guitar.yml +23 -0
  755. data/db/seeds/chord_voicings/c/csus2-piano.yml +32 -0
  756. data/db/seeds/chord_voicings/c/csus4-guitar.yml +35 -0
  757. data/db/seeds/chord_voicings/c/csus4-piano.yml +32 -0
  758. data/db/seeds/chord_voicings/c-sharp/csharp-guitar.yml +59 -0
  759. data/db/seeds/chord_voicings/c-sharp/csharp-piano.yml +32 -0
  760. data/db/seeds/chord_voicings/c-sharp/csharp11-guitar.yml +11 -0
  761. data/db/seeds/chord_voicings/c-sharp/csharp11-piano.yml +71 -0
  762. data/db/seeds/chord_voicings/c-sharp/csharp13-guitar.yml +11 -0
  763. data/db/seeds/chord_voicings/c-sharp/csharp13-piano.yml +71 -0
  764. data/db/seeds/chord_voicings/c-sharp/csharp13flat9-guitar.yml +11 -0
  765. data/db/seeds/chord_voicings/c-sharp/csharp13flat9-piano.yml +71 -0
  766. data/db/seeds/chord_voicings/c-sharp/csharp13sharp11-guitar.yml +11 -0
  767. data/db/seeds/chord_voicings/c-sharp/csharp13sharp11-piano.yml +83 -0
  768. data/db/seeds/chord_voicings/c-sharp/csharp13sharp9-guitar.yml +11 -0
  769. data/db/seeds/chord_voicings/c-sharp/csharp13sharp9-piano.yml +71 -0
  770. data/db/seeds/chord_voicings/c-sharp/csharp13sus4-guitar.yml +11 -0
  771. data/db/seeds/chord_voicings/c-sharp/csharp13sus4-piano.yml +71 -0
  772. data/db/seeds/chord_voicings/c-sharp/csharp5-guitar.yml +23 -0
  773. data/db/seeds/chord_voicings/c-sharp/csharp5-piano.yml +21 -0
  774. data/db/seeds/chord_voicings/c-sharp/csharp6-guitar.yml +59 -0
  775. data/db/seeds/chord_voicings/c-sharp/csharp6-piano.yml +43 -0
  776. data/db/seeds/chord_voicings/c-sharp/csharp7-guitar.yml +59 -0
  777. data/db/seeds/chord_voicings/c-sharp/csharp7-piano.yml +43 -0
  778. data/db/seeds/chord_voicings/c-sharp/csharp7flat13-guitar.yml +11 -0
  779. data/db/seeds/chord_voicings/c-sharp/csharp7flat13-piano.yml +54 -0
  780. data/db/seeds/chord_voicings/c-sharp/csharp7flat5-guitar.yml +11 -0
  781. data/db/seeds/chord_voicings/c-sharp/csharp7flat5-piano.yml +43 -0
  782. data/db/seeds/chord_voicings/c-sharp/csharp7flat5flat9-guitar.yml +11 -0
  783. data/db/seeds/chord_voicings/c-sharp/csharp7flat5flat9-piano.yml +54 -0
  784. data/db/seeds/chord_voicings/c-sharp/csharp7flat5sharp9-guitar.yml +11 -0
  785. data/db/seeds/chord_voicings/c-sharp/csharp7flat5sharp9-piano.yml +54 -0
  786. data/db/seeds/chord_voicings/c-sharp/csharp7flat9-guitar.yml +11 -0
  787. data/db/seeds/chord_voicings/c-sharp/csharp7flat9-piano.yml +54 -0
  788. data/db/seeds/chord_voicings/c-sharp/csharp7flat9flat13-guitar.yml +11 -0
  789. data/db/seeds/chord_voicings/c-sharp/csharp7flat9flat13-piano.yml +65 -0
  790. data/db/seeds/chord_voicings/c-sharp/csharp7flat9sharp11-guitar.yml +11 -0
  791. data/db/seeds/chord_voicings/c-sharp/csharp7flat9sharp11-piano.yml +65 -0
  792. data/db/seeds/chord_voicings/c-sharp/csharp7sharp11-guitar.yml +11 -0
  793. data/db/seeds/chord_voicings/c-sharp/csharp7sharp11-piano.yml +54 -0
  794. data/db/seeds/chord_voicings/c-sharp/csharp7sharp5-guitar.yml +11 -0
  795. data/db/seeds/chord_voicings/c-sharp/csharp7sharp5-piano.yml +43 -0
  796. data/db/seeds/chord_voicings/c-sharp/csharp7sharp5flat9-guitar.yml +11 -0
  797. data/db/seeds/chord_voicings/c-sharp/csharp7sharp5flat9-piano.yml +54 -0
  798. data/db/seeds/chord_voicings/c-sharp/csharp7sharp5sharp9-guitar.yml +11 -0
  799. data/db/seeds/chord_voicings/c-sharp/csharp7sharp5sharp9-piano.yml +54 -0
  800. data/db/seeds/chord_voicings/c-sharp/csharp7sharp9-guitar.yml +11 -0
  801. data/db/seeds/chord_voicings/c-sharp/csharp7sharp9-piano.yml +54 -0
  802. data/db/seeds/chord_voicings/c-sharp/csharp7sharp9flat13-guitar.yml +11 -0
  803. data/db/seeds/chord_voicings/c-sharp/csharp7sharp9flat13-piano.yml +65 -0
  804. data/db/seeds/chord_voicings/c-sharp/csharp7sus2-guitar.yml +23 -0
  805. data/db/seeds/chord_voicings/c-sharp/csharp7sus2-piano.yml +43 -0
  806. data/db/seeds/chord_voicings/c-sharp/csharp7sus4-guitar.yml +35 -0
  807. data/db/seeds/chord_voicings/c-sharp/csharp7sus4-piano.yml +43 -0
  808. data/db/seeds/chord_voicings/c-sharp/csharp9-guitar.yml +11 -0
  809. data/db/seeds/chord_voicings/c-sharp/csharp9-piano.yml +54 -0
  810. data/db/seeds/chord_voicings/c-sharp/csharp9flat13-guitar.yml +11 -0
  811. data/db/seeds/chord_voicings/c-sharp/csharp9flat13-piano.yml +65 -0
  812. data/db/seeds/chord_voicings/c-sharp/csharp9sharp11-guitar.yml +11 -0
  813. data/db/seeds/chord_voicings/c-sharp/csharp9sharp11-piano.yml +65 -0
  814. data/db/seeds/chord_voicings/c-sharp/csharp9sus4-guitar.yml +11 -0
  815. data/db/seeds/chord_voicings/c-sharp/csharp9sus4-piano.yml +54 -0
  816. data/db/seeds/chord_voicings/c-sharp/csharpadd11-guitar.yml +11 -0
  817. data/db/seeds/chord_voicings/c-sharp/csharpadd11-piano.yml +43 -0
  818. data/db/seeds/chord_voicings/c-sharp/csharpadd13-guitar.yml +11 -0
  819. data/db/seeds/chord_voicings/c-sharp/csharpadd13-piano.yml +43 -0
  820. data/db/seeds/chord_voicings/c-sharp/csharpadd2-guitar.yml +11 -0
  821. data/db/seeds/chord_voicings/c-sharp/csharpadd2-piano.yml +43 -0
  822. data/db/seeds/chord_voicings/c-sharp/csharpadd4-guitar.yml +11 -0
  823. data/db/seeds/chord_voicings/c-sharp/csharpadd4-piano.yml +43 -0
  824. data/db/seeds/chord_voicings/c-sharp/csharpadd9-guitar.yml +11 -0
  825. data/db/seeds/chord_voicings/c-sharp/csharpadd9-piano.yml +43 -0
  826. data/db/seeds/chord_voicings/c-sharp/csharpaug-guitar.yml +23 -0
  827. data/db/seeds/chord_voicings/c-sharp/csharpaug-piano.yml +32 -0
  828. data/db/seeds/chord_voicings/c-sharp/csharpdim-guitar.yml +23 -0
  829. data/db/seeds/chord_voicings/c-sharp/csharpdim-piano.yml +32 -0
  830. data/db/seeds/chord_voicings/c-sharp/csharpdim7-guitar.yml +23 -0
  831. data/db/seeds/chord_voicings/c-sharp/csharpdim7-piano.yml +43 -0
  832. data/db/seeds/chord_voicings/c-sharp/csharpm-guitar.yml +35 -0
  833. data/db/seeds/chord_voicings/c-sharp/csharpm-maj7-guitar.yml +35 -0
  834. data/db/seeds/chord_voicings/c-sharp/csharpm-maj7-piano.yml +43 -0
  835. data/db/seeds/chord_voicings/c-sharp/csharpm-piano.yml +32 -0
  836. data/db/seeds/chord_voicings/c-sharp/csharpm11-guitar.yml +11 -0
  837. data/db/seeds/chord_voicings/c-sharp/csharpm11-piano.yml +71 -0
  838. data/db/seeds/chord_voicings/c-sharp/csharpm13-guitar.yml +11 -0
  839. data/db/seeds/chord_voicings/c-sharp/csharpm13-piano.yml +71 -0
  840. data/db/seeds/chord_voicings/c-sharp/csharpm6-guitar.yml +35 -0
  841. data/db/seeds/chord_voicings/c-sharp/csharpm6-piano.yml +43 -0
  842. data/db/seeds/chord_voicings/c-sharp/csharpm7-guitar.yml +35 -0
  843. data/db/seeds/chord_voicings/c-sharp/csharpm7-piano.yml +43 -0
  844. data/db/seeds/chord_voicings/c-sharp/csharpm7add11-guitar.yml +11 -0
  845. data/db/seeds/chord_voicings/c-sharp/csharpm7add11-piano.yml +54 -0
  846. data/db/seeds/chord_voicings/c-sharp/csharpm7flat5-guitar.yml +23 -0
  847. data/db/seeds/chord_voicings/c-sharp/csharpm7flat5-piano.yml +43 -0
  848. data/db/seeds/chord_voicings/c-sharp/csharpm9-guitar.yml +11 -0
  849. data/db/seeds/chord_voicings/c-sharp/csharpm9-piano.yml +54 -0
  850. data/db/seeds/chord_voicings/c-sharp/csharpmadd11-guitar.yml +11 -0
  851. data/db/seeds/chord_voicings/c-sharp/csharpmadd11-piano.yml +43 -0
  852. data/db/seeds/chord_voicings/c-sharp/csharpmadd13-guitar.yml +11 -0
  853. data/db/seeds/chord_voicings/c-sharp/csharpmadd13-piano.yml +43 -0
  854. data/db/seeds/chord_voicings/c-sharp/csharpmadd2-guitar.yml +11 -0
  855. data/db/seeds/chord_voicings/c-sharp/csharpmadd2-piano.yml +43 -0
  856. data/db/seeds/chord_voicings/c-sharp/csharpmadd4-guitar.yml +11 -0
  857. data/db/seeds/chord_voicings/c-sharp/csharpmadd4-piano.yml +43 -0
  858. data/db/seeds/chord_voicings/c-sharp/csharpmadd9-guitar.yml +11 -0
  859. data/db/seeds/chord_voicings/c-sharp/csharpmadd9-piano.yml +43 -0
  860. data/db/seeds/chord_voicings/c-sharp/csharpmaj7-guitar.yml +59 -0
  861. data/db/seeds/chord_voicings/c-sharp/csharpmaj7-piano.yml +43 -0
  862. data/db/seeds/chord_voicings/c-sharp/csharpmaj7sharp5-guitar.yml +23 -0
  863. data/db/seeds/chord_voicings/c-sharp/csharpmaj7sharp5-piano.yml +43 -0
  864. data/db/seeds/chord_voicings/c-sharp/csharpsus2-guitar.yml +23 -0
  865. data/db/seeds/chord_voicings/c-sharp/csharpsus2-piano.yml +32 -0
  866. data/db/seeds/chord_voicings/c-sharp/csharpsus4-guitar.yml +35 -0
  867. data/db/seeds/chord_voicings/c-sharp/csharpsus4-piano.yml +32 -0
  868. data/db/seeds/chord_voicings/d/d-guitar.yml +83 -0
  869. data/db/seeds/chord_voicings/d/d-piano.yml +32 -0
  870. data/db/seeds/chord_voicings/d/d11-guitar.yml +11 -0
  871. data/db/seeds/chord_voicings/d/d11-piano.yml +71 -0
  872. data/db/seeds/chord_voicings/d/d13-guitar.yml +11 -0
  873. data/db/seeds/chord_voicings/d/d13-piano.yml +71 -0
  874. data/db/seeds/chord_voicings/d/d13flat9-guitar.yml +11 -0
  875. data/db/seeds/chord_voicings/d/d13flat9-piano.yml +71 -0
  876. data/db/seeds/chord_voicings/d/d13sharp11-guitar.yml +11 -0
  877. data/db/seeds/chord_voicings/d/d13sharp11-piano.yml +83 -0
  878. data/db/seeds/chord_voicings/d/d13sharp9-guitar.yml +11 -0
  879. data/db/seeds/chord_voicings/d/d13sharp9-piano.yml +71 -0
  880. data/db/seeds/chord_voicings/d/d13sus4-guitar.yml +11 -0
  881. data/db/seeds/chord_voicings/d/d13sus4-piano.yml +71 -0
  882. data/db/seeds/chord_voicings/d/d5-guitar.yml +23 -0
  883. data/db/seeds/chord_voicings/d/d5-piano.yml +21 -0
  884. data/db/seeds/chord_voicings/d/d6-guitar.yml +95 -0
  885. data/db/seeds/chord_voicings/d/d6-piano.yml +43 -0
  886. data/db/seeds/chord_voicings/d/d7-guitar.yml +95 -0
  887. data/db/seeds/chord_voicings/d/d7-piano.yml +43 -0
  888. data/db/seeds/chord_voicings/d/d7flat13-guitar.yml +11 -0
  889. data/db/seeds/chord_voicings/d/d7flat13-piano.yml +54 -0
  890. data/db/seeds/chord_voicings/d/d7flat5-guitar.yml +11 -0
  891. data/db/seeds/chord_voicings/d/d7flat5-piano.yml +43 -0
  892. data/db/seeds/chord_voicings/d/d7flat5flat9-guitar.yml +11 -0
  893. data/db/seeds/chord_voicings/d/d7flat5flat9-piano.yml +54 -0
  894. data/db/seeds/chord_voicings/d/d7flat5sharp9-guitar.yml +11 -0
  895. data/db/seeds/chord_voicings/d/d7flat5sharp9-piano.yml +54 -0
  896. data/db/seeds/chord_voicings/d/d7flat9-guitar.yml +11 -0
  897. data/db/seeds/chord_voicings/d/d7flat9-piano.yml +54 -0
  898. data/db/seeds/chord_voicings/d/d7flat9flat13-guitar.yml +11 -0
  899. data/db/seeds/chord_voicings/d/d7flat9flat13-piano.yml +65 -0
  900. data/db/seeds/chord_voicings/d/d7flat9sharp11-guitar.yml +11 -0
  901. data/db/seeds/chord_voicings/d/d7flat9sharp11-piano.yml +65 -0
  902. data/db/seeds/chord_voicings/d/d7sharp11-guitar.yml +11 -0
  903. data/db/seeds/chord_voicings/d/d7sharp11-piano.yml +54 -0
  904. data/db/seeds/chord_voicings/d/d7sharp5-guitar.yml +11 -0
  905. data/db/seeds/chord_voicings/d/d7sharp5-piano.yml +43 -0
  906. data/db/seeds/chord_voicings/d/d7sharp5flat9-guitar.yml +11 -0
  907. data/db/seeds/chord_voicings/d/d7sharp5flat9-piano.yml +54 -0
  908. data/db/seeds/chord_voicings/d/d7sharp5sharp9-guitar.yml +11 -0
  909. data/db/seeds/chord_voicings/d/d7sharp5sharp9-piano.yml +54 -0
  910. data/db/seeds/chord_voicings/d/d7sharp9-guitar.yml +11 -0
  911. data/db/seeds/chord_voicings/d/d7sharp9-piano.yml +54 -0
  912. data/db/seeds/chord_voicings/d/d7sharp9flat13-guitar.yml +11 -0
  913. data/db/seeds/chord_voicings/d/d7sharp9flat13-piano.yml +65 -0
  914. data/db/seeds/chord_voicings/d/d7sus2-guitar.yml +59 -0
  915. data/db/seeds/chord_voicings/d/d7sus2-piano.yml +43 -0
  916. data/db/seeds/chord_voicings/d/d7sus4-guitar.yml +71 -0
  917. data/db/seeds/chord_voicings/d/d7sus4-piano.yml +43 -0
  918. data/db/seeds/chord_voicings/d/d9-guitar.yml +11 -0
  919. data/db/seeds/chord_voicings/d/d9-piano.yml +54 -0
  920. data/db/seeds/chord_voicings/d/d9flat13-guitar.yml +11 -0
  921. data/db/seeds/chord_voicings/d/d9flat13-piano.yml +65 -0
  922. data/db/seeds/chord_voicings/d/d9sharp11-guitar.yml +11 -0
  923. data/db/seeds/chord_voicings/d/d9sharp11-piano.yml +65 -0
  924. data/db/seeds/chord_voicings/d/d9sus4-guitar.yml +11 -0
  925. data/db/seeds/chord_voicings/d/d9sus4-piano.yml +54 -0
  926. data/db/seeds/chord_voicings/d/dadd11-guitar.yml +11 -0
  927. data/db/seeds/chord_voicings/d/dadd11-piano.yml +43 -0
  928. data/db/seeds/chord_voicings/d/dadd13-guitar.yml +11 -0
  929. data/db/seeds/chord_voicings/d/dadd13-piano.yml +43 -0
  930. data/db/seeds/chord_voicings/d/dadd2-guitar.yml +11 -0
  931. data/db/seeds/chord_voicings/d/dadd2-piano.yml +43 -0
  932. data/db/seeds/chord_voicings/d/dadd4-guitar.yml +11 -0
  933. data/db/seeds/chord_voicings/d/dadd4-piano.yml +43 -0
  934. data/db/seeds/chord_voicings/d/dadd9-guitar.yml +11 -0
  935. data/db/seeds/chord_voicings/d/dadd9-piano.yml +43 -0
  936. data/db/seeds/chord_voicings/d/daug-guitar.yml +23 -0
  937. data/db/seeds/chord_voicings/d/daug-piano.yml +32 -0
  938. data/db/seeds/chord_voicings/d/ddim-guitar.yml +23 -0
  939. data/db/seeds/chord_voicings/d/ddim-piano.yml +32 -0
  940. data/db/seeds/chord_voicings/d/ddim7-guitar.yml +47 -0
  941. data/db/seeds/chord_voicings/d/ddim7-piano.yml +43 -0
  942. data/db/seeds/chord_voicings/d/dm-guitar.yml +59 -0
  943. data/db/seeds/chord_voicings/d/dm-maj7-guitar.yml +59 -0
  944. data/db/seeds/chord_voicings/d/dm-maj7-piano.yml +43 -0
  945. data/db/seeds/chord_voicings/d/dm-piano.yml +32 -0
  946. data/db/seeds/chord_voicings/d/dm11-guitar.yml +11 -0
  947. data/db/seeds/chord_voicings/d/dm11-piano.yml +71 -0
  948. data/db/seeds/chord_voicings/d/dm13-guitar.yml +11 -0
  949. data/db/seeds/chord_voicings/d/dm13-piano.yml +71 -0
  950. data/db/seeds/chord_voicings/d/dm6-guitar.yml +71 -0
  951. data/db/seeds/chord_voicings/d/dm6-piano.yml +43 -0
  952. data/db/seeds/chord_voicings/d/dm7-guitar.yml +71 -0
  953. data/db/seeds/chord_voicings/d/dm7-piano.yml +43 -0
  954. data/db/seeds/chord_voicings/d/dm7add11-guitar.yml +11 -0
  955. data/db/seeds/chord_voicings/d/dm7add11-piano.yml +54 -0
  956. data/db/seeds/chord_voicings/d/dm7flat5-guitar.yml +47 -0
  957. data/db/seeds/chord_voicings/d/dm7flat5-piano.yml +43 -0
  958. data/db/seeds/chord_voicings/d/dm9-guitar.yml +11 -0
  959. data/db/seeds/chord_voicings/d/dm9-piano.yml +54 -0
  960. data/db/seeds/chord_voicings/d/dmadd11-guitar.yml +11 -0
  961. data/db/seeds/chord_voicings/d/dmadd11-piano.yml +43 -0
  962. data/db/seeds/chord_voicings/d/dmadd13-guitar.yml +11 -0
  963. data/db/seeds/chord_voicings/d/dmadd13-piano.yml +43 -0
  964. data/db/seeds/chord_voicings/d/dmadd2-guitar.yml +11 -0
  965. data/db/seeds/chord_voicings/d/dmadd2-piano.yml +43 -0
  966. data/db/seeds/chord_voicings/d/dmadd4-guitar.yml +11 -0
  967. data/db/seeds/chord_voicings/d/dmadd4-piano.yml +43 -0
  968. data/db/seeds/chord_voicings/d/dmadd9-guitar.yml +11 -0
  969. data/db/seeds/chord_voicings/d/dmadd9-piano.yml +43 -0
  970. data/db/seeds/chord_voicings/d/dmaj7-guitar.yml +83 -0
  971. data/db/seeds/chord_voicings/d/dmaj7-piano.yml +43 -0
  972. data/db/seeds/chord_voicings/d/dmaj7sharp5-guitar.yml +23 -0
  973. data/db/seeds/chord_voicings/d/dmaj7sharp5-piano.yml +43 -0
  974. data/db/seeds/chord_voicings/d/dsus2-guitar.yml +47 -0
  975. data/db/seeds/chord_voicings/d/dsus2-piano.yml +32 -0
  976. data/db/seeds/chord_voicings/d/dsus4-guitar.yml +59 -0
  977. data/db/seeds/chord_voicings/d/dsus4-piano.yml +32 -0
  978. data/db/seeds/chord_voicings/d-flat/dflat-guitar.yml +59 -0
  979. data/db/seeds/chord_voicings/d-flat/dflat-piano.yml +32 -0
  980. data/db/seeds/chord_voicings/d-flat/dflat11-guitar.yml +11 -0
  981. data/db/seeds/chord_voicings/d-flat/dflat11-piano.yml +71 -0
  982. data/db/seeds/chord_voicings/d-flat/dflat13-guitar.yml +11 -0
  983. data/db/seeds/chord_voicings/d-flat/dflat13-piano.yml +71 -0
  984. data/db/seeds/chord_voicings/d-flat/dflat13flat9-guitar.yml +11 -0
  985. data/db/seeds/chord_voicings/d-flat/dflat13flat9-piano.yml +71 -0
  986. data/db/seeds/chord_voicings/d-flat/dflat13sharp11-guitar.yml +11 -0
  987. data/db/seeds/chord_voicings/d-flat/dflat13sharp11-piano.yml +83 -0
  988. data/db/seeds/chord_voicings/d-flat/dflat13sharp9-guitar.yml +11 -0
  989. data/db/seeds/chord_voicings/d-flat/dflat13sharp9-piano.yml +71 -0
  990. data/db/seeds/chord_voicings/d-flat/dflat13sus4-guitar.yml +11 -0
  991. data/db/seeds/chord_voicings/d-flat/dflat13sus4-piano.yml +71 -0
  992. data/db/seeds/chord_voicings/d-flat/dflat5-guitar.yml +23 -0
  993. data/db/seeds/chord_voicings/d-flat/dflat5-piano.yml +21 -0
  994. data/db/seeds/chord_voicings/d-flat/dflat6-guitar.yml +59 -0
  995. data/db/seeds/chord_voicings/d-flat/dflat6-piano.yml +43 -0
  996. data/db/seeds/chord_voicings/d-flat/dflat7-guitar.yml +59 -0
  997. data/db/seeds/chord_voicings/d-flat/dflat7-piano.yml +43 -0
  998. data/db/seeds/chord_voicings/d-flat/dflat7flat13-guitar.yml +11 -0
  999. data/db/seeds/chord_voicings/d-flat/dflat7flat13-piano.yml +54 -0
  1000. data/db/seeds/chord_voicings/d-flat/dflat7flat5-guitar.yml +11 -0
  1001. data/db/seeds/chord_voicings/d-flat/dflat7flat5-piano.yml +43 -0
  1002. data/db/seeds/chord_voicings/d-flat/dflat7flat5flat9-guitar.yml +11 -0
  1003. data/db/seeds/chord_voicings/d-flat/dflat7flat5flat9-piano.yml +54 -0
  1004. data/db/seeds/chord_voicings/d-flat/dflat7flat5sharp9-guitar.yml +11 -0
  1005. data/db/seeds/chord_voicings/d-flat/dflat7flat5sharp9-piano.yml +54 -0
  1006. data/db/seeds/chord_voicings/d-flat/dflat7flat9-guitar.yml +11 -0
  1007. data/db/seeds/chord_voicings/d-flat/dflat7flat9-piano.yml +54 -0
  1008. data/db/seeds/chord_voicings/d-flat/dflat7flat9flat13-guitar.yml +11 -0
  1009. data/db/seeds/chord_voicings/d-flat/dflat7flat9flat13-piano.yml +65 -0
  1010. data/db/seeds/chord_voicings/d-flat/dflat7flat9sharp11-guitar.yml +11 -0
  1011. data/db/seeds/chord_voicings/d-flat/dflat7flat9sharp11-piano.yml +65 -0
  1012. data/db/seeds/chord_voicings/d-flat/dflat7sharp11-guitar.yml +11 -0
  1013. data/db/seeds/chord_voicings/d-flat/dflat7sharp11-piano.yml +54 -0
  1014. data/db/seeds/chord_voicings/d-flat/dflat7sharp5-guitar.yml +11 -0
  1015. data/db/seeds/chord_voicings/d-flat/dflat7sharp5-piano.yml +43 -0
  1016. data/db/seeds/chord_voicings/d-flat/dflat7sharp5flat9-guitar.yml +11 -0
  1017. data/db/seeds/chord_voicings/d-flat/dflat7sharp5flat9-piano.yml +54 -0
  1018. data/db/seeds/chord_voicings/d-flat/dflat7sharp5sharp9-guitar.yml +11 -0
  1019. data/db/seeds/chord_voicings/d-flat/dflat7sharp5sharp9-piano.yml +54 -0
  1020. data/db/seeds/chord_voicings/d-flat/dflat7sharp9-guitar.yml +11 -0
  1021. data/db/seeds/chord_voicings/d-flat/dflat7sharp9-piano.yml +54 -0
  1022. data/db/seeds/chord_voicings/d-flat/dflat7sharp9flat13-guitar.yml +11 -0
  1023. data/db/seeds/chord_voicings/d-flat/dflat7sharp9flat13-piano.yml +65 -0
  1024. data/db/seeds/chord_voicings/d-flat/dflat7sus2-guitar.yml +23 -0
  1025. data/db/seeds/chord_voicings/d-flat/dflat7sus2-piano.yml +43 -0
  1026. data/db/seeds/chord_voicings/d-flat/dflat7sus4-guitar.yml +35 -0
  1027. data/db/seeds/chord_voicings/d-flat/dflat7sus4-piano.yml +43 -0
  1028. data/db/seeds/chord_voicings/d-flat/dflat9-guitar.yml +11 -0
  1029. data/db/seeds/chord_voicings/d-flat/dflat9-piano.yml +54 -0
  1030. data/db/seeds/chord_voicings/d-flat/dflat9flat13-guitar.yml +11 -0
  1031. data/db/seeds/chord_voicings/d-flat/dflat9flat13-piano.yml +65 -0
  1032. data/db/seeds/chord_voicings/d-flat/dflat9sharp11-guitar.yml +11 -0
  1033. data/db/seeds/chord_voicings/d-flat/dflat9sharp11-piano.yml +65 -0
  1034. data/db/seeds/chord_voicings/d-flat/dflat9sus4-guitar.yml +11 -0
  1035. data/db/seeds/chord_voicings/d-flat/dflat9sus4-piano.yml +54 -0
  1036. data/db/seeds/chord_voicings/d-flat/dflatadd11-guitar.yml +11 -0
  1037. data/db/seeds/chord_voicings/d-flat/dflatadd11-piano.yml +43 -0
  1038. data/db/seeds/chord_voicings/d-flat/dflatadd13-guitar.yml +11 -0
  1039. data/db/seeds/chord_voicings/d-flat/dflatadd13-piano.yml +43 -0
  1040. data/db/seeds/chord_voicings/d-flat/dflatadd2-guitar.yml +11 -0
  1041. data/db/seeds/chord_voicings/d-flat/dflatadd2-piano.yml +43 -0
  1042. data/db/seeds/chord_voicings/d-flat/dflatadd4-guitar.yml +11 -0
  1043. data/db/seeds/chord_voicings/d-flat/dflatadd4-piano.yml +43 -0
  1044. data/db/seeds/chord_voicings/d-flat/dflatadd9-guitar.yml +11 -0
  1045. data/db/seeds/chord_voicings/d-flat/dflatadd9-piano.yml +43 -0
  1046. data/db/seeds/chord_voicings/d-flat/dflataug-guitar.yml +23 -0
  1047. data/db/seeds/chord_voicings/d-flat/dflataug-piano.yml +32 -0
  1048. data/db/seeds/chord_voicings/d-flat/dflatdim-guitar.yml +23 -0
  1049. data/db/seeds/chord_voicings/d-flat/dflatdim-piano.yml +32 -0
  1050. data/db/seeds/chord_voicings/d-flat/dflatdim7-guitar.yml +23 -0
  1051. data/db/seeds/chord_voicings/d-flat/dflatdim7-piano.yml +43 -0
  1052. data/db/seeds/chord_voicings/d-flat/dflatm-guitar.yml +35 -0
  1053. data/db/seeds/chord_voicings/d-flat/dflatm-maj7-guitar.yml +35 -0
  1054. data/db/seeds/chord_voicings/d-flat/dflatm-maj7-piano.yml +43 -0
  1055. data/db/seeds/chord_voicings/d-flat/dflatm-piano.yml +32 -0
  1056. data/db/seeds/chord_voicings/d-flat/dflatm11-guitar.yml +11 -0
  1057. data/db/seeds/chord_voicings/d-flat/dflatm11-piano.yml +71 -0
  1058. data/db/seeds/chord_voicings/d-flat/dflatm13-guitar.yml +11 -0
  1059. data/db/seeds/chord_voicings/d-flat/dflatm13-piano.yml +71 -0
  1060. data/db/seeds/chord_voicings/d-flat/dflatm6-guitar.yml +35 -0
  1061. data/db/seeds/chord_voicings/d-flat/dflatm6-piano.yml +43 -0
  1062. data/db/seeds/chord_voicings/d-flat/dflatm7-guitar.yml +35 -0
  1063. data/db/seeds/chord_voicings/d-flat/dflatm7-piano.yml +43 -0
  1064. data/db/seeds/chord_voicings/d-flat/dflatm7add11-guitar.yml +11 -0
  1065. data/db/seeds/chord_voicings/d-flat/dflatm7add11-piano.yml +54 -0
  1066. data/db/seeds/chord_voicings/d-flat/dflatm7flat5-guitar.yml +23 -0
  1067. data/db/seeds/chord_voicings/d-flat/dflatm7flat5-piano.yml +43 -0
  1068. data/db/seeds/chord_voicings/d-flat/dflatm9-guitar.yml +11 -0
  1069. data/db/seeds/chord_voicings/d-flat/dflatm9-piano.yml +54 -0
  1070. data/db/seeds/chord_voicings/d-flat/dflatmadd11-guitar.yml +11 -0
  1071. data/db/seeds/chord_voicings/d-flat/dflatmadd11-piano.yml +43 -0
  1072. data/db/seeds/chord_voicings/d-flat/dflatmadd13-guitar.yml +11 -0
  1073. data/db/seeds/chord_voicings/d-flat/dflatmadd13-piano.yml +43 -0
  1074. data/db/seeds/chord_voicings/d-flat/dflatmadd2-guitar.yml +11 -0
  1075. data/db/seeds/chord_voicings/d-flat/dflatmadd2-piano.yml +43 -0
  1076. data/db/seeds/chord_voicings/d-flat/dflatmadd4-guitar.yml +11 -0
  1077. data/db/seeds/chord_voicings/d-flat/dflatmadd4-piano.yml +43 -0
  1078. data/db/seeds/chord_voicings/d-flat/dflatmadd9-guitar.yml +11 -0
  1079. data/db/seeds/chord_voicings/d-flat/dflatmadd9-piano.yml +43 -0
  1080. data/db/seeds/chord_voicings/d-flat/dflatmaj7-guitar.yml +59 -0
  1081. data/db/seeds/chord_voicings/d-flat/dflatmaj7-piano.yml +43 -0
  1082. data/db/seeds/chord_voicings/d-flat/dflatmaj7sharp5-guitar.yml +23 -0
  1083. data/db/seeds/chord_voicings/d-flat/dflatmaj7sharp5-piano.yml +43 -0
  1084. data/db/seeds/chord_voicings/d-flat/dflatsus2-guitar.yml +23 -0
  1085. data/db/seeds/chord_voicings/d-flat/dflatsus2-piano.yml +32 -0
  1086. data/db/seeds/chord_voicings/d-flat/dflatsus4-guitar.yml +35 -0
  1087. data/db/seeds/chord_voicings/d-flat/dflatsus4-piano.yml +32 -0
  1088. data/db/seeds/chord_voicings/d-sharp/dsharp-guitar.yml +59 -0
  1089. data/db/seeds/chord_voicings/d-sharp/dsharp-piano.yml +32 -0
  1090. data/db/seeds/chord_voicings/d-sharp/dsharp11-guitar.yml +11 -0
  1091. data/db/seeds/chord_voicings/d-sharp/dsharp11-piano.yml +71 -0
  1092. data/db/seeds/chord_voicings/d-sharp/dsharp13-guitar.yml +11 -0
  1093. data/db/seeds/chord_voicings/d-sharp/dsharp13-piano.yml +71 -0
  1094. data/db/seeds/chord_voicings/d-sharp/dsharp13flat9-guitar.yml +11 -0
  1095. data/db/seeds/chord_voicings/d-sharp/dsharp13flat9-piano.yml +71 -0
  1096. data/db/seeds/chord_voicings/d-sharp/dsharp13sharp11-guitar.yml +11 -0
  1097. data/db/seeds/chord_voicings/d-sharp/dsharp13sharp11-piano.yml +83 -0
  1098. data/db/seeds/chord_voicings/d-sharp/dsharp13sharp9-guitar.yml +11 -0
  1099. data/db/seeds/chord_voicings/d-sharp/dsharp13sharp9-piano.yml +71 -0
  1100. data/db/seeds/chord_voicings/d-sharp/dsharp13sus4-guitar.yml +11 -0
  1101. data/db/seeds/chord_voicings/d-sharp/dsharp13sus4-piano.yml +71 -0
  1102. data/db/seeds/chord_voicings/d-sharp/dsharp5-guitar.yml +23 -0
  1103. data/db/seeds/chord_voicings/d-sharp/dsharp5-piano.yml +21 -0
  1104. data/db/seeds/chord_voicings/d-sharp/dsharp6-guitar.yml +59 -0
  1105. data/db/seeds/chord_voicings/d-sharp/dsharp6-piano.yml +43 -0
  1106. data/db/seeds/chord_voicings/d-sharp/dsharp7-guitar.yml +59 -0
  1107. data/db/seeds/chord_voicings/d-sharp/dsharp7-piano.yml +43 -0
  1108. data/db/seeds/chord_voicings/d-sharp/dsharp7flat13-guitar.yml +11 -0
  1109. data/db/seeds/chord_voicings/d-sharp/dsharp7flat13-piano.yml +54 -0
  1110. data/db/seeds/chord_voicings/d-sharp/dsharp7flat5-guitar.yml +11 -0
  1111. data/db/seeds/chord_voicings/d-sharp/dsharp7flat5-piano.yml +43 -0
  1112. data/db/seeds/chord_voicings/d-sharp/dsharp7flat5flat9-guitar.yml +11 -0
  1113. data/db/seeds/chord_voicings/d-sharp/dsharp7flat5flat9-piano.yml +54 -0
  1114. data/db/seeds/chord_voicings/d-sharp/dsharp7flat5sharp9-guitar.yml +11 -0
  1115. data/db/seeds/chord_voicings/d-sharp/dsharp7flat5sharp9-piano.yml +54 -0
  1116. data/db/seeds/chord_voicings/d-sharp/dsharp7flat9-guitar.yml +11 -0
  1117. data/db/seeds/chord_voicings/d-sharp/dsharp7flat9-piano.yml +54 -0
  1118. data/db/seeds/chord_voicings/d-sharp/dsharp7flat9flat13-guitar.yml +11 -0
  1119. data/db/seeds/chord_voicings/d-sharp/dsharp7flat9flat13-piano.yml +65 -0
  1120. data/db/seeds/chord_voicings/d-sharp/dsharp7flat9sharp11-guitar.yml +11 -0
  1121. data/db/seeds/chord_voicings/d-sharp/dsharp7flat9sharp11-piano.yml +65 -0
  1122. data/db/seeds/chord_voicings/d-sharp/dsharp7sharp11-guitar.yml +11 -0
  1123. data/db/seeds/chord_voicings/d-sharp/dsharp7sharp11-piano.yml +54 -0
  1124. data/db/seeds/chord_voicings/d-sharp/dsharp7sharp5-guitar.yml +11 -0
  1125. data/db/seeds/chord_voicings/d-sharp/dsharp7sharp5-piano.yml +43 -0
  1126. data/db/seeds/chord_voicings/d-sharp/dsharp7sharp5flat9-guitar.yml +11 -0
  1127. data/db/seeds/chord_voicings/d-sharp/dsharp7sharp5flat9-piano.yml +54 -0
  1128. data/db/seeds/chord_voicings/d-sharp/dsharp7sharp5sharp9-guitar.yml +11 -0
  1129. data/db/seeds/chord_voicings/d-sharp/dsharp7sharp5sharp9-piano.yml +54 -0
  1130. data/db/seeds/chord_voicings/d-sharp/dsharp7sharp9-guitar.yml +11 -0
  1131. data/db/seeds/chord_voicings/d-sharp/dsharp7sharp9-piano.yml +54 -0
  1132. data/db/seeds/chord_voicings/d-sharp/dsharp7sharp9flat13-guitar.yml +11 -0
  1133. data/db/seeds/chord_voicings/d-sharp/dsharp7sharp9flat13-piano.yml +65 -0
  1134. data/db/seeds/chord_voicings/d-sharp/dsharp7sus2-guitar.yml +23 -0
  1135. data/db/seeds/chord_voicings/d-sharp/dsharp7sus2-piano.yml +43 -0
  1136. data/db/seeds/chord_voicings/d-sharp/dsharp7sus4-guitar.yml +35 -0
  1137. data/db/seeds/chord_voicings/d-sharp/dsharp7sus4-piano.yml +43 -0
  1138. data/db/seeds/chord_voicings/d-sharp/dsharp9-guitar.yml +11 -0
  1139. data/db/seeds/chord_voicings/d-sharp/dsharp9-piano.yml +54 -0
  1140. data/db/seeds/chord_voicings/d-sharp/dsharp9flat13-guitar.yml +11 -0
  1141. data/db/seeds/chord_voicings/d-sharp/dsharp9flat13-piano.yml +65 -0
  1142. data/db/seeds/chord_voicings/d-sharp/dsharp9sharp11-guitar.yml +11 -0
  1143. data/db/seeds/chord_voicings/d-sharp/dsharp9sharp11-piano.yml +65 -0
  1144. data/db/seeds/chord_voicings/d-sharp/dsharp9sus4-guitar.yml +11 -0
  1145. data/db/seeds/chord_voicings/d-sharp/dsharp9sus4-piano.yml +54 -0
  1146. data/db/seeds/chord_voicings/d-sharp/dsharpadd11-guitar.yml +11 -0
  1147. data/db/seeds/chord_voicings/d-sharp/dsharpadd11-piano.yml +43 -0
  1148. data/db/seeds/chord_voicings/d-sharp/dsharpadd13-guitar.yml +11 -0
  1149. data/db/seeds/chord_voicings/d-sharp/dsharpadd13-piano.yml +43 -0
  1150. data/db/seeds/chord_voicings/d-sharp/dsharpadd2-guitar.yml +11 -0
  1151. data/db/seeds/chord_voicings/d-sharp/dsharpadd2-piano.yml +43 -0
  1152. data/db/seeds/chord_voicings/d-sharp/dsharpadd4-guitar.yml +11 -0
  1153. data/db/seeds/chord_voicings/d-sharp/dsharpadd4-piano.yml +43 -0
  1154. data/db/seeds/chord_voicings/d-sharp/dsharpadd9-guitar.yml +11 -0
  1155. data/db/seeds/chord_voicings/d-sharp/dsharpadd9-piano.yml +43 -0
  1156. data/db/seeds/chord_voicings/d-sharp/dsharpaug-guitar.yml +23 -0
  1157. data/db/seeds/chord_voicings/d-sharp/dsharpaug-piano.yml +32 -0
  1158. data/db/seeds/chord_voicings/d-sharp/dsharpdim-guitar.yml +23 -0
  1159. data/db/seeds/chord_voicings/d-sharp/dsharpdim-piano.yml +32 -0
  1160. data/db/seeds/chord_voicings/d-sharp/dsharpdim7-guitar.yml +23 -0
  1161. data/db/seeds/chord_voicings/d-sharp/dsharpdim7-piano.yml +43 -0
  1162. data/db/seeds/chord_voicings/d-sharp/dsharpm-guitar.yml +35 -0
  1163. data/db/seeds/chord_voicings/d-sharp/dsharpm-maj7-guitar.yml +35 -0
  1164. data/db/seeds/chord_voicings/d-sharp/dsharpm-maj7-piano.yml +43 -0
  1165. data/db/seeds/chord_voicings/d-sharp/dsharpm-piano.yml +32 -0
  1166. data/db/seeds/chord_voicings/d-sharp/dsharpm11-guitar.yml +11 -0
  1167. data/db/seeds/chord_voicings/d-sharp/dsharpm11-piano.yml +71 -0
  1168. data/db/seeds/chord_voicings/d-sharp/dsharpm13-guitar.yml +11 -0
  1169. data/db/seeds/chord_voicings/d-sharp/dsharpm13-piano.yml +71 -0
  1170. data/db/seeds/chord_voicings/d-sharp/dsharpm6-guitar.yml +35 -0
  1171. data/db/seeds/chord_voicings/d-sharp/dsharpm6-piano.yml +43 -0
  1172. data/db/seeds/chord_voicings/d-sharp/dsharpm7-guitar.yml +35 -0
  1173. data/db/seeds/chord_voicings/d-sharp/dsharpm7-piano.yml +43 -0
  1174. data/db/seeds/chord_voicings/d-sharp/dsharpm7add11-guitar.yml +11 -0
  1175. data/db/seeds/chord_voicings/d-sharp/dsharpm7add11-piano.yml +54 -0
  1176. data/db/seeds/chord_voicings/d-sharp/dsharpm7flat5-guitar.yml +23 -0
  1177. data/db/seeds/chord_voicings/d-sharp/dsharpm7flat5-piano.yml +43 -0
  1178. data/db/seeds/chord_voicings/d-sharp/dsharpm9-guitar.yml +11 -0
  1179. data/db/seeds/chord_voicings/d-sharp/dsharpm9-piano.yml +54 -0
  1180. data/db/seeds/chord_voicings/d-sharp/dsharpmadd11-guitar.yml +11 -0
  1181. data/db/seeds/chord_voicings/d-sharp/dsharpmadd11-piano.yml +43 -0
  1182. data/db/seeds/chord_voicings/d-sharp/dsharpmadd13-guitar.yml +11 -0
  1183. data/db/seeds/chord_voicings/d-sharp/dsharpmadd13-piano.yml +43 -0
  1184. data/db/seeds/chord_voicings/d-sharp/dsharpmadd2-guitar.yml +11 -0
  1185. data/db/seeds/chord_voicings/d-sharp/dsharpmadd2-piano.yml +43 -0
  1186. data/db/seeds/chord_voicings/d-sharp/dsharpmadd4-guitar.yml +11 -0
  1187. data/db/seeds/chord_voicings/d-sharp/dsharpmadd4-piano.yml +43 -0
  1188. data/db/seeds/chord_voicings/d-sharp/dsharpmadd9-guitar.yml +11 -0
  1189. data/db/seeds/chord_voicings/d-sharp/dsharpmadd9-piano.yml +43 -0
  1190. data/db/seeds/chord_voicings/d-sharp/dsharpmaj7-guitar.yml +59 -0
  1191. data/db/seeds/chord_voicings/d-sharp/dsharpmaj7-piano.yml +43 -0
  1192. data/db/seeds/chord_voicings/d-sharp/dsharpmaj7sharp5-guitar.yml +23 -0
  1193. data/db/seeds/chord_voicings/d-sharp/dsharpmaj7sharp5-piano.yml +43 -0
  1194. data/db/seeds/chord_voicings/d-sharp/dsharpsus2-guitar.yml +23 -0
  1195. data/db/seeds/chord_voicings/d-sharp/dsharpsus2-piano.yml +32 -0
  1196. data/db/seeds/chord_voicings/d-sharp/dsharpsus4-guitar.yml +35 -0
  1197. data/db/seeds/chord_voicings/d-sharp/dsharpsus4-piano.yml +32 -0
  1198. data/db/seeds/chord_voicings/e/e-guitar.yml +59 -0
  1199. data/db/seeds/chord_voicings/e/e-piano.yml +32 -0
  1200. data/db/seeds/chord_voicings/e/e11-guitar.yml +11 -0
  1201. data/db/seeds/chord_voicings/e/e11-piano.yml +71 -0
  1202. data/db/seeds/chord_voicings/e/e13-guitar.yml +11 -0
  1203. data/db/seeds/chord_voicings/e/e13-piano.yml +71 -0
  1204. data/db/seeds/chord_voicings/e/e13flat9-guitar.yml +11 -0
  1205. data/db/seeds/chord_voicings/e/e13flat9-piano.yml +71 -0
  1206. data/db/seeds/chord_voicings/e/e13sharp11-guitar.yml +11 -0
  1207. data/db/seeds/chord_voicings/e/e13sharp11-piano.yml +83 -0
  1208. data/db/seeds/chord_voicings/e/e13sharp9-guitar.yml +11 -0
  1209. data/db/seeds/chord_voicings/e/e13sharp9-piano.yml +71 -0
  1210. data/db/seeds/chord_voicings/e/e13sus4-guitar.yml +11 -0
  1211. data/db/seeds/chord_voicings/e/e13sus4-piano.yml +71 -0
  1212. data/db/seeds/chord_voicings/e/e5-guitar.yml +23 -0
  1213. data/db/seeds/chord_voicings/e/e5-piano.yml +21 -0
  1214. data/db/seeds/chord_voicings/e/e6-guitar.yml +59 -0
  1215. data/db/seeds/chord_voicings/e/e6-piano.yml +43 -0
  1216. data/db/seeds/chord_voicings/e/e7-guitar.yml +59 -0
  1217. data/db/seeds/chord_voicings/e/e7-piano.yml +43 -0
  1218. data/db/seeds/chord_voicings/e/e7flat13-guitar.yml +11 -0
  1219. data/db/seeds/chord_voicings/e/e7flat13-piano.yml +54 -0
  1220. data/db/seeds/chord_voicings/e/e7flat5-guitar.yml +11 -0
  1221. data/db/seeds/chord_voicings/e/e7flat5-piano.yml +43 -0
  1222. data/db/seeds/chord_voicings/e/e7flat5flat9-guitar.yml +11 -0
  1223. data/db/seeds/chord_voicings/e/e7flat5flat9-piano.yml +54 -0
  1224. data/db/seeds/chord_voicings/e/e7flat5sharp9-guitar.yml +11 -0
  1225. data/db/seeds/chord_voicings/e/e7flat5sharp9-piano.yml +54 -0
  1226. data/db/seeds/chord_voicings/e/e7flat9-guitar.yml +11 -0
  1227. data/db/seeds/chord_voicings/e/e7flat9-piano.yml +54 -0
  1228. data/db/seeds/chord_voicings/e/e7flat9flat13-guitar.yml +11 -0
  1229. data/db/seeds/chord_voicings/e/e7flat9flat13-piano.yml +65 -0
  1230. data/db/seeds/chord_voicings/e/e7flat9sharp11-guitar.yml +11 -0
  1231. data/db/seeds/chord_voicings/e/e7flat9sharp11-piano.yml +65 -0
  1232. data/db/seeds/chord_voicings/e/e7sharp11-guitar.yml +11 -0
  1233. data/db/seeds/chord_voicings/e/e7sharp11-piano.yml +54 -0
  1234. data/db/seeds/chord_voicings/e/e7sharp5-guitar.yml +11 -0
  1235. data/db/seeds/chord_voicings/e/e7sharp5-piano.yml +43 -0
  1236. data/db/seeds/chord_voicings/e/e7sharp5flat9-guitar.yml +11 -0
  1237. data/db/seeds/chord_voicings/e/e7sharp5flat9-piano.yml +54 -0
  1238. data/db/seeds/chord_voicings/e/e7sharp5sharp9-guitar.yml +11 -0
  1239. data/db/seeds/chord_voicings/e/e7sharp5sharp9-piano.yml +54 -0
  1240. data/db/seeds/chord_voicings/e/e7sharp9-guitar.yml +11 -0
  1241. data/db/seeds/chord_voicings/e/e7sharp9-piano.yml +54 -0
  1242. data/db/seeds/chord_voicings/e/e7sharp9flat13-guitar.yml +11 -0
  1243. data/db/seeds/chord_voicings/e/e7sharp9flat13-piano.yml +65 -0
  1244. data/db/seeds/chord_voicings/e/e7sus2-guitar.yml +23 -0
  1245. data/db/seeds/chord_voicings/e/e7sus2-piano.yml +43 -0
  1246. data/db/seeds/chord_voicings/e/e7sus4-guitar.yml +35 -0
  1247. data/db/seeds/chord_voicings/e/e7sus4-piano.yml +43 -0
  1248. data/db/seeds/chord_voicings/e/e9-guitar.yml +11 -0
  1249. data/db/seeds/chord_voicings/e/e9-piano.yml +54 -0
  1250. data/db/seeds/chord_voicings/e/e9flat13-guitar.yml +11 -0
  1251. data/db/seeds/chord_voicings/e/e9flat13-piano.yml +65 -0
  1252. data/db/seeds/chord_voicings/e/e9sharp11-guitar.yml +11 -0
  1253. data/db/seeds/chord_voicings/e/e9sharp11-piano.yml +65 -0
  1254. data/db/seeds/chord_voicings/e/e9sus4-guitar.yml +11 -0
  1255. data/db/seeds/chord_voicings/e/e9sus4-piano.yml +54 -0
  1256. data/db/seeds/chord_voicings/e/eadd11-guitar.yml +11 -0
  1257. data/db/seeds/chord_voicings/e/eadd11-piano.yml +43 -0
  1258. data/db/seeds/chord_voicings/e/eadd13-guitar.yml +11 -0
  1259. data/db/seeds/chord_voicings/e/eadd13-piano.yml +43 -0
  1260. data/db/seeds/chord_voicings/e/eadd2-guitar.yml +11 -0
  1261. data/db/seeds/chord_voicings/e/eadd2-piano.yml +43 -0
  1262. data/db/seeds/chord_voicings/e/eadd4-guitar.yml +11 -0
  1263. data/db/seeds/chord_voicings/e/eadd4-piano.yml +43 -0
  1264. data/db/seeds/chord_voicings/e/eadd9-guitar.yml +11 -0
  1265. data/db/seeds/chord_voicings/e/eadd9-piano.yml +43 -0
  1266. data/db/seeds/chord_voicings/e/eaug-guitar.yml +23 -0
  1267. data/db/seeds/chord_voicings/e/eaug-piano.yml +32 -0
  1268. data/db/seeds/chord_voicings/e/edim-guitar.yml +23 -0
  1269. data/db/seeds/chord_voicings/e/edim-piano.yml +32 -0
  1270. data/db/seeds/chord_voicings/e/edim7-guitar.yml +23 -0
  1271. data/db/seeds/chord_voicings/e/edim7-piano.yml +43 -0
  1272. data/db/seeds/chord_voicings/e/em-guitar.yml +35 -0
  1273. data/db/seeds/chord_voicings/e/em-maj7-guitar.yml +35 -0
  1274. data/db/seeds/chord_voicings/e/em-maj7-piano.yml +43 -0
  1275. data/db/seeds/chord_voicings/e/em-piano.yml +32 -0
  1276. data/db/seeds/chord_voicings/e/em11-guitar.yml +11 -0
  1277. data/db/seeds/chord_voicings/e/em11-piano.yml +71 -0
  1278. data/db/seeds/chord_voicings/e/em13-guitar.yml +11 -0
  1279. data/db/seeds/chord_voicings/e/em13-piano.yml +71 -0
  1280. data/db/seeds/chord_voicings/e/em6-guitar.yml +35 -0
  1281. data/db/seeds/chord_voicings/e/em6-piano.yml +43 -0
  1282. data/db/seeds/chord_voicings/e/em7-guitar.yml +35 -0
  1283. data/db/seeds/chord_voicings/e/em7-piano.yml +43 -0
  1284. data/db/seeds/chord_voicings/e/em7add11-guitar.yml +11 -0
  1285. data/db/seeds/chord_voicings/e/em7add11-piano.yml +54 -0
  1286. data/db/seeds/chord_voicings/e/em7flat5-guitar.yml +23 -0
  1287. data/db/seeds/chord_voicings/e/em7flat5-piano.yml +43 -0
  1288. data/db/seeds/chord_voicings/e/em9-guitar.yml +11 -0
  1289. data/db/seeds/chord_voicings/e/em9-piano.yml +54 -0
  1290. data/db/seeds/chord_voicings/e/emadd11-guitar.yml +11 -0
  1291. data/db/seeds/chord_voicings/e/emadd11-piano.yml +43 -0
  1292. data/db/seeds/chord_voicings/e/emadd13-guitar.yml +11 -0
  1293. data/db/seeds/chord_voicings/e/emadd13-piano.yml +43 -0
  1294. data/db/seeds/chord_voicings/e/emadd2-guitar.yml +11 -0
  1295. data/db/seeds/chord_voicings/e/emadd2-piano.yml +43 -0
  1296. data/db/seeds/chord_voicings/e/emadd4-guitar.yml +11 -0
  1297. data/db/seeds/chord_voicings/e/emadd4-piano.yml +43 -0
  1298. data/db/seeds/chord_voicings/e/emadd9-guitar.yml +11 -0
  1299. data/db/seeds/chord_voicings/e/emadd9-piano.yml +43 -0
  1300. data/db/seeds/chord_voicings/e/emaj7-guitar.yml +59 -0
  1301. data/db/seeds/chord_voicings/e/emaj7-piano.yml +43 -0
  1302. data/db/seeds/chord_voicings/e/emaj7sharp5-guitar.yml +23 -0
  1303. data/db/seeds/chord_voicings/e/emaj7sharp5-piano.yml +43 -0
  1304. data/db/seeds/chord_voicings/e/esus2-guitar.yml +23 -0
  1305. data/db/seeds/chord_voicings/e/esus2-piano.yml +32 -0
  1306. data/db/seeds/chord_voicings/e/esus4-guitar.yml +35 -0
  1307. data/db/seeds/chord_voicings/e/esus4-piano.yml +32 -0
  1308. data/db/seeds/chord_voicings/e-flat/eflat-guitar.yml +59 -0
  1309. data/db/seeds/chord_voicings/e-flat/eflat-piano.yml +32 -0
  1310. data/db/seeds/chord_voicings/e-flat/eflat11-guitar.yml +11 -0
  1311. data/db/seeds/chord_voicings/e-flat/eflat11-piano.yml +71 -0
  1312. data/db/seeds/chord_voicings/e-flat/eflat13-guitar.yml +11 -0
  1313. data/db/seeds/chord_voicings/e-flat/eflat13-piano.yml +71 -0
  1314. data/db/seeds/chord_voicings/e-flat/eflat13flat9-guitar.yml +11 -0
  1315. data/db/seeds/chord_voicings/e-flat/eflat13flat9-piano.yml +71 -0
  1316. data/db/seeds/chord_voicings/e-flat/eflat13sharp11-guitar.yml +11 -0
  1317. data/db/seeds/chord_voicings/e-flat/eflat13sharp11-piano.yml +83 -0
  1318. data/db/seeds/chord_voicings/e-flat/eflat13sharp9-guitar.yml +11 -0
  1319. data/db/seeds/chord_voicings/e-flat/eflat13sharp9-piano.yml +71 -0
  1320. data/db/seeds/chord_voicings/e-flat/eflat13sus4-guitar.yml +11 -0
  1321. data/db/seeds/chord_voicings/e-flat/eflat13sus4-piano.yml +71 -0
  1322. data/db/seeds/chord_voicings/e-flat/eflat5-guitar.yml +23 -0
  1323. data/db/seeds/chord_voicings/e-flat/eflat5-piano.yml +21 -0
  1324. data/db/seeds/chord_voicings/e-flat/eflat6-guitar.yml +59 -0
  1325. data/db/seeds/chord_voicings/e-flat/eflat6-piano.yml +43 -0
  1326. data/db/seeds/chord_voicings/e-flat/eflat7-guitar.yml +59 -0
  1327. data/db/seeds/chord_voicings/e-flat/eflat7-piano.yml +43 -0
  1328. data/db/seeds/chord_voicings/e-flat/eflat7flat13-guitar.yml +11 -0
  1329. data/db/seeds/chord_voicings/e-flat/eflat7flat13-piano.yml +54 -0
  1330. data/db/seeds/chord_voicings/e-flat/eflat7flat5-guitar.yml +11 -0
  1331. data/db/seeds/chord_voicings/e-flat/eflat7flat5-piano.yml +43 -0
  1332. data/db/seeds/chord_voicings/e-flat/eflat7flat5flat9-guitar.yml +11 -0
  1333. data/db/seeds/chord_voicings/e-flat/eflat7flat5flat9-piano.yml +54 -0
  1334. data/db/seeds/chord_voicings/e-flat/eflat7flat5sharp9-guitar.yml +11 -0
  1335. data/db/seeds/chord_voicings/e-flat/eflat7flat5sharp9-piano.yml +54 -0
  1336. data/db/seeds/chord_voicings/e-flat/eflat7flat9-guitar.yml +11 -0
  1337. data/db/seeds/chord_voicings/e-flat/eflat7flat9-piano.yml +54 -0
  1338. data/db/seeds/chord_voicings/e-flat/eflat7flat9flat13-guitar.yml +11 -0
  1339. data/db/seeds/chord_voicings/e-flat/eflat7flat9flat13-piano.yml +65 -0
  1340. data/db/seeds/chord_voicings/e-flat/eflat7flat9sharp11-guitar.yml +11 -0
  1341. data/db/seeds/chord_voicings/e-flat/eflat7flat9sharp11-piano.yml +65 -0
  1342. data/db/seeds/chord_voicings/e-flat/eflat7sharp11-guitar.yml +11 -0
  1343. data/db/seeds/chord_voicings/e-flat/eflat7sharp11-piano.yml +54 -0
  1344. data/db/seeds/chord_voicings/e-flat/eflat7sharp5-guitar.yml +11 -0
  1345. data/db/seeds/chord_voicings/e-flat/eflat7sharp5-piano.yml +43 -0
  1346. data/db/seeds/chord_voicings/e-flat/eflat7sharp5flat9-guitar.yml +11 -0
  1347. data/db/seeds/chord_voicings/e-flat/eflat7sharp5flat9-piano.yml +54 -0
  1348. data/db/seeds/chord_voicings/e-flat/eflat7sharp5sharp9-guitar.yml +11 -0
  1349. data/db/seeds/chord_voicings/e-flat/eflat7sharp5sharp9-piano.yml +54 -0
  1350. data/db/seeds/chord_voicings/e-flat/eflat7sharp9-guitar.yml +11 -0
  1351. data/db/seeds/chord_voicings/e-flat/eflat7sharp9-piano.yml +54 -0
  1352. data/db/seeds/chord_voicings/e-flat/eflat7sharp9flat13-guitar.yml +11 -0
  1353. data/db/seeds/chord_voicings/e-flat/eflat7sharp9flat13-piano.yml +65 -0
  1354. data/db/seeds/chord_voicings/e-flat/eflat7sus2-guitar.yml +23 -0
  1355. data/db/seeds/chord_voicings/e-flat/eflat7sus2-piano.yml +43 -0
  1356. data/db/seeds/chord_voicings/e-flat/eflat7sus4-guitar.yml +35 -0
  1357. data/db/seeds/chord_voicings/e-flat/eflat7sus4-piano.yml +43 -0
  1358. data/db/seeds/chord_voicings/e-flat/eflat9-guitar.yml +11 -0
  1359. data/db/seeds/chord_voicings/e-flat/eflat9-piano.yml +54 -0
  1360. data/db/seeds/chord_voicings/e-flat/eflat9flat13-guitar.yml +11 -0
  1361. data/db/seeds/chord_voicings/e-flat/eflat9flat13-piano.yml +65 -0
  1362. data/db/seeds/chord_voicings/e-flat/eflat9sharp11-guitar.yml +11 -0
  1363. data/db/seeds/chord_voicings/e-flat/eflat9sharp11-piano.yml +65 -0
  1364. data/db/seeds/chord_voicings/e-flat/eflat9sus4-guitar.yml +11 -0
  1365. data/db/seeds/chord_voicings/e-flat/eflat9sus4-piano.yml +54 -0
  1366. data/db/seeds/chord_voicings/e-flat/eflatadd11-guitar.yml +11 -0
  1367. data/db/seeds/chord_voicings/e-flat/eflatadd11-piano.yml +43 -0
  1368. data/db/seeds/chord_voicings/e-flat/eflatadd13-guitar.yml +11 -0
  1369. data/db/seeds/chord_voicings/e-flat/eflatadd13-piano.yml +43 -0
  1370. data/db/seeds/chord_voicings/e-flat/eflatadd2-guitar.yml +11 -0
  1371. data/db/seeds/chord_voicings/e-flat/eflatadd2-piano.yml +43 -0
  1372. data/db/seeds/chord_voicings/e-flat/eflatadd4-guitar.yml +11 -0
  1373. data/db/seeds/chord_voicings/e-flat/eflatadd4-piano.yml +43 -0
  1374. data/db/seeds/chord_voicings/e-flat/eflatadd9-guitar.yml +11 -0
  1375. data/db/seeds/chord_voicings/e-flat/eflatadd9-piano.yml +43 -0
  1376. data/db/seeds/chord_voicings/e-flat/eflataug-guitar.yml +23 -0
  1377. data/db/seeds/chord_voicings/e-flat/eflataug-piano.yml +32 -0
  1378. data/db/seeds/chord_voicings/e-flat/eflatdim-guitar.yml +23 -0
  1379. data/db/seeds/chord_voicings/e-flat/eflatdim-piano.yml +32 -0
  1380. data/db/seeds/chord_voicings/e-flat/eflatdim7-guitar.yml +23 -0
  1381. data/db/seeds/chord_voicings/e-flat/eflatdim7-piano.yml +43 -0
  1382. data/db/seeds/chord_voicings/e-flat/eflatm-guitar.yml +35 -0
  1383. data/db/seeds/chord_voicings/e-flat/eflatm-maj7-guitar.yml +35 -0
  1384. data/db/seeds/chord_voicings/e-flat/eflatm-maj7-piano.yml +43 -0
  1385. data/db/seeds/chord_voicings/e-flat/eflatm-piano.yml +32 -0
  1386. data/db/seeds/chord_voicings/e-flat/eflatm11-guitar.yml +11 -0
  1387. data/db/seeds/chord_voicings/e-flat/eflatm11-piano.yml +71 -0
  1388. data/db/seeds/chord_voicings/e-flat/eflatm13-guitar.yml +11 -0
  1389. data/db/seeds/chord_voicings/e-flat/eflatm13-piano.yml +71 -0
  1390. data/db/seeds/chord_voicings/e-flat/eflatm6-guitar.yml +35 -0
  1391. data/db/seeds/chord_voicings/e-flat/eflatm6-piano.yml +43 -0
  1392. data/db/seeds/chord_voicings/e-flat/eflatm7-guitar.yml +35 -0
  1393. data/db/seeds/chord_voicings/e-flat/eflatm7-piano.yml +43 -0
  1394. data/db/seeds/chord_voicings/e-flat/eflatm7add11-guitar.yml +11 -0
  1395. data/db/seeds/chord_voicings/e-flat/eflatm7add11-piano.yml +54 -0
  1396. data/db/seeds/chord_voicings/e-flat/eflatm7flat5-guitar.yml +23 -0
  1397. data/db/seeds/chord_voicings/e-flat/eflatm7flat5-piano.yml +43 -0
  1398. data/db/seeds/chord_voicings/e-flat/eflatm9-guitar.yml +11 -0
  1399. data/db/seeds/chord_voicings/e-flat/eflatm9-piano.yml +54 -0
  1400. data/db/seeds/chord_voicings/e-flat/eflatmadd11-guitar.yml +11 -0
  1401. data/db/seeds/chord_voicings/e-flat/eflatmadd11-piano.yml +43 -0
  1402. data/db/seeds/chord_voicings/e-flat/eflatmadd13-guitar.yml +11 -0
  1403. data/db/seeds/chord_voicings/e-flat/eflatmadd13-piano.yml +43 -0
  1404. data/db/seeds/chord_voicings/e-flat/eflatmadd2-guitar.yml +11 -0
  1405. data/db/seeds/chord_voicings/e-flat/eflatmadd2-piano.yml +43 -0
  1406. data/db/seeds/chord_voicings/e-flat/eflatmadd4-guitar.yml +11 -0
  1407. data/db/seeds/chord_voicings/e-flat/eflatmadd4-piano.yml +43 -0
  1408. data/db/seeds/chord_voicings/e-flat/eflatmadd9-guitar.yml +11 -0
  1409. data/db/seeds/chord_voicings/e-flat/eflatmadd9-piano.yml +43 -0
  1410. data/db/seeds/chord_voicings/e-flat/eflatmaj7-guitar.yml +59 -0
  1411. data/db/seeds/chord_voicings/e-flat/eflatmaj7-piano.yml +43 -0
  1412. data/db/seeds/chord_voicings/e-flat/eflatmaj7sharp5-guitar.yml +23 -0
  1413. data/db/seeds/chord_voicings/e-flat/eflatmaj7sharp5-piano.yml +43 -0
  1414. data/db/seeds/chord_voicings/e-flat/eflatsus2-guitar.yml +23 -0
  1415. data/db/seeds/chord_voicings/e-flat/eflatsus2-piano.yml +32 -0
  1416. data/db/seeds/chord_voicings/e-flat/eflatsus4-guitar.yml +35 -0
  1417. data/db/seeds/chord_voicings/e-flat/eflatsus4-piano.yml +32 -0
  1418. data/db/seeds/chord_voicings/f/f-guitar.yml +59 -0
  1419. data/db/seeds/chord_voicings/f/f-piano.yml +32 -0
  1420. data/db/seeds/chord_voicings/f/f11-guitar.yml +11 -0
  1421. data/db/seeds/chord_voicings/f/f11-piano.yml +71 -0
  1422. data/db/seeds/chord_voicings/f/f13-guitar.yml +11 -0
  1423. data/db/seeds/chord_voicings/f/f13-piano.yml +71 -0
  1424. data/db/seeds/chord_voicings/f/f13flat9-guitar.yml +11 -0
  1425. data/db/seeds/chord_voicings/f/f13flat9-piano.yml +71 -0
  1426. data/db/seeds/chord_voicings/f/f13sharp11-guitar.yml +11 -0
  1427. data/db/seeds/chord_voicings/f/f13sharp11-piano.yml +83 -0
  1428. data/db/seeds/chord_voicings/f/f13sharp9-guitar.yml +11 -0
  1429. data/db/seeds/chord_voicings/f/f13sharp9-piano.yml +71 -0
  1430. data/db/seeds/chord_voicings/f/f13sus4-guitar.yml +11 -0
  1431. data/db/seeds/chord_voicings/f/f13sus4-piano.yml +71 -0
  1432. data/db/seeds/chord_voicings/f/f5-guitar.yml +23 -0
  1433. data/db/seeds/chord_voicings/f/f5-piano.yml +21 -0
  1434. data/db/seeds/chord_voicings/f/f6-guitar.yml +59 -0
  1435. data/db/seeds/chord_voicings/f/f6-piano.yml +43 -0
  1436. data/db/seeds/chord_voicings/f/f7-guitar.yml +59 -0
  1437. data/db/seeds/chord_voicings/f/f7-piano.yml +43 -0
  1438. data/db/seeds/chord_voicings/f/f7flat13-guitar.yml +11 -0
  1439. data/db/seeds/chord_voicings/f/f7flat13-piano.yml +54 -0
  1440. data/db/seeds/chord_voicings/f/f7flat5-guitar.yml +11 -0
  1441. data/db/seeds/chord_voicings/f/f7flat5-piano.yml +43 -0
  1442. data/db/seeds/chord_voicings/f/f7flat5flat9-guitar.yml +11 -0
  1443. data/db/seeds/chord_voicings/f/f7flat5flat9-piano.yml +54 -0
  1444. data/db/seeds/chord_voicings/f/f7flat5sharp9-guitar.yml +11 -0
  1445. data/db/seeds/chord_voicings/f/f7flat5sharp9-piano.yml +54 -0
  1446. data/db/seeds/chord_voicings/f/f7flat9-guitar.yml +11 -0
  1447. data/db/seeds/chord_voicings/f/f7flat9-piano.yml +54 -0
  1448. data/db/seeds/chord_voicings/f/f7flat9flat13-guitar.yml +11 -0
  1449. data/db/seeds/chord_voicings/f/f7flat9flat13-piano.yml +65 -0
  1450. data/db/seeds/chord_voicings/f/f7flat9sharp11-guitar.yml +11 -0
  1451. data/db/seeds/chord_voicings/f/f7flat9sharp11-piano.yml +65 -0
  1452. data/db/seeds/chord_voicings/f/f7sharp11-guitar.yml +11 -0
  1453. data/db/seeds/chord_voicings/f/f7sharp11-piano.yml +54 -0
  1454. data/db/seeds/chord_voicings/f/f7sharp5-guitar.yml +11 -0
  1455. data/db/seeds/chord_voicings/f/f7sharp5-piano.yml +43 -0
  1456. data/db/seeds/chord_voicings/f/f7sharp5flat9-guitar.yml +11 -0
  1457. data/db/seeds/chord_voicings/f/f7sharp5flat9-piano.yml +54 -0
  1458. data/db/seeds/chord_voicings/f/f7sharp5sharp9-guitar.yml +11 -0
  1459. data/db/seeds/chord_voicings/f/f7sharp5sharp9-piano.yml +54 -0
  1460. data/db/seeds/chord_voicings/f/f7sharp9-guitar.yml +11 -0
  1461. data/db/seeds/chord_voicings/f/f7sharp9-piano.yml +54 -0
  1462. data/db/seeds/chord_voicings/f/f7sharp9flat13-guitar.yml +11 -0
  1463. data/db/seeds/chord_voicings/f/f7sharp9flat13-piano.yml +65 -0
  1464. data/db/seeds/chord_voicings/f/f7sus2-guitar.yml +23 -0
  1465. data/db/seeds/chord_voicings/f/f7sus2-piano.yml +43 -0
  1466. data/db/seeds/chord_voicings/f/f7sus4-guitar.yml +35 -0
  1467. data/db/seeds/chord_voicings/f/f7sus4-piano.yml +43 -0
  1468. data/db/seeds/chord_voicings/f/f9-guitar.yml +11 -0
  1469. data/db/seeds/chord_voicings/f/f9-piano.yml +54 -0
  1470. data/db/seeds/chord_voicings/f/f9flat13-guitar.yml +11 -0
  1471. data/db/seeds/chord_voicings/f/f9flat13-piano.yml +65 -0
  1472. data/db/seeds/chord_voicings/f/f9sharp11-guitar.yml +11 -0
  1473. data/db/seeds/chord_voicings/f/f9sharp11-piano.yml +65 -0
  1474. data/db/seeds/chord_voicings/f/f9sus4-guitar.yml +11 -0
  1475. data/db/seeds/chord_voicings/f/f9sus4-piano.yml +54 -0
  1476. data/db/seeds/chord_voicings/f/fadd11-guitar.yml +11 -0
  1477. data/db/seeds/chord_voicings/f/fadd11-piano.yml +43 -0
  1478. data/db/seeds/chord_voicings/f/fadd13-guitar.yml +11 -0
  1479. data/db/seeds/chord_voicings/f/fadd13-piano.yml +43 -0
  1480. data/db/seeds/chord_voicings/f/fadd2-guitar.yml +11 -0
  1481. data/db/seeds/chord_voicings/f/fadd2-piano.yml +43 -0
  1482. data/db/seeds/chord_voicings/f/fadd4-guitar.yml +11 -0
  1483. data/db/seeds/chord_voicings/f/fadd4-piano.yml +43 -0
  1484. data/db/seeds/chord_voicings/f/fadd9-guitar.yml +11 -0
  1485. data/db/seeds/chord_voicings/f/fadd9-piano.yml +43 -0
  1486. data/db/seeds/chord_voicings/f/faug-guitar.yml +23 -0
  1487. data/db/seeds/chord_voicings/f/faug-piano.yml +32 -0
  1488. data/db/seeds/chord_voicings/f/fdim-guitar.yml +23 -0
  1489. data/db/seeds/chord_voicings/f/fdim-piano.yml +32 -0
  1490. data/db/seeds/chord_voicings/f/fdim7-guitar.yml +23 -0
  1491. data/db/seeds/chord_voicings/f/fdim7-piano.yml +43 -0
  1492. data/db/seeds/chord_voicings/f/fm-guitar.yml +35 -0
  1493. data/db/seeds/chord_voicings/f/fm-maj7-guitar.yml +35 -0
  1494. data/db/seeds/chord_voicings/f/fm-maj7-piano.yml +43 -0
  1495. data/db/seeds/chord_voicings/f/fm-piano.yml +32 -0
  1496. data/db/seeds/chord_voicings/f/fm11-guitar.yml +11 -0
  1497. data/db/seeds/chord_voicings/f/fm11-piano.yml +71 -0
  1498. data/db/seeds/chord_voicings/f/fm13-guitar.yml +11 -0
  1499. data/db/seeds/chord_voicings/f/fm13-piano.yml +71 -0
  1500. data/db/seeds/chord_voicings/f/fm6-guitar.yml +35 -0
  1501. data/db/seeds/chord_voicings/f/fm6-piano.yml +43 -0
  1502. data/db/seeds/chord_voicings/f/fm7-guitar.yml +35 -0
  1503. data/db/seeds/chord_voicings/f/fm7-piano.yml +43 -0
  1504. data/db/seeds/chord_voicings/f/fm7add11-guitar.yml +11 -0
  1505. data/db/seeds/chord_voicings/f/fm7add11-piano.yml +54 -0
  1506. data/db/seeds/chord_voicings/f/fm7flat5-guitar.yml +23 -0
  1507. data/db/seeds/chord_voicings/f/fm7flat5-piano.yml +43 -0
  1508. data/db/seeds/chord_voicings/f/fm9-guitar.yml +11 -0
  1509. data/db/seeds/chord_voicings/f/fm9-piano.yml +54 -0
  1510. data/db/seeds/chord_voicings/f/fmadd11-guitar.yml +11 -0
  1511. data/db/seeds/chord_voicings/f/fmadd11-piano.yml +43 -0
  1512. data/db/seeds/chord_voicings/f/fmadd13-guitar.yml +11 -0
  1513. data/db/seeds/chord_voicings/f/fmadd13-piano.yml +43 -0
  1514. data/db/seeds/chord_voicings/f/fmadd2-guitar.yml +11 -0
  1515. data/db/seeds/chord_voicings/f/fmadd2-piano.yml +43 -0
  1516. data/db/seeds/chord_voicings/f/fmadd4-guitar.yml +11 -0
  1517. data/db/seeds/chord_voicings/f/fmadd4-piano.yml +43 -0
  1518. data/db/seeds/chord_voicings/f/fmadd9-guitar.yml +11 -0
  1519. data/db/seeds/chord_voicings/f/fmadd9-piano.yml +43 -0
  1520. data/db/seeds/chord_voicings/f/fmaj7-guitar.yml +59 -0
  1521. data/db/seeds/chord_voicings/f/fmaj7-piano.yml +43 -0
  1522. data/db/seeds/chord_voicings/f/fmaj7sharp5-guitar.yml +23 -0
  1523. data/db/seeds/chord_voicings/f/fmaj7sharp5-piano.yml +43 -0
  1524. data/db/seeds/chord_voicings/f/fsus2-guitar.yml +23 -0
  1525. data/db/seeds/chord_voicings/f/fsus2-piano.yml +32 -0
  1526. data/db/seeds/chord_voicings/f/fsus4-guitar.yml +35 -0
  1527. data/db/seeds/chord_voicings/f/fsus4-piano.yml +32 -0
  1528. data/db/seeds/chord_voicings/f-sharp/fsharp-guitar.yml +59 -0
  1529. data/db/seeds/chord_voicings/f-sharp/fsharp-piano.yml +32 -0
  1530. data/db/seeds/chord_voicings/f-sharp/fsharp11-guitar.yml +11 -0
  1531. data/db/seeds/chord_voicings/f-sharp/fsharp11-piano.yml +71 -0
  1532. data/db/seeds/chord_voicings/f-sharp/fsharp13-guitar.yml +11 -0
  1533. data/db/seeds/chord_voicings/f-sharp/fsharp13-piano.yml +71 -0
  1534. data/db/seeds/chord_voicings/f-sharp/fsharp13flat9-guitar.yml +11 -0
  1535. data/db/seeds/chord_voicings/f-sharp/fsharp13flat9-piano.yml +71 -0
  1536. data/db/seeds/chord_voicings/f-sharp/fsharp13sharp11-guitar.yml +11 -0
  1537. data/db/seeds/chord_voicings/f-sharp/fsharp13sharp11-piano.yml +83 -0
  1538. data/db/seeds/chord_voicings/f-sharp/fsharp13sharp9-guitar.yml +11 -0
  1539. data/db/seeds/chord_voicings/f-sharp/fsharp13sharp9-piano.yml +71 -0
  1540. data/db/seeds/chord_voicings/f-sharp/fsharp13sus4-guitar.yml +11 -0
  1541. data/db/seeds/chord_voicings/f-sharp/fsharp13sus4-piano.yml +71 -0
  1542. data/db/seeds/chord_voicings/f-sharp/fsharp5-guitar.yml +23 -0
  1543. data/db/seeds/chord_voicings/f-sharp/fsharp5-piano.yml +21 -0
  1544. data/db/seeds/chord_voicings/f-sharp/fsharp6-guitar.yml +59 -0
  1545. data/db/seeds/chord_voicings/f-sharp/fsharp6-piano.yml +43 -0
  1546. data/db/seeds/chord_voicings/f-sharp/fsharp7-guitar.yml +59 -0
  1547. data/db/seeds/chord_voicings/f-sharp/fsharp7-piano.yml +43 -0
  1548. data/db/seeds/chord_voicings/f-sharp/fsharp7flat13-guitar.yml +11 -0
  1549. data/db/seeds/chord_voicings/f-sharp/fsharp7flat13-piano.yml +54 -0
  1550. data/db/seeds/chord_voicings/f-sharp/fsharp7flat5-guitar.yml +11 -0
  1551. data/db/seeds/chord_voicings/f-sharp/fsharp7flat5-piano.yml +43 -0
  1552. data/db/seeds/chord_voicings/f-sharp/fsharp7flat5flat9-guitar.yml +11 -0
  1553. data/db/seeds/chord_voicings/f-sharp/fsharp7flat5flat9-piano.yml +54 -0
  1554. data/db/seeds/chord_voicings/f-sharp/fsharp7flat5sharp9-guitar.yml +11 -0
  1555. data/db/seeds/chord_voicings/f-sharp/fsharp7flat5sharp9-piano.yml +54 -0
  1556. data/db/seeds/chord_voicings/f-sharp/fsharp7flat9-guitar.yml +11 -0
  1557. data/db/seeds/chord_voicings/f-sharp/fsharp7flat9-piano.yml +54 -0
  1558. data/db/seeds/chord_voicings/f-sharp/fsharp7flat9flat13-guitar.yml +11 -0
  1559. data/db/seeds/chord_voicings/f-sharp/fsharp7flat9flat13-piano.yml +65 -0
  1560. data/db/seeds/chord_voicings/f-sharp/fsharp7flat9sharp11-guitar.yml +11 -0
  1561. data/db/seeds/chord_voicings/f-sharp/fsharp7flat9sharp11-piano.yml +65 -0
  1562. data/db/seeds/chord_voicings/f-sharp/fsharp7sharp11-guitar.yml +11 -0
  1563. data/db/seeds/chord_voicings/f-sharp/fsharp7sharp11-piano.yml +54 -0
  1564. data/db/seeds/chord_voicings/f-sharp/fsharp7sharp5-guitar.yml +11 -0
  1565. data/db/seeds/chord_voicings/f-sharp/fsharp7sharp5-piano.yml +43 -0
  1566. data/db/seeds/chord_voicings/f-sharp/fsharp7sharp5flat9-guitar.yml +11 -0
  1567. data/db/seeds/chord_voicings/f-sharp/fsharp7sharp5flat9-piano.yml +54 -0
  1568. data/db/seeds/chord_voicings/f-sharp/fsharp7sharp5sharp9-guitar.yml +11 -0
  1569. data/db/seeds/chord_voicings/f-sharp/fsharp7sharp5sharp9-piano.yml +54 -0
  1570. data/db/seeds/chord_voicings/f-sharp/fsharp7sharp9-guitar.yml +11 -0
  1571. data/db/seeds/chord_voicings/f-sharp/fsharp7sharp9-piano.yml +54 -0
  1572. data/db/seeds/chord_voicings/f-sharp/fsharp7sharp9flat13-guitar.yml +11 -0
  1573. data/db/seeds/chord_voicings/f-sharp/fsharp7sharp9flat13-piano.yml +65 -0
  1574. data/db/seeds/chord_voicings/f-sharp/fsharp7sus2-guitar.yml +23 -0
  1575. data/db/seeds/chord_voicings/f-sharp/fsharp7sus2-piano.yml +43 -0
  1576. data/db/seeds/chord_voicings/f-sharp/fsharp7sus4-guitar.yml +35 -0
  1577. data/db/seeds/chord_voicings/f-sharp/fsharp7sus4-piano.yml +43 -0
  1578. data/db/seeds/chord_voicings/f-sharp/fsharp9-guitar.yml +11 -0
  1579. data/db/seeds/chord_voicings/f-sharp/fsharp9-piano.yml +54 -0
  1580. data/db/seeds/chord_voicings/f-sharp/fsharp9flat13-guitar.yml +11 -0
  1581. data/db/seeds/chord_voicings/f-sharp/fsharp9flat13-piano.yml +65 -0
  1582. data/db/seeds/chord_voicings/f-sharp/fsharp9sharp11-guitar.yml +11 -0
  1583. data/db/seeds/chord_voicings/f-sharp/fsharp9sharp11-piano.yml +65 -0
  1584. data/db/seeds/chord_voicings/f-sharp/fsharp9sus4-guitar.yml +11 -0
  1585. data/db/seeds/chord_voicings/f-sharp/fsharp9sus4-piano.yml +54 -0
  1586. data/db/seeds/chord_voicings/f-sharp/fsharpadd11-guitar.yml +11 -0
  1587. data/db/seeds/chord_voicings/f-sharp/fsharpadd11-piano.yml +43 -0
  1588. data/db/seeds/chord_voicings/f-sharp/fsharpadd13-guitar.yml +11 -0
  1589. data/db/seeds/chord_voicings/f-sharp/fsharpadd13-piano.yml +43 -0
  1590. data/db/seeds/chord_voicings/f-sharp/fsharpadd2-guitar.yml +11 -0
  1591. data/db/seeds/chord_voicings/f-sharp/fsharpadd2-piano.yml +43 -0
  1592. data/db/seeds/chord_voicings/f-sharp/fsharpadd4-guitar.yml +11 -0
  1593. data/db/seeds/chord_voicings/f-sharp/fsharpadd4-piano.yml +43 -0
  1594. data/db/seeds/chord_voicings/f-sharp/fsharpadd9-guitar.yml +11 -0
  1595. data/db/seeds/chord_voicings/f-sharp/fsharpadd9-piano.yml +43 -0
  1596. data/db/seeds/chord_voicings/f-sharp/fsharpaug-guitar.yml +23 -0
  1597. data/db/seeds/chord_voicings/f-sharp/fsharpaug-piano.yml +32 -0
  1598. data/db/seeds/chord_voicings/f-sharp/fsharpdim-guitar.yml +23 -0
  1599. data/db/seeds/chord_voicings/f-sharp/fsharpdim-piano.yml +32 -0
  1600. data/db/seeds/chord_voicings/f-sharp/fsharpdim7-guitar.yml +23 -0
  1601. data/db/seeds/chord_voicings/f-sharp/fsharpdim7-piano.yml +43 -0
  1602. data/db/seeds/chord_voicings/f-sharp/fsharpm-guitar.yml +35 -0
  1603. data/db/seeds/chord_voicings/f-sharp/fsharpm-maj7-guitar.yml +35 -0
  1604. data/db/seeds/chord_voicings/f-sharp/fsharpm-maj7-piano.yml +43 -0
  1605. data/db/seeds/chord_voicings/f-sharp/fsharpm-piano.yml +32 -0
  1606. data/db/seeds/chord_voicings/f-sharp/fsharpm11-guitar.yml +11 -0
  1607. data/db/seeds/chord_voicings/f-sharp/fsharpm11-piano.yml +71 -0
  1608. data/db/seeds/chord_voicings/f-sharp/fsharpm13-guitar.yml +11 -0
  1609. data/db/seeds/chord_voicings/f-sharp/fsharpm13-piano.yml +71 -0
  1610. data/db/seeds/chord_voicings/f-sharp/fsharpm6-guitar.yml +35 -0
  1611. data/db/seeds/chord_voicings/f-sharp/fsharpm6-piano.yml +43 -0
  1612. data/db/seeds/chord_voicings/f-sharp/fsharpm7-guitar.yml +35 -0
  1613. data/db/seeds/chord_voicings/f-sharp/fsharpm7-piano.yml +43 -0
  1614. data/db/seeds/chord_voicings/f-sharp/fsharpm7add11-guitar.yml +11 -0
  1615. data/db/seeds/chord_voicings/f-sharp/fsharpm7add11-piano.yml +54 -0
  1616. data/db/seeds/chord_voicings/f-sharp/fsharpm7flat5-guitar.yml +23 -0
  1617. data/db/seeds/chord_voicings/f-sharp/fsharpm7flat5-piano.yml +43 -0
  1618. data/db/seeds/chord_voicings/f-sharp/fsharpm9-guitar.yml +11 -0
  1619. data/db/seeds/chord_voicings/f-sharp/fsharpm9-piano.yml +54 -0
  1620. data/db/seeds/chord_voicings/f-sharp/fsharpmadd11-guitar.yml +11 -0
  1621. data/db/seeds/chord_voicings/f-sharp/fsharpmadd11-piano.yml +43 -0
  1622. data/db/seeds/chord_voicings/f-sharp/fsharpmadd13-guitar.yml +11 -0
  1623. data/db/seeds/chord_voicings/f-sharp/fsharpmadd13-piano.yml +43 -0
  1624. data/db/seeds/chord_voicings/f-sharp/fsharpmadd2-guitar.yml +11 -0
  1625. data/db/seeds/chord_voicings/f-sharp/fsharpmadd2-piano.yml +43 -0
  1626. data/db/seeds/chord_voicings/f-sharp/fsharpmadd4-guitar.yml +11 -0
  1627. data/db/seeds/chord_voicings/f-sharp/fsharpmadd4-piano.yml +43 -0
  1628. data/db/seeds/chord_voicings/f-sharp/fsharpmadd9-guitar.yml +11 -0
  1629. data/db/seeds/chord_voicings/f-sharp/fsharpmadd9-piano.yml +43 -0
  1630. data/db/seeds/chord_voicings/f-sharp/fsharpmaj7-guitar.yml +59 -0
  1631. data/db/seeds/chord_voicings/f-sharp/fsharpmaj7-piano.yml +43 -0
  1632. data/db/seeds/chord_voicings/f-sharp/fsharpmaj7sharp5-guitar.yml +23 -0
  1633. data/db/seeds/chord_voicings/f-sharp/fsharpmaj7sharp5-piano.yml +43 -0
  1634. data/db/seeds/chord_voicings/f-sharp/fsharpsus2-guitar.yml +23 -0
  1635. data/db/seeds/chord_voicings/f-sharp/fsharpsus2-piano.yml +32 -0
  1636. data/db/seeds/chord_voicings/f-sharp/fsharpsus4-guitar.yml +35 -0
  1637. data/db/seeds/chord_voicings/f-sharp/fsharpsus4-piano.yml +32 -0
  1638. data/db/seeds/chord_voicings/g/g-guitar.yml +59 -0
  1639. data/db/seeds/chord_voicings/g/g-piano.yml +32 -0
  1640. data/db/seeds/chord_voicings/g/g11-guitar.yml +11 -0
  1641. data/db/seeds/chord_voicings/g/g11-piano.yml +71 -0
  1642. data/db/seeds/chord_voicings/g/g13-guitar.yml +11 -0
  1643. data/db/seeds/chord_voicings/g/g13-piano.yml +71 -0
  1644. data/db/seeds/chord_voicings/g/g13flat9-guitar.yml +11 -0
  1645. data/db/seeds/chord_voicings/g/g13flat9-piano.yml +71 -0
  1646. data/db/seeds/chord_voicings/g/g13sharp11-guitar.yml +11 -0
  1647. data/db/seeds/chord_voicings/g/g13sharp11-piano.yml +83 -0
  1648. data/db/seeds/chord_voicings/g/g13sharp9-guitar.yml +11 -0
  1649. data/db/seeds/chord_voicings/g/g13sharp9-piano.yml +71 -0
  1650. data/db/seeds/chord_voicings/g/g13sus4-guitar.yml +11 -0
  1651. data/db/seeds/chord_voicings/g/g13sus4-piano.yml +71 -0
  1652. data/db/seeds/chord_voicings/g/g5-guitar.yml +23 -0
  1653. data/db/seeds/chord_voicings/g/g5-piano.yml +21 -0
  1654. data/db/seeds/chord_voicings/g/g6-guitar.yml +59 -0
  1655. data/db/seeds/chord_voicings/g/g6-piano.yml +43 -0
  1656. data/db/seeds/chord_voicings/g/g7-guitar.yml +59 -0
  1657. data/db/seeds/chord_voicings/g/g7-piano.yml +43 -0
  1658. data/db/seeds/chord_voicings/g/g7flat13-guitar.yml +11 -0
  1659. data/db/seeds/chord_voicings/g/g7flat13-piano.yml +54 -0
  1660. data/db/seeds/chord_voicings/g/g7flat5-guitar.yml +11 -0
  1661. data/db/seeds/chord_voicings/g/g7flat5-piano.yml +43 -0
  1662. data/db/seeds/chord_voicings/g/g7flat5flat9-guitar.yml +11 -0
  1663. data/db/seeds/chord_voicings/g/g7flat5flat9-piano.yml +54 -0
  1664. data/db/seeds/chord_voicings/g/g7flat5sharp9-guitar.yml +11 -0
  1665. data/db/seeds/chord_voicings/g/g7flat5sharp9-piano.yml +54 -0
  1666. data/db/seeds/chord_voicings/g/g7flat9-guitar.yml +11 -0
  1667. data/db/seeds/chord_voicings/g/g7flat9-piano.yml +54 -0
  1668. data/db/seeds/chord_voicings/g/g7flat9flat13-guitar.yml +11 -0
  1669. data/db/seeds/chord_voicings/g/g7flat9flat13-piano.yml +65 -0
  1670. data/db/seeds/chord_voicings/g/g7flat9sharp11-guitar.yml +11 -0
  1671. data/db/seeds/chord_voicings/g/g7flat9sharp11-piano.yml +65 -0
  1672. data/db/seeds/chord_voicings/g/g7sharp11-guitar.yml +11 -0
  1673. data/db/seeds/chord_voicings/g/g7sharp11-piano.yml +54 -0
  1674. data/db/seeds/chord_voicings/g/g7sharp5-guitar.yml +11 -0
  1675. data/db/seeds/chord_voicings/g/g7sharp5-piano.yml +43 -0
  1676. data/db/seeds/chord_voicings/g/g7sharp5flat9-guitar.yml +11 -0
  1677. data/db/seeds/chord_voicings/g/g7sharp5flat9-piano.yml +54 -0
  1678. data/db/seeds/chord_voicings/g/g7sharp5sharp9-guitar.yml +11 -0
  1679. data/db/seeds/chord_voicings/g/g7sharp5sharp9-piano.yml +54 -0
  1680. data/db/seeds/chord_voicings/g/g7sharp9-guitar.yml +11 -0
  1681. data/db/seeds/chord_voicings/g/g7sharp9-piano.yml +54 -0
  1682. data/db/seeds/chord_voicings/g/g7sharp9flat13-guitar.yml +11 -0
  1683. data/db/seeds/chord_voicings/g/g7sharp9flat13-piano.yml +65 -0
  1684. data/db/seeds/chord_voicings/g/g7sus2-guitar.yml +23 -0
  1685. data/db/seeds/chord_voicings/g/g7sus2-piano.yml +43 -0
  1686. data/db/seeds/chord_voicings/g/g7sus4-guitar.yml +35 -0
  1687. data/db/seeds/chord_voicings/g/g7sus4-piano.yml +43 -0
  1688. data/db/seeds/chord_voicings/g/g9-guitar.yml +11 -0
  1689. data/db/seeds/chord_voicings/g/g9-piano.yml +54 -0
  1690. data/db/seeds/chord_voicings/g/g9flat13-guitar.yml +11 -0
  1691. data/db/seeds/chord_voicings/g/g9flat13-piano.yml +65 -0
  1692. data/db/seeds/chord_voicings/g/g9sharp11-guitar.yml +11 -0
  1693. data/db/seeds/chord_voicings/g/g9sharp11-piano.yml +65 -0
  1694. data/db/seeds/chord_voicings/g/g9sus4-guitar.yml +11 -0
  1695. data/db/seeds/chord_voicings/g/g9sus4-piano.yml +54 -0
  1696. data/db/seeds/chord_voicings/g/gadd11-guitar.yml +11 -0
  1697. data/db/seeds/chord_voicings/g/gadd11-piano.yml +43 -0
  1698. data/db/seeds/chord_voicings/g/gadd13-guitar.yml +11 -0
  1699. data/db/seeds/chord_voicings/g/gadd13-piano.yml +43 -0
  1700. data/db/seeds/chord_voicings/g/gadd2-guitar.yml +11 -0
  1701. data/db/seeds/chord_voicings/g/gadd2-piano.yml +43 -0
  1702. data/db/seeds/chord_voicings/g/gadd4-guitar.yml +11 -0
  1703. data/db/seeds/chord_voicings/g/gadd4-piano.yml +43 -0
  1704. data/db/seeds/chord_voicings/g/gadd9-guitar.yml +11 -0
  1705. data/db/seeds/chord_voicings/g/gadd9-piano.yml +43 -0
  1706. data/db/seeds/chord_voicings/g/gaug-guitar.yml +23 -0
  1707. data/db/seeds/chord_voicings/g/gaug-piano.yml +32 -0
  1708. data/db/seeds/chord_voicings/g/gdim-guitar.yml +23 -0
  1709. data/db/seeds/chord_voicings/g/gdim-piano.yml +32 -0
  1710. data/db/seeds/chord_voicings/g/gdim7-guitar.yml +23 -0
  1711. data/db/seeds/chord_voicings/g/gdim7-piano.yml +43 -0
  1712. data/db/seeds/chord_voicings/g/gm-guitar.yml +35 -0
  1713. data/db/seeds/chord_voicings/g/gm-maj7-guitar.yml +35 -0
  1714. data/db/seeds/chord_voicings/g/gm-maj7-piano.yml +43 -0
  1715. data/db/seeds/chord_voicings/g/gm-piano.yml +32 -0
  1716. data/db/seeds/chord_voicings/g/gm11-guitar.yml +11 -0
  1717. data/db/seeds/chord_voicings/g/gm11-piano.yml +71 -0
  1718. data/db/seeds/chord_voicings/g/gm13-guitar.yml +11 -0
  1719. data/db/seeds/chord_voicings/g/gm13-piano.yml +71 -0
  1720. data/db/seeds/chord_voicings/g/gm6-guitar.yml +35 -0
  1721. data/db/seeds/chord_voicings/g/gm6-piano.yml +43 -0
  1722. data/db/seeds/chord_voicings/g/gm7-guitar.yml +35 -0
  1723. data/db/seeds/chord_voicings/g/gm7-piano.yml +43 -0
  1724. data/db/seeds/chord_voicings/g/gm7add11-guitar.yml +11 -0
  1725. data/db/seeds/chord_voicings/g/gm7add11-piano.yml +54 -0
  1726. data/db/seeds/chord_voicings/g/gm7flat5-guitar.yml +23 -0
  1727. data/db/seeds/chord_voicings/g/gm7flat5-piano.yml +43 -0
  1728. data/db/seeds/chord_voicings/g/gm9-guitar.yml +11 -0
  1729. data/db/seeds/chord_voicings/g/gm9-piano.yml +54 -0
  1730. data/db/seeds/chord_voicings/g/gmadd11-guitar.yml +11 -0
  1731. data/db/seeds/chord_voicings/g/gmadd11-piano.yml +43 -0
  1732. data/db/seeds/chord_voicings/g/gmadd13-guitar.yml +11 -0
  1733. data/db/seeds/chord_voicings/g/gmadd13-piano.yml +43 -0
  1734. data/db/seeds/chord_voicings/g/gmadd2-guitar.yml +11 -0
  1735. data/db/seeds/chord_voicings/g/gmadd2-piano.yml +43 -0
  1736. data/db/seeds/chord_voicings/g/gmadd4-guitar.yml +11 -0
  1737. data/db/seeds/chord_voicings/g/gmadd4-piano.yml +43 -0
  1738. data/db/seeds/chord_voicings/g/gmadd9-guitar.yml +11 -0
  1739. data/db/seeds/chord_voicings/g/gmadd9-piano.yml +43 -0
  1740. data/db/seeds/chord_voicings/g/gmaj7-guitar.yml +59 -0
  1741. data/db/seeds/chord_voicings/g/gmaj7-piano.yml +43 -0
  1742. data/db/seeds/chord_voicings/g/gmaj7sharp5-guitar.yml +23 -0
  1743. data/db/seeds/chord_voicings/g/gmaj7sharp5-piano.yml +43 -0
  1744. data/db/seeds/chord_voicings/g/gsus2-guitar.yml +23 -0
  1745. data/db/seeds/chord_voicings/g/gsus2-piano.yml +32 -0
  1746. data/db/seeds/chord_voicings/g/gsus4-guitar.yml +35 -0
  1747. data/db/seeds/chord_voicings/g/gsus4-piano.yml +32 -0
  1748. data/db/seeds/chord_voicings/g-flat/gflat-guitar.yml +59 -0
  1749. data/db/seeds/chord_voicings/g-flat/gflat-piano.yml +32 -0
  1750. data/db/seeds/chord_voicings/g-flat/gflat11-guitar.yml +11 -0
  1751. data/db/seeds/chord_voicings/g-flat/gflat11-piano.yml +71 -0
  1752. data/db/seeds/chord_voicings/g-flat/gflat13-guitar.yml +11 -0
  1753. data/db/seeds/chord_voicings/g-flat/gflat13-piano.yml +71 -0
  1754. data/db/seeds/chord_voicings/g-flat/gflat13flat9-guitar.yml +11 -0
  1755. data/db/seeds/chord_voicings/g-flat/gflat13flat9-piano.yml +71 -0
  1756. data/db/seeds/chord_voicings/g-flat/gflat13sharp11-guitar.yml +11 -0
  1757. data/db/seeds/chord_voicings/g-flat/gflat13sharp11-piano.yml +83 -0
  1758. data/db/seeds/chord_voicings/g-flat/gflat13sharp9-guitar.yml +11 -0
  1759. data/db/seeds/chord_voicings/g-flat/gflat13sharp9-piano.yml +71 -0
  1760. data/db/seeds/chord_voicings/g-flat/gflat13sus4-guitar.yml +11 -0
  1761. data/db/seeds/chord_voicings/g-flat/gflat13sus4-piano.yml +71 -0
  1762. data/db/seeds/chord_voicings/g-flat/gflat5-guitar.yml +23 -0
  1763. data/db/seeds/chord_voicings/g-flat/gflat5-piano.yml +21 -0
  1764. data/db/seeds/chord_voicings/g-flat/gflat6-guitar.yml +59 -0
  1765. data/db/seeds/chord_voicings/g-flat/gflat6-piano.yml +43 -0
  1766. data/db/seeds/chord_voicings/g-flat/gflat7-guitar.yml +59 -0
  1767. data/db/seeds/chord_voicings/g-flat/gflat7-piano.yml +43 -0
  1768. data/db/seeds/chord_voicings/g-flat/gflat7flat13-guitar.yml +11 -0
  1769. data/db/seeds/chord_voicings/g-flat/gflat7flat13-piano.yml +54 -0
  1770. data/db/seeds/chord_voicings/g-flat/gflat7flat5-guitar.yml +11 -0
  1771. data/db/seeds/chord_voicings/g-flat/gflat7flat5-piano.yml +43 -0
  1772. data/db/seeds/chord_voicings/g-flat/gflat7flat5flat9-guitar.yml +11 -0
  1773. data/db/seeds/chord_voicings/g-flat/gflat7flat5flat9-piano.yml +54 -0
  1774. data/db/seeds/chord_voicings/g-flat/gflat7flat5sharp9-guitar.yml +11 -0
  1775. data/db/seeds/chord_voicings/g-flat/gflat7flat5sharp9-piano.yml +54 -0
  1776. data/db/seeds/chord_voicings/g-flat/gflat7flat9-guitar.yml +11 -0
  1777. data/db/seeds/chord_voicings/g-flat/gflat7flat9-piano.yml +54 -0
  1778. data/db/seeds/chord_voicings/g-flat/gflat7flat9flat13-guitar.yml +11 -0
  1779. data/db/seeds/chord_voicings/g-flat/gflat7flat9flat13-piano.yml +65 -0
  1780. data/db/seeds/chord_voicings/g-flat/gflat7flat9sharp11-guitar.yml +11 -0
  1781. data/db/seeds/chord_voicings/g-flat/gflat7flat9sharp11-piano.yml +65 -0
  1782. data/db/seeds/chord_voicings/g-flat/gflat7sharp11-guitar.yml +11 -0
  1783. data/db/seeds/chord_voicings/g-flat/gflat7sharp11-piano.yml +54 -0
  1784. data/db/seeds/chord_voicings/g-flat/gflat7sharp5-guitar.yml +11 -0
  1785. data/db/seeds/chord_voicings/g-flat/gflat7sharp5-piano.yml +43 -0
  1786. data/db/seeds/chord_voicings/g-flat/gflat7sharp5flat9-guitar.yml +11 -0
  1787. data/db/seeds/chord_voicings/g-flat/gflat7sharp5flat9-piano.yml +54 -0
  1788. data/db/seeds/chord_voicings/g-flat/gflat7sharp5sharp9-guitar.yml +11 -0
  1789. data/db/seeds/chord_voicings/g-flat/gflat7sharp5sharp9-piano.yml +54 -0
  1790. data/db/seeds/chord_voicings/g-flat/gflat7sharp9-guitar.yml +11 -0
  1791. data/db/seeds/chord_voicings/g-flat/gflat7sharp9-piano.yml +54 -0
  1792. data/db/seeds/chord_voicings/g-flat/gflat7sharp9flat13-guitar.yml +11 -0
  1793. data/db/seeds/chord_voicings/g-flat/gflat7sharp9flat13-piano.yml +65 -0
  1794. data/db/seeds/chord_voicings/g-flat/gflat7sus2-guitar.yml +23 -0
  1795. data/db/seeds/chord_voicings/g-flat/gflat7sus2-piano.yml +43 -0
  1796. data/db/seeds/chord_voicings/g-flat/gflat7sus4-guitar.yml +35 -0
  1797. data/db/seeds/chord_voicings/g-flat/gflat7sus4-piano.yml +43 -0
  1798. data/db/seeds/chord_voicings/g-flat/gflat9-guitar.yml +11 -0
  1799. data/db/seeds/chord_voicings/g-flat/gflat9-piano.yml +54 -0
  1800. data/db/seeds/chord_voicings/g-flat/gflat9flat13-guitar.yml +11 -0
  1801. data/db/seeds/chord_voicings/g-flat/gflat9flat13-piano.yml +65 -0
  1802. data/db/seeds/chord_voicings/g-flat/gflat9sharp11-guitar.yml +11 -0
  1803. data/db/seeds/chord_voicings/g-flat/gflat9sharp11-piano.yml +65 -0
  1804. data/db/seeds/chord_voicings/g-flat/gflat9sus4-guitar.yml +11 -0
  1805. data/db/seeds/chord_voicings/g-flat/gflat9sus4-piano.yml +54 -0
  1806. data/db/seeds/chord_voicings/g-flat/gflatadd11-guitar.yml +11 -0
  1807. data/db/seeds/chord_voicings/g-flat/gflatadd11-piano.yml +43 -0
  1808. data/db/seeds/chord_voicings/g-flat/gflatadd13-guitar.yml +11 -0
  1809. data/db/seeds/chord_voicings/g-flat/gflatadd13-piano.yml +43 -0
  1810. data/db/seeds/chord_voicings/g-flat/gflatadd2-guitar.yml +11 -0
  1811. data/db/seeds/chord_voicings/g-flat/gflatadd2-piano.yml +43 -0
  1812. data/db/seeds/chord_voicings/g-flat/gflatadd4-guitar.yml +11 -0
  1813. data/db/seeds/chord_voicings/g-flat/gflatadd4-piano.yml +43 -0
  1814. data/db/seeds/chord_voicings/g-flat/gflatadd9-guitar.yml +11 -0
  1815. data/db/seeds/chord_voicings/g-flat/gflatadd9-piano.yml +43 -0
  1816. data/db/seeds/chord_voicings/g-flat/gflataug-guitar.yml +23 -0
  1817. data/db/seeds/chord_voicings/g-flat/gflataug-piano.yml +32 -0
  1818. data/db/seeds/chord_voicings/g-flat/gflatdim-guitar.yml +23 -0
  1819. data/db/seeds/chord_voicings/g-flat/gflatdim-piano.yml +32 -0
  1820. data/db/seeds/chord_voicings/g-flat/gflatdim7-guitar.yml +23 -0
  1821. data/db/seeds/chord_voicings/g-flat/gflatdim7-piano.yml +43 -0
  1822. data/db/seeds/chord_voicings/g-flat/gflatm-guitar.yml +35 -0
  1823. data/db/seeds/chord_voicings/g-flat/gflatm-maj7-guitar.yml +35 -0
  1824. data/db/seeds/chord_voicings/g-flat/gflatm-maj7-piano.yml +43 -0
  1825. data/db/seeds/chord_voicings/g-flat/gflatm-piano.yml +32 -0
  1826. data/db/seeds/chord_voicings/g-flat/gflatm11-guitar.yml +11 -0
  1827. data/db/seeds/chord_voicings/g-flat/gflatm11-piano.yml +71 -0
  1828. data/db/seeds/chord_voicings/g-flat/gflatm13-guitar.yml +11 -0
  1829. data/db/seeds/chord_voicings/g-flat/gflatm13-piano.yml +71 -0
  1830. data/db/seeds/chord_voicings/g-flat/gflatm6-guitar.yml +35 -0
  1831. data/db/seeds/chord_voicings/g-flat/gflatm6-piano.yml +43 -0
  1832. data/db/seeds/chord_voicings/g-flat/gflatm7-guitar.yml +35 -0
  1833. data/db/seeds/chord_voicings/g-flat/gflatm7-piano.yml +43 -0
  1834. data/db/seeds/chord_voicings/g-flat/gflatm7add11-guitar.yml +11 -0
  1835. data/db/seeds/chord_voicings/g-flat/gflatm7add11-piano.yml +54 -0
  1836. data/db/seeds/chord_voicings/g-flat/gflatm7flat5-guitar.yml +23 -0
  1837. data/db/seeds/chord_voicings/g-flat/gflatm7flat5-piano.yml +43 -0
  1838. data/db/seeds/chord_voicings/g-flat/gflatm9-guitar.yml +11 -0
  1839. data/db/seeds/chord_voicings/g-flat/gflatm9-piano.yml +54 -0
  1840. data/db/seeds/chord_voicings/g-flat/gflatmadd11-guitar.yml +11 -0
  1841. data/db/seeds/chord_voicings/g-flat/gflatmadd11-piano.yml +43 -0
  1842. data/db/seeds/chord_voicings/g-flat/gflatmadd13-guitar.yml +11 -0
  1843. data/db/seeds/chord_voicings/g-flat/gflatmadd13-piano.yml +43 -0
  1844. data/db/seeds/chord_voicings/g-flat/gflatmadd2-guitar.yml +11 -0
  1845. data/db/seeds/chord_voicings/g-flat/gflatmadd2-piano.yml +43 -0
  1846. data/db/seeds/chord_voicings/g-flat/gflatmadd4-guitar.yml +11 -0
  1847. data/db/seeds/chord_voicings/g-flat/gflatmadd4-piano.yml +43 -0
  1848. data/db/seeds/chord_voicings/g-flat/gflatmadd9-guitar.yml +11 -0
  1849. data/db/seeds/chord_voicings/g-flat/gflatmadd9-piano.yml +43 -0
  1850. data/db/seeds/chord_voicings/g-flat/gflatmaj7-guitar.yml +59 -0
  1851. data/db/seeds/chord_voicings/g-flat/gflatmaj7-piano.yml +43 -0
  1852. data/db/seeds/chord_voicings/g-flat/gflatmaj7sharp5-guitar.yml +23 -0
  1853. data/db/seeds/chord_voicings/g-flat/gflatmaj7sharp5-piano.yml +43 -0
  1854. data/db/seeds/chord_voicings/g-flat/gflatsus2-guitar.yml +23 -0
  1855. data/db/seeds/chord_voicings/g-flat/gflatsus2-piano.yml +32 -0
  1856. data/db/seeds/chord_voicings/g-flat/gflatsus4-guitar.yml +35 -0
  1857. data/db/seeds/chord_voicings/g-flat/gflatsus4-piano.yml +32 -0
  1858. data/db/seeds/chord_voicings/g-sharp/gsharp-guitar.yml +59 -0
  1859. data/db/seeds/chord_voicings/g-sharp/gsharp-piano.yml +32 -0
  1860. data/db/seeds/chord_voicings/g-sharp/gsharp11-guitar.yml +11 -0
  1861. data/db/seeds/chord_voicings/g-sharp/gsharp11-piano.yml +71 -0
  1862. data/db/seeds/chord_voicings/g-sharp/gsharp13-guitar.yml +11 -0
  1863. data/db/seeds/chord_voicings/g-sharp/gsharp13-piano.yml +71 -0
  1864. data/db/seeds/chord_voicings/g-sharp/gsharp13flat9-guitar.yml +11 -0
  1865. data/db/seeds/chord_voicings/g-sharp/gsharp13flat9-piano.yml +71 -0
  1866. data/db/seeds/chord_voicings/g-sharp/gsharp13sharp11-guitar.yml +11 -0
  1867. data/db/seeds/chord_voicings/g-sharp/gsharp13sharp11-piano.yml +83 -0
  1868. data/db/seeds/chord_voicings/g-sharp/gsharp13sharp9-guitar.yml +11 -0
  1869. data/db/seeds/chord_voicings/g-sharp/gsharp13sharp9-piano.yml +71 -0
  1870. data/db/seeds/chord_voicings/g-sharp/gsharp13sus4-guitar.yml +11 -0
  1871. data/db/seeds/chord_voicings/g-sharp/gsharp13sus4-piano.yml +71 -0
  1872. data/db/seeds/chord_voicings/g-sharp/gsharp5-guitar.yml +23 -0
  1873. data/db/seeds/chord_voicings/g-sharp/gsharp5-piano.yml +21 -0
  1874. data/db/seeds/chord_voicings/g-sharp/gsharp6-guitar.yml +59 -0
  1875. data/db/seeds/chord_voicings/g-sharp/gsharp6-piano.yml +43 -0
  1876. data/db/seeds/chord_voicings/g-sharp/gsharp7-guitar.yml +59 -0
  1877. data/db/seeds/chord_voicings/g-sharp/gsharp7-piano.yml +43 -0
  1878. data/db/seeds/chord_voicings/g-sharp/gsharp7flat13-guitar.yml +11 -0
  1879. data/db/seeds/chord_voicings/g-sharp/gsharp7flat13-piano.yml +54 -0
  1880. data/db/seeds/chord_voicings/g-sharp/gsharp7flat5-guitar.yml +11 -0
  1881. data/db/seeds/chord_voicings/g-sharp/gsharp7flat5-piano.yml +43 -0
  1882. data/db/seeds/chord_voicings/g-sharp/gsharp7flat5flat9-guitar.yml +11 -0
  1883. data/db/seeds/chord_voicings/g-sharp/gsharp7flat5flat9-piano.yml +54 -0
  1884. data/db/seeds/chord_voicings/g-sharp/gsharp7flat5sharp9-guitar.yml +11 -0
  1885. data/db/seeds/chord_voicings/g-sharp/gsharp7flat5sharp9-piano.yml +54 -0
  1886. data/db/seeds/chord_voicings/g-sharp/gsharp7flat9-guitar.yml +11 -0
  1887. data/db/seeds/chord_voicings/g-sharp/gsharp7flat9-piano.yml +54 -0
  1888. data/db/seeds/chord_voicings/g-sharp/gsharp7flat9flat13-guitar.yml +11 -0
  1889. data/db/seeds/chord_voicings/g-sharp/gsharp7flat9flat13-piano.yml +65 -0
  1890. data/db/seeds/chord_voicings/g-sharp/gsharp7flat9sharp11-guitar.yml +11 -0
  1891. data/db/seeds/chord_voicings/g-sharp/gsharp7flat9sharp11-piano.yml +65 -0
  1892. data/db/seeds/chord_voicings/g-sharp/gsharp7sharp11-guitar.yml +11 -0
  1893. data/db/seeds/chord_voicings/g-sharp/gsharp7sharp11-piano.yml +54 -0
  1894. data/db/seeds/chord_voicings/g-sharp/gsharp7sharp5-guitar.yml +11 -0
  1895. data/db/seeds/chord_voicings/g-sharp/gsharp7sharp5-piano.yml +43 -0
  1896. data/db/seeds/chord_voicings/g-sharp/gsharp7sharp5flat9-guitar.yml +11 -0
  1897. data/db/seeds/chord_voicings/g-sharp/gsharp7sharp5flat9-piano.yml +54 -0
  1898. data/db/seeds/chord_voicings/g-sharp/gsharp7sharp5sharp9-guitar.yml +11 -0
  1899. data/db/seeds/chord_voicings/g-sharp/gsharp7sharp5sharp9-piano.yml +54 -0
  1900. data/db/seeds/chord_voicings/g-sharp/gsharp7sharp9-guitar.yml +11 -0
  1901. data/db/seeds/chord_voicings/g-sharp/gsharp7sharp9-piano.yml +54 -0
  1902. data/db/seeds/chord_voicings/g-sharp/gsharp7sharp9flat13-guitar.yml +11 -0
  1903. data/db/seeds/chord_voicings/g-sharp/gsharp7sharp9flat13-piano.yml +65 -0
  1904. data/db/seeds/chord_voicings/g-sharp/gsharp7sus2-guitar.yml +23 -0
  1905. data/db/seeds/chord_voicings/g-sharp/gsharp7sus2-piano.yml +43 -0
  1906. data/db/seeds/chord_voicings/g-sharp/gsharp7sus4-guitar.yml +35 -0
  1907. data/db/seeds/chord_voicings/g-sharp/gsharp7sus4-piano.yml +43 -0
  1908. data/db/seeds/chord_voicings/g-sharp/gsharp9-guitar.yml +11 -0
  1909. data/db/seeds/chord_voicings/g-sharp/gsharp9-piano.yml +54 -0
  1910. data/db/seeds/chord_voicings/g-sharp/gsharp9flat13-guitar.yml +11 -0
  1911. data/db/seeds/chord_voicings/g-sharp/gsharp9flat13-piano.yml +65 -0
  1912. data/db/seeds/chord_voicings/g-sharp/gsharp9sharp11-guitar.yml +11 -0
  1913. data/db/seeds/chord_voicings/g-sharp/gsharp9sharp11-piano.yml +65 -0
  1914. data/db/seeds/chord_voicings/g-sharp/gsharp9sus4-guitar.yml +11 -0
  1915. data/db/seeds/chord_voicings/g-sharp/gsharp9sus4-piano.yml +54 -0
  1916. data/db/seeds/chord_voicings/g-sharp/gsharpadd11-guitar.yml +11 -0
  1917. data/db/seeds/chord_voicings/g-sharp/gsharpadd11-piano.yml +43 -0
  1918. data/db/seeds/chord_voicings/g-sharp/gsharpadd13-guitar.yml +11 -0
  1919. data/db/seeds/chord_voicings/g-sharp/gsharpadd13-piano.yml +43 -0
  1920. data/db/seeds/chord_voicings/g-sharp/gsharpadd2-guitar.yml +11 -0
  1921. data/db/seeds/chord_voicings/g-sharp/gsharpadd2-piano.yml +43 -0
  1922. data/db/seeds/chord_voicings/g-sharp/gsharpadd4-guitar.yml +11 -0
  1923. data/db/seeds/chord_voicings/g-sharp/gsharpadd4-piano.yml +43 -0
  1924. data/db/seeds/chord_voicings/g-sharp/gsharpadd9-guitar.yml +11 -0
  1925. data/db/seeds/chord_voicings/g-sharp/gsharpadd9-piano.yml +43 -0
  1926. data/db/seeds/chord_voicings/g-sharp/gsharpaug-guitar.yml +23 -0
  1927. data/db/seeds/chord_voicings/g-sharp/gsharpaug-piano.yml +32 -0
  1928. data/db/seeds/chord_voicings/g-sharp/gsharpdim-guitar.yml +23 -0
  1929. data/db/seeds/chord_voicings/g-sharp/gsharpdim-piano.yml +32 -0
  1930. data/db/seeds/chord_voicings/g-sharp/gsharpdim7-guitar.yml +23 -0
  1931. data/db/seeds/chord_voicings/g-sharp/gsharpdim7-piano.yml +43 -0
  1932. data/db/seeds/chord_voicings/g-sharp/gsharpm-guitar.yml +35 -0
  1933. data/db/seeds/chord_voicings/g-sharp/gsharpm-maj7-guitar.yml +35 -0
  1934. data/db/seeds/chord_voicings/g-sharp/gsharpm-maj7-piano.yml +43 -0
  1935. data/db/seeds/chord_voicings/g-sharp/gsharpm-piano.yml +32 -0
  1936. data/db/seeds/chord_voicings/g-sharp/gsharpm11-guitar.yml +11 -0
  1937. data/db/seeds/chord_voicings/g-sharp/gsharpm11-piano.yml +71 -0
  1938. data/db/seeds/chord_voicings/g-sharp/gsharpm13-guitar.yml +11 -0
  1939. data/db/seeds/chord_voicings/g-sharp/gsharpm13-piano.yml +71 -0
  1940. data/db/seeds/chord_voicings/g-sharp/gsharpm6-guitar.yml +35 -0
  1941. data/db/seeds/chord_voicings/g-sharp/gsharpm6-piano.yml +43 -0
  1942. data/db/seeds/chord_voicings/g-sharp/gsharpm7-guitar.yml +35 -0
  1943. data/db/seeds/chord_voicings/g-sharp/gsharpm7-piano.yml +43 -0
  1944. data/db/seeds/chord_voicings/g-sharp/gsharpm7add11-guitar.yml +11 -0
  1945. data/db/seeds/chord_voicings/g-sharp/gsharpm7add11-piano.yml +54 -0
  1946. data/db/seeds/chord_voicings/g-sharp/gsharpm7flat5-guitar.yml +23 -0
  1947. data/db/seeds/chord_voicings/g-sharp/gsharpm7flat5-piano.yml +43 -0
  1948. data/db/seeds/chord_voicings/g-sharp/gsharpm9-guitar.yml +11 -0
  1949. data/db/seeds/chord_voicings/g-sharp/gsharpm9-piano.yml +54 -0
  1950. data/db/seeds/chord_voicings/g-sharp/gsharpmadd11-guitar.yml +11 -0
  1951. data/db/seeds/chord_voicings/g-sharp/gsharpmadd11-piano.yml +43 -0
  1952. data/db/seeds/chord_voicings/g-sharp/gsharpmadd13-guitar.yml +11 -0
  1953. data/db/seeds/chord_voicings/g-sharp/gsharpmadd13-piano.yml +43 -0
  1954. data/db/seeds/chord_voicings/g-sharp/gsharpmadd2-guitar.yml +11 -0
  1955. data/db/seeds/chord_voicings/g-sharp/gsharpmadd2-piano.yml +43 -0
  1956. data/db/seeds/chord_voicings/g-sharp/gsharpmadd4-guitar.yml +11 -0
  1957. data/db/seeds/chord_voicings/g-sharp/gsharpmadd4-piano.yml +43 -0
  1958. data/db/seeds/chord_voicings/g-sharp/gsharpmadd9-guitar.yml +11 -0
  1959. data/db/seeds/chord_voicings/g-sharp/gsharpmadd9-piano.yml +43 -0
  1960. data/db/seeds/chord_voicings/g-sharp/gsharpmaj7-guitar.yml +59 -0
  1961. data/db/seeds/chord_voicings/g-sharp/gsharpmaj7-piano.yml +43 -0
  1962. data/db/seeds/chord_voicings/g-sharp/gsharpmaj7sharp5-guitar.yml +23 -0
  1963. data/db/seeds/chord_voicings/g-sharp/gsharpmaj7sharp5-piano.yml +43 -0
  1964. data/db/seeds/chord_voicings/g-sharp/gsharpsus2-guitar.yml +23 -0
  1965. data/db/seeds/chord_voicings/g-sharp/gsharpsus2-piano.yml +32 -0
  1966. data/db/seeds/chord_voicings/g-sharp/gsharpsus4-guitar.yml +35 -0
  1967. data/db/seeds/chord_voicings/g-sharp/gsharpsus4-piano.yml +32 -0
  1968. data/db/seeds/chords/a-flat.yml +451 -0
  1969. data/db/seeds/chords/a-sharp.yml +451 -0
  1970. data/db/seeds/chords/a.yml +451 -0
  1971. data/db/seeds/chords/b-flat.yml +451 -0
  1972. data/db/seeds/chords/b.yml +451 -0
  1973. data/db/seeds/chords/c-sharp.yml +451 -0
  1974. data/db/seeds/chords/c.yml +451 -0
  1975. data/db/seeds/chords/d-flat.yml +451 -0
  1976. data/db/seeds/chords/d-sharp.yml +451 -0
  1977. data/db/seeds/chords/d.yml +451 -0
  1978. data/db/seeds/chords/e-flat.yml +451 -0
  1979. data/db/seeds/chords/e.yml +451 -0
  1980. data/db/seeds/chords/f-sharp.yml +451 -0
  1981. data/db/seeds/chords/f.yml +451 -0
  1982. data/db/seeds/chords/g-flat.yml +451 -0
  1983. data/db/seeds/chords/g-sharp.yml +451 -0
  1984. data/db/seeds/chords/g.yml +451 -0
  1985. data/db/seeds.rb +72 -0
  1986. data/lib/outro_rails/chord_chart_attribute.rb +40 -0
  1987. data/lib/outro_rails/engine.rb +20 -0
  1988. data/lib/outro_rails/form_builder_extensions.rb +7 -0
  1989. data/lib/outro_rails/generators/chord_seed_generator.rb +219 -0
  1990. data/lib/outro_rails/generators/guitar_voicing_generator.rb +196 -0
  1991. data/lib/outro_rails/generators/voicing_seed_entry.rb +42 -0
  1992. data/lib/outro_rails/generators/voicing_seed_writer.rb +53 -0
  1993. data/lib/outro_rails/generators/voicing_stub_generator.rb +176 -0
  1994. data/lib/outro_rails/instruments/guitar/capo.rb +54 -0
  1995. data/lib/outro_rails/instruments/guitar/chord_shapes.rb +243 -0
  1996. data/lib/outro_rails/instruments/guitar/tunings.rb +109 -0
  1997. data/lib/outro_rails/instruments/guitar.rb +120 -0
  1998. data/lib/outro_rails/instruments/piano.rb +68 -0
  1999. data/lib/outro_rails/instruments.rb +15 -0
  2000. data/lib/outro_rails/theory/chord_vocabulary.rb +198 -0
  2001. data/lib/outro_rails/theory/interval.rb +59 -0
  2002. data/lib/outro_rails/theory/key.rb +249 -0
  2003. data/lib/outro_rails/theory/nashville_number.rb +154 -0
  2004. data/lib/outro_rails/theory/note_name.rb +224 -0
  2005. data/lib/outro_rails/theory/pitch.rb +112 -0
  2006. data/lib/outro_rails/theory/scale.rb +338 -0
  2007. data/lib/outro_rails/theory/transposer.rb +248 -0
  2008. data/lib/outro_rails/theory.rb +15 -0
  2009. data/lib/outro_rails/version.rb +5 -0
  2010. data/lib/outro_rails.rb +19 -0
  2011. data/lib/tasks/outro_rails_tasks.rake +92 -0
  2012. metadata +2070 -0
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "outro_rails/instruments/guitar"
4
+ require "outro_rails/instruments/guitar/chord_shapes"
5
+
6
+ module OutroRails
7
+ module Instruments
8
+ class Guitar
9
+ # What the open CAGED shapes sound as when a capo is placed on a
10
+ # fret: capo 1 makes the C shape sound as Db, the A shape as Bb.
11
+ module Capo
12
+ MAX_FRET = 7
13
+ FRETS = (0..MAX_FRET).to_a.freeze
14
+
15
+ # Conventional capo-chart spelling per pitch class: flats, except
16
+ # F# which is more common than Gb on charts. Derived from the
17
+ # theory flat spellings so the tables can't drift.
18
+ SOUNDING_NAMES = Theory::NoteName::FLAT_NAMES
19
+ .map { |name| name == "Gb" ? "F#" : name }
20
+ .freeze
21
+
22
+ module_function
23
+
24
+ # The chart row for a capo fret: the five major CAGED shapes in
25
+ # C A G E D order, each paired with its sounding root.
26
+ # chart(1) => [[<Shape :c>, Db], [<Shape :a>, Bb], ...]
27
+ def chart(fret, guitar: Guitar.new)
28
+ unless FRETS.include?(fret)
29
+ raise ArgumentError,
30
+ "capo fret must be 0..#{MAX_FRET}, got #{fret.inspect}"
31
+ end
32
+
33
+ ChordShapes.for(quality: :major).map do |shape|
34
+ [ shape, sounding_root(shape, fret, guitar: guitar) ]
35
+ end
36
+ end
37
+
38
+ # NoteName a shape sounds as with a capo at `fret`.
39
+ def sounding_root(shape, fret, guitar: Guitar.new)
40
+ namesake_pitch_class =
41
+ ChordShapes.namesake_pitch_class(shape, guitar: guitar)
42
+
43
+ pitch_class = (
44
+ namesake_pitch_class + fret
45
+ ) % Theory::Interval::SEMITONES_PER_OCTAVE
46
+
47
+ sounding_name = SOUNDING_NAMES.fetch(pitch_class)
48
+
49
+ Theory::NoteName.parse(sounding_name)
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,243 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "outro_rails/instruments/guitar"
4
+
5
+ module OutroRails
6
+ module Instruments
7
+ class Guitar
8
+ # The library of guitar chord shapes (CAGED and friends) in standard
9
+ # tuning, keyed by [quality, extension].
10
+ #
11
+ # Each shape is written relative to its open position: frets are the
12
+ # frets you'd play for the shape's namesake chord (the :c shape is
13
+ # spelled as open C). A shape becomes any other root by shifting every
14
+ # fret up by the same offset. Shapes carry:
15
+ #
16
+ # root_string – the string whose note names the chord
17
+ # frets – { string => fret }, string 6 (low) .. 1 (high)
18
+ # movable_omit – strings dropped when the shape is barred up the
19
+ # neck (e.g. the awkward pinky notes of the G and A
20
+ # shapes); open-position voicings keep every string.
21
+ #
22
+ # Chords without an entry here (9/11/13, altered dominants, added
23
+ # tones, ...) fall back to stub generation - add shapes below to
24
+ # bring them into the generator.
25
+ module ChordShapes
26
+ # The five CAGED families, in their conventional order.
27
+ CAGED_LETTERS = %w[C A G E D].freeze
28
+
29
+ # Open-chord bass extensions (slash chords for Travis picking etc.)
30
+ # may only reach this far up the neck.
31
+ OPEN_BASS_MAX_FRET = 3
32
+
33
+ # One grip in the library. See the module comment for what each
34
+ # field means; instances are frozen by .shape below.
35
+ Shape = Struct.new(:name,
36
+ :root_string,
37
+ :frets,
38
+ :movable_omit,
39
+ keyword_init: true) do
40
+ # Fret played on the root string in open position
41
+ def root_fret
42
+ frets.fetch(root_string)
43
+ end
44
+
45
+ # The grip as barred up the neck, without the omitted strings
46
+ def movable_frets
47
+ frets.reject { |string, _| movable_omit.include?(string) }
48
+ end
49
+
50
+ # The CAGED family this shape descends from: :am7 => "A",
51
+ # :d_sus2 => "D". Shape names are spelled from their namesake
52
+ # chord, so the first character is always the family letter.
53
+ def caged_letter
54
+ name.to_s[0].upcase
55
+ end
56
+ end
57
+
58
+ # Builder used by the SHAPES table below (which is why it precedes
59
+ # the constant: the table is built by calling it at load time).
60
+ def self.shape(name, root_string, frets, movable_omit: [])
61
+ Shape.new(
62
+ name: name,
63
+ root_string: root_string,
64
+ frets: frets.freeze,
65
+ movable_omit: movable_omit.freeze
66
+ ).freeze
67
+ end
68
+ private_class_method :shape
69
+
70
+ # The shape table itself: { [quality, extension] => [Shape, ...] }.
71
+ # A missing key means the generator falls back to stubs.
72
+ SHAPES = {
73
+ # Full CAGED, ordered C A G E D (order is cosmetic - voicings are
74
+ # sorted by neck position at generation time).
75
+ [ :major, nil ] => [
76
+ shape(:c, 5, { 5 => 3, 4 => 2, 3 => 0, 2 => 1, 1 => 0 }),
77
+ shape(:a, 5, { 5 => 0, 4 => 2, 3 => 2, 2 => 2, 1 => 0 }),
78
+ shape(:g, 6, { 6 => 3, 5 => 2, 4 => 0, 3 => 0, 2 => 0, 1 => 3 }),
79
+ shape(:e, 6, { 6 => 0, 5 => 2, 4 => 2, 3 => 1, 2 => 0, 1 => 0 }),
80
+ shape(:d, 4, { 4 => 0, 3 => 2, 2 => 3, 1 => 2 })
81
+ ],
82
+
83
+ # The practical minor shapes. The Cm and Gm forms exist in theory
84
+ # but are unplayable as grips; add them here if you ever want them.
85
+ [ :minor, nil ] => [
86
+ shape(:a_minor, 5, { 5 => 0, 4 => 2, 3 => 2, 2 => 1, 1 => 0 }),
87
+ shape(:e_minor, 6, { 6 => 0, 5 => 2, 4 => 2, 3 => 0, 2 => 0, 1 => 0 }),
88
+ shape(:d_minor, 4, { 4 => 0, 3 => 2, 2 => 3, 1 => 1 })
89
+ ],
90
+
91
+ # Power chords: root on string 6 and string 5 only.
92
+ [ :power, nil ] => [
93
+ shape(:e_power, 6, { 6 => 0, 5 => 2, 4 => 2 }),
94
+ shape(:a_power, 5, { 5 => 0, 4 => 2, 3 => 2 })
95
+ ],
96
+
97
+ # Dominant sevenths get the full CAGED treatment. The G7 shape
98
+ # keeps string 1 - it carries the seventh.
99
+ [ :major, :'7' ] => [
100
+ shape(:c7, 5, { 5 => 3, 4 => 2, 3 => 3, 2 => 1, 1 => 0 }),
101
+ shape(:a7, 5, { 5 => 0, 4 => 2, 3 => 0, 2 => 2, 1 => 0 }),
102
+ shape(:g7, 6, { 6 => 3, 5 => 2, 4 => 0, 3 => 0, 2 => 0, 1 => 1 }),
103
+ shape(:e7, 6, { 6 => 0, 5 => 2, 4 => 0, 3 => 1, 2 => 0, 1 => 0 }),
104
+ shape(:d7, 4, { 4 => 0, 3 => 2, 2 => 1, 1 => 2 })
105
+ ],
106
+
107
+ [ :major, :maj7 ] => [
108
+ shape(:cmaj7, 5, { 5 => 3, 4 => 2, 3 => 0, 2 => 0, 1 => 0 }),
109
+ shape(:amaj7, 5, { 5 => 0, 4 => 2, 3 => 1, 2 => 2, 1 => 0 }),
110
+ shape(:gmaj7, 6, { 6 => 3, 5 => 2, 4 => 0, 3 => 0, 2 => 0, 1 => 2 }),
111
+ shape(:emaj7, 6, { 6 => 0, 5 => 2, 4 => 1, 3 => 1, 2 => 0, 1 => 0 }),
112
+ shape(:dmaj7, 4, { 4 => 0, 3 => 2, 2 => 2, 1 => 2 })
113
+ ],
114
+
115
+ [ :major, :'6' ] => [
116
+ shape(:c6, 5, { 5 => 3, 4 => 2, 3 => 2, 2 => 1, 1 => 0 }),
117
+ shape(:a6, 5, { 5 => 0, 4 => 2, 3 => 2, 2 => 2, 1 => 2 }),
118
+ shape(:g6, 6, { 6 => 3, 5 => 2, 4 => 0, 3 => 0, 2 => 0, 1 => 0 }),
119
+ shape(:e6, 6, { 6 => 0, 5 => 2, 4 => 2, 3 => 1, 2 => 2, 1 => 0 }),
120
+ shape(:d6, 4, { 4 => 0, 3 => 2, 2 => 0, 1 => 2 })
121
+ ],
122
+
123
+ [ :minor, :'7' ] => [
124
+ shape(:am7, 5, { 5 => 0, 4 => 2, 3 => 0, 2 => 1, 1 => 0 }),
125
+ shape(:em7, 6, { 6 => 0, 5 => 2, 4 => 0, 3 => 0, 2 => 0, 1 => 0 }),
126
+ shape(:dm7, 4, { 4 => 0, 3 => 2, 2 => 1, 1 => 1 })
127
+ ],
128
+
129
+ [ :minor, :maj7 ] => [
130
+ shape(:am_maj7, 5, { 5 => 0, 4 => 2, 3 => 1, 2 => 1, 1 => 0 }),
131
+ shape(:em_maj7, 6, { 6 => 0, 5 => 2, 4 => 1, 3 => 0, 2 => 0, 1 => 0 }),
132
+ shape(:dm_maj7, 4, { 4 => 0, 3 => 2, 2 => 2, 1 => 1 })
133
+ ],
134
+
135
+ [ :minor, :'6' ] => [
136
+ shape(:am6, 5, { 5 => 0, 4 => 2, 3 => 2, 2 => 1, 1 => 2 }),
137
+ shape(:em6, 6, { 6 => 0, 5 => 2, 4 => 2, 3 => 0, 2 => 2, 1 => 0 }),
138
+ shape(:dm6, 4, { 4 => 0, 3 => 2, 2 => 0, 1 => 1 })
139
+ ],
140
+
141
+ [ :suspended_2, nil ] => [
142
+ shape(:a_sus2, 5, { 5 => 0, 4 => 2, 3 => 2, 2 => 0, 1 => 0 }),
143
+ shape(:d_sus2, 4, { 4 => 0, 3 => 2, 2 => 3, 1 => 0 })
144
+ ],
145
+
146
+ [ :suspended_2, :'7' ] => [
147
+ shape(:a7sus2, 5, { 5 => 0, 4 => 2, 3 => 0, 2 => 0, 1 => 0 }),
148
+ shape(:d7sus2, 4, { 4 => 0, 3 => 2, 2 => 1, 1 => 0 })
149
+ ],
150
+
151
+ [ :suspended_4, nil ] => [
152
+ shape(:a_sus4, 5, { 5 => 0, 4 => 2, 3 => 2, 2 => 3, 1 => 0 }),
153
+ shape(:e_sus4, 6, { 6 => 0, 5 => 2, 4 => 2, 3 => 2, 2 => 0, 1 => 0 }),
154
+ shape(:d_sus4, 4, { 4 => 0, 3 => 2, 2 => 3, 1 => 3 })
155
+ ],
156
+
157
+ [ :suspended_4, :'7' ] => [
158
+ shape(:a7sus4, 5, { 5 => 0, 4 => 2, 3 => 0, 2 => 3, 1 => 0 }),
159
+ shape(:e7sus4, 6, { 6 => 0, 5 => 2, 4 => 0, 3 => 2, 2 => 0, 1 => 0 }),
160
+ shape(:d7sus4, 4, { 4 => 0, 3 => 2, 2 => 1, 1 => 3 })
161
+ ],
162
+
163
+ [ :diminished, nil ] => [
164
+ shape(:a_dim, 5, { 5 => 0, 4 => 1, 3 => 2, 2 => 1 }),
165
+ shape(:d_dim, 4, { 4 => 0, 3 => 1, 2 => 3, 1 => 1 })
166
+ ],
167
+
168
+ # quality :diminished + extension '7' is symbolized m7b5.
169
+ [ :diminished, :'7' ] => [
170
+ shape(:am7b5, 5, { 5 => 0, 4 => 1, 3 => 0, 2 => 1 }),
171
+ shape(:dm7b5, 4, { 4 => 0, 3 => 1, 2 => 1, 1 => 1 })
172
+ ],
173
+
174
+ [ :diminished, :dim7 ] => [
175
+ shape(:adim7, 5, { 5 => 1, 4 => 2, 3 => 0, 2 => 2 }),
176
+ shape(:ddim7, 4, { 4 => 0, 3 => 1, 2 => 0, 1 => 1 })
177
+ ],
178
+
179
+ [ :augmented, nil ] => [
180
+ shape(:a_aug, 5, { 5 => 0, 4 => 3, 3 => 2, 2 => 2, 1 => 1 }),
181
+ shape(:e_aug, 6, { 6 => 0, 5 => 3, 4 => 2, 3 => 1, 2 => 1, 1 => 0 })
182
+ ],
183
+
184
+ [ :augmented, :maj7 ] => [
185
+ shape(:amaj7sharp5, 5, { 5 => 0, 4 => 3, 3 => 1, 2 => 2 }),
186
+ shape(:emaj7sharp5, 6, { 6 => 0, 5 => 3, 4 => 1, 3 => 1 })
187
+ ]
188
+ }.freeze
189
+
190
+ module_function
191
+
192
+ # The shapes for a chord type, or nil when none are defined.
193
+ def for(quality:, extension: nil)
194
+ SHAPES[[ quality&.to_sym, extension&.to_sym ]]
195
+ end
196
+
197
+ # Whether the library has shapes for a chord type.
198
+ def supports?(quality:, extension: nil)
199
+ SHAPES.key?([ quality&.to_sym, extension&.to_sym ])
200
+ end
201
+
202
+ # Every chord type with a shape in a CAGED family, in vocabulary
203
+ # order: [[quality, extension, shape], ...]. Not every type has
204
+ # every letter (minor has no C or G grip, sus2 only A and D).
205
+ def chords_for_letter(letter)
206
+ target = letter.to_s.upcase
207
+
208
+ SHAPES.filter_map do |(quality, extension), shapes|
209
+ shape = shapes.find { |candidate| candidate.caged_letter == target }
210
+ [ quality, extension, shape ] if shape
211
+ end
212
+ end
213
+
214
+ # [string, fret] positions playing `shape` rooted on `root`: the
215
+ # whole grip shifts up by the semitone distance from the shape's
216
+ # namesake root. Open position (offset 0) keeps every string;
217
+ # barred positions drop the shape's movable_omit strings.
218
+ def positions(shape, root, guitar: Guitar.new)
219
+ offset = root_offset(shape, root, guitar: guitar)
220
+ frets = offset.zero? ? shape.frets : shape.movable_frets
221
+
222
+ frets.map { |string, fret| [ string, fret + offset ] }
223
+ end
224
+
225
+ # Semitones the shape shifts up the neck to sound `root` (0..11).
226
+ def root_offset(shape, root, guitar: Guitar.new)
227
+ root_pitch_class = Theory::NoteName.parse(root).pitch_class
228
+ namesake_pitch_class = namesake_pitch_class(shape, guitar: guitar)
229
+ offset = root_pitch_class - namesake_pitch_class
230
+
231
+ offset % Theory::Interval::SEMITONES_PER_OCTAVE
232
+ end
233
+
234
+ # Pitch class of the note naming the shape's open-position chord
235
+ # (the E shape's namesake root is the open low E). Capo charts
236
+ # build on this too.
237
+ def namesake_pitch_class(shape, guitar: Guitar.new)
238
+ guitar.pitch_class_at(shape.root_string, shape.root_fret)
239
+ end
240
+ end
241
+ end
242
+ end
243
+ end
@@ -0,0 +1,109 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OutroRails
4
+ module Instruments
5
+ class Guitar
6
+ # Registry of named guitar tunings. Each Tuning carries a URL slug,
7
+ # a display name, its open-string notes (low to high, i.e. string 6
8
+ # first) and the accidental spelling that fits it best.
9
+ module Tunings
10
+ Tuning = Struct.new(:slug,
11
+ :name,
12
+ :notes,
13
+ :prefer,
14
+ keyword_init: true) do
15
+ # True only for the tuning we fall back to when none is given.
16
+ def standard?
17
+ slug == "standard"
18
+ end
19
+
20
+ # Open-string letters without octaves, low to high: %w[D A D G B E]
21
+ def letters
22
+ notes.map { |note| note.sub(/-?\d+\z/, "") }
23
+ end
24
+
25
+ # "Drop D - D A D G B E"
26
+ def label
27
+ "#{name} - #{letters.join(' ')}"
28
+ end
29
+
30
+ # Interpolates as the display name: "#{tuning}" => "Drop D"
31
+ def to_s
32
+ name
33
+ end
34
+ end
35
+
36
+ # Slug, display name, open strings (low to high), preferred
37
+ # accidentals for note labels on the fretboard.
38
+ ALL = [
39
+ [ "standard", "Standard", %w[E2 A2 D3 G3 B3 E4], :sharps ],
40
+ [ "half-step-down", "Half-Step Down", %w[Eb2 Ab2 Db3 Gb3 Bb3 Eb4], :flats ],
41
+ [ "perfect-fourth", "Perfect Fourth", %w[E2 A2 D3 G3 C4 F4], :sharps ],
42
+ [ "a", "A Tuning", %w[A1 D2 G2 C3 E3 A3], :sharps ],
43
+ [ "b", "B Tuning", %w[B1 E2 A2 D3 F#3 B3], :sharps ],
44
+ [ "c", "C Tuning", %w[C2 F2 Bb2 Eb3 G3 C4], :flats ],
45
+ [ "c-sharp", "C# Tuning", %w[C#2 F#2 B2 E3 G#3 C#4], :sharps ],
46
+ [ "d", "D Tuning", %w[D2 G2 C3 F3 A3 D4], :sharps ],
47
+ [ "drop-a", "Drop A", %w[A1 E2 A2 D3 F#3 B3], :sharps ],
48
+ [ "drop-bb", "Drop Bb", %w[Bb1 F2 Bb2 Eb3 G3 C4], :flats ],
49
+ [ "drop-b", "Drop B", %w[B1 F#2 B2 E3 G#3 C#4], :sharps ],
50
+ [ "drop-c", "Drop C", %w[C2 G2 C3 F3 A3 D4], :sharps ],
51
+ [ "drop-db", "Drop Db", %w[Db2 Ab2 Db3 Gb3 Bb3 Eb4], :flats ],
52
+ [ "drop-d", "Drop D", %w[D2 A2 D3 G3 B3 E4], :sharps ],
53
+ [ "open-c", "Open C", %w[C2 G2 C3 G3 C4 E4], :sharps ],
54
+ [ "open-d", "Open D", %w[D2 A2 D3 F#3 A3 D4], :sharps ],
55
+ [ "open-e", "Open E", %w[E2 B2 E3 G#3 B3 E4], :sharps ],
56
+ [ "open-g", "Open G", %w[D2 G2 D3 G3 B3 D4], :sharps ],
57
+ [ "celtic", "Celtic (DADGAD)", %w[D2 A2 D3 G3 A3 D4], :sharps ]
58
+ ].map { |slug, name, notes, prefer|
59
+ # Instances are shared and frozen, so callers can't mutate the registry.
60
+ Tuning.new(slug: slug,
61
+ name: name,
62
+ notes: notes.freeze,
63
+ prefer: prefer).freeze
64
+ }.freeze
65
+
66
+ # Slug => Tuning lookup table built from ALL.
67
+ BY_SLUG = ALL.to_h { |tuning| [ tuning.slug, tuning ] }.freeze
68
+
69
+ # Tuning assumed when the request doesn't name one.
70
+ DEFAULT_SLUG = "standard"
71
+
72
+ # Every tuning, in the order declared above (i.e. menu order).
73
+ def self.all
74
+ ALL
75
+ end
76
+
77
+ # Just the slugs, same order. Useful for route constraints and
78
+ # inclusion validations.
79
+ def self.slugs
80
+ ALL.map(&:slug)
81
+ end
82
+
83
+ # The tuning fetch falls back to for blank input.
84
+ def self.default
85
+ BY_SLUG.fetch(DEFAULT_SLUG)
86
+ end
87
+
88
+ # Looks up a tuning by slug; nil/blank falls back to standard.
89
+ # Legacy underscore slugs ('drop_d') resolve to their dashed
90
+ # equivalents. Raises ArgumentError on unknown slugs (pair with
91
+ # InvalidParamsRedirectable to turn that into a redirect).
92
+ def self.fetch(slug)
93
+ slug = slug.to_s.strip.tr("_", "-")
94
+ return default if slug.empty?
95
+
96
+ BY_SLUG.fetch(slug) { raise ArgumentError,
97
+ "unknown tuning #{slug.inspect}" }
98
+ end
99
+
100
+ # Whether slug names a known tuning. Accepts legacy underscores like
101
+ # fetch does, but does not treat blank as the default: include?("")
102
+ # is false even though fetch("") returns standard.
103
+ def self.include?(slug)
104
+ BY_SLUG.key?(slug.to_s.tr("_", "-"))
105
+ end
106
+ end
107
+ end
108
+ end
109
+ end
@@ -0,0 +1,120 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "outro_rails/instruments/guitar/capo"
4
+ require "outro_rails/instruments/guitar/chord_shapes"
5
+ require "outro_rails/instruments/guitar/tunings"
6
+
7
+ module OutroRails
8
+ module Instruments
9
+ # A guitar with a particular tuning. Strings are numbered 1 (highest
10
+ # pitch) to N (lowest).
11
+ class Guitar
12
+ # Open strings low to high, i.e. string 6 first.
13
+ STANDARD_TUNING = %w[E2 A2 D3 G3 B3 E4].freeze
14
+
15
+ # Playable fret range; 0 is the open string.
16
+ MIN_FRET = 0
17
+ MAX_FRET = 24
18
+
19
+ # Fret inlay markers.
20
+ SINGLE_MARKER_FRETS = [ 3, 5, 7, 9, 15, 17, 19, 21 ].freeze
21
+ DOUBLE_MARKER_FRETS = [ 12, 24 ].freeze
22
+
23
+ # Open-string Pitches, low to high, as given to the constructor
24
+ attr_reader :tuning
25
+
26
+ # Normalizes highlight positions to [string, fret] integer pairs.
27
+ # Accepts [string, fret] pairs or "string:fret" strings:
28
+ # normalize_positions([[5, 3], '4:2']) => [[5, 3], [4, 2]]
29
+ def self.normalize_positions(positions)
30
+ Array(positions).map do |position|
31
+ string, fret =
32
+ if position.is_a?(String)
33
+ position.split(":", 2)
34
+ else
35
+ position.to_a
36
+ end
37
+ [ Integer(string), Integer(fret) ]
38
+ end
39
+ end
40
+
41
+ # Builds a Guitar from a named tuning: a Tunings::Tuning, a slug
42
+ # ("drop_d"), or nil/"" for standard.
43
+ # Guitar.in_tuning("open_g") => #<Guitar D2 G2 D3 G3 B3 D4>
44
+ def self.in_tuning(tuning)
45
+ tuning = Tunings.fetch(tuning) unless tuning.is_a?(Tunings::Tuning)
46
+ new(tuning: tuning.notes)
47
+ end
48
+
49
+ # Parses the tuning into Pitches. Instances are immutable.
50
+ def initialize(tuning: STANDARD_TUNING)
51
+ @tuning = tuning.map { |note| Theory::Pitch.parse(note) }.freeze
52
+ freeze
53
+ end
54
+
55
+ # Number of strings, taken from the tuning
56
+ def string_count
57
+ tuning.size
58
+ end
59
+
60
+ # Open Pitch of a string, counting 1 as the highest. The tuning is
61
+ # stored low to high, so the index is inverted.
62
+ def open_pitch(string)
63
+ tuning.fetch(string_count - string)
64
+ end
65
+
66
+ # Open-string MIDI numbers keyed by string number:
67
+ # { 1 => 64, 2 => 59, 3 => 55, 4 => 50, 5 => 45, 6 => 40 }
68
+ def open_midis
69
+ (1..string_count).to_h { |string| [ string, midi_at(string, MIN_FRET) ] }
70
+ end
71
+
72
+ # MIDI number sounded at a string and fret - one semitone per fret
73
+ def midi_at(string, fret)
74
+ open_pitch(string).midi + fret
75
+ end
76
+
77
+ # That note as a Pitch, spelled with sharps or flats as preferred
78
+ def pitch_at(string, fret, prefer: :sharps)
79
+ Theory::Pitch.from_midi(midi_at(string, fret), prefer: prefer)
80
+ end
81
+
82
+ # Pitch class (0-11) sounded at a string and fret, ignoring octave
83
+ def pitch_class_at(string, fret)
84
+ midi_at(string, fret) % Theory::Interval::SEMITONES_PER_OCTAVE
85
+ end
86
+
87
+ # Every [string, fret] position whose pitch class belongs to the
88
+ # scale, covering open strings through max_fret on every string:
89
+ # guitar.positions_in(Theory::Scale.new('C')) => [[1, 0], [1, 1], ...]
90
+ def positions_in(scale, min_fret: MIN_FRET, max_fret: MAX_FRET)
91
+ positions_with_pitch_classes(scale.pitch_classes,
92
+ min_fret: min_fret,
93
+ max_fret: max_fret)
94
+ end
95
+
96
+ # Every [string, fret] position sounding a note (any octave):
97
+ # guitar.positions_of('C') => [[1, 8], [1, 20], [2, 1], ...]
98
+ def positions_of(note, min_fret: MIN_FRET, max_fret: MAX_FRET)
99
+ pitch_class = Theory::NoteName.parse(note).pitch_class
100
+ positions_with_pitch_classes([ pitch_class ],
101
+ min_fret: min_fret,
102
+ max_fret: max_fret)
103
+ end
104
+
105
+ private
106
+
107
+ # Scans the fretboard string by string, low string number first,
108
+ # collecting positions matching any of the given pitch classes.
109
+ def positions_with_pitch_classes(pitch_classes, min_fret:, max_fret:)
110
+ (1..string_count).flat_map do |string|
111
+ (min_fret..max_fret).filter_map do |fret|
112
+ if pitch_classes.include?(pitch_class_at(string, fret))
113
+ [ string, fret ]
114
+ end
115
+ end
116
+ end
117
+ end
118
+ end
119
+ end
120
+ end
@@ -0,0 +1,68 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OutroRails
4
+ module Instruments
5
+ # Piano keyboard logic.
6
+ module Piano
7
+ # Pitch classes of the naturals, i.e. the white keys of an octave.
8
+ WHITE_PITCH_CLASSES =
9
+ Theory::NoteName::NATURAL_PITCH_CLASSES.values.freeze
10
+
11
+ module_function
12
+
13
+ # Whether a MIDI number lands on a white key
14
+ def white_key?(midi)
15
+ pitch_class = midi % Theory::Interval::SEMITONES_PER_OCTAVE
16
+
17
+ WHITE_PITCH_CLASSES.include?(pitch_class)
18
+ end
19
+
20
+ # Whether a MIDI number lands on a black key
21
+ def black_key?(midi)
22
+ !white_key?(midi)
23
+ end
24
+
25
+ # Inclusive list of key hashes between two note names, low to high:
26
+ # [{ midi: 48, note: 'C3', black: false }, ...]
27
+ def keys_between(start_note, end_note, prefer: :sharps)
28
+ low = Theory::Pitch.parse(start_note).midi
29
+ high = Theory::Pitch.parse(end_note).midi
30
+ low, high = high, low if low > high
31
+
32
+ (low..high).map do |midi|
33
+ { midi: midi,
34
+ note: Theory::Pitch.from_midi(midi, prefer: prefer).to_s,
35
+ black: black_key?(midi)
36
+ }
37
+ end
38
+ end
39
+
40
+ # Display range for a collection of pitches: the first white key
41
+ # strictly below the lowest note through the first white key strictly
42
+ # above the highest, so the keyboard always has one free white key of
43
+ # margin on each side (and never starts or ends on a black key):
44
+ # display_range(c_major.pitched_notes) => [B3, D5] (as Pitches)
45
+ # display_range(f_sharp_major.pitched_notes) => [F4, G5]
46
+ def display_range(pitches, prefer: :sharps)
47
+ midis = pitches.map { |pitch| Theory::Pitch.parse(pitch).midi }
48
+
49
+ [
50
+ Theory::Pitch.from_midi(next_white_key(midis.min - 1, -1),
51
+ prefer: prefer),
52
+ Theory::Pitch.from_midi(next_white_key(midis.max + 1, 1),
53
+ prefer: prefer)
54
+ ]
55
+ end
56
+
57
+ # Walks outward from a midi pitch (direction: -1 down, +1 up) until
58
+ # landing on a white key, to pad keyboard display ranges.
59
+ def next_white_key(midi, direction)
60
+ midi += direction until white_key?(midi)
61
+ midi
62
+ end
63
+
64
+ # Internal helper - the public surface ends at #display_range.
65
+ private_class_method :next_white_key
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "outro_rails/instruments/guitar"
4
+ require "outro_rails/instruments/guitar/capo"
5
+ require "outro_rails/instruments/guitar/chord_shapes"
6
+ require "outro_rails/instruments/guitar/tunings"
7
+ require "outro_rails/instruments/piano"
8
+
9
+ module OutroRails
10
+ module Instruments
11
+ ENUM_VALUES = { piano: 0, guitar: 1 }.freeze
12
+
13
+ ALL = ENUM_VALUES.keys.map(&:to_s).freeze
14
+ end
15
+ end