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.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.md +295 -0
- data/Rakefile +6 -0
- data/app/assets/images/outro_rails/add.svg +1 -0
- data/app/assets/images/outro_rails/capo.svg +18 -0
- data/app/assets/images/outro_rails/check.svg +1 -0
- data/app/assets/images/outro_rails/circle.svg +15 -0
- data/app/assets/images/outro_rails/clear.svg +1 -0
- data/app/assets/images/outro_rails/edit.svg +1 -0
- data/app/assets/images/outro_rails/filter.svg +1 -0
- data/app/assets/images/outro_rails/guitar.svg +1 -0
- data/app/assets/images/outro_rails/instruments.svg +2 -0
- data/app/assets/images/outro_rails/library.svg +7 -0
- data/app/assets/images/outro_rails/music.svg +1 -0
- data/app/assets/images/outro_rails/piano.svg +4 -0
- data/app/assets/images/outro_rails/save.svg +1 -0
- data/app/assets/images/outro_rails/scales.svg +2 -0
- data/app/assets/images/outro_rails/search.svg +1 -0
- data/app/assets/images/outro_rails/shapes.svg +1 -0
- data/app/assets/images/outro_rails/transposer.svg +2 -0
- data/app/assets/images/outro_rails/undo.svg +1 -0
- data/app/assets/javascripts/outro_rails/outro_rails.js +451 -0
- data/app/assets/stylesheets/outro_rails/outro_rails.css +1260 -0
- data/app/controllers/concerns/outro_rails/guitar_tuning_selectable.rb +17 -0
- data/app/controllers/concerns/outro_rails/instrument_selectable.rb +15 -0
- data/app/controllers/concerns/outro_rails/invalid_params_redirectable.rb +29 -0
- data/app/controllers/concerns/outro_rails/root_selectable.rb +19 -0
- data/app/controllers/outro_rails/application_controller.rb +6 -0
- data/app/controllers/outro_rails/caged/pickers_controller.rb +16 -0
- data/app/controllers/outro_rails/caged_controller.rb +57 -0
- data/app/controllers/outro_rails/capo_controller.rb +14 -0
- data/app/controllers/outro_rails/chord_charts/voicings_controller.rb +109 -0
- data/app/controllers/outro_rails/chord_voicings_controller.rb +12 -0
- data/app/controllers/outro_rails/chords/pickers_controller.rb +32 -0
- data/app/controllers/outro_rails/chords_controller.rb +61 -0
- data/app/controllers/outro_rails/circle_of_fifths_controller.rb +38 -0
- data/app/controllers/outro_rails/home_controller.rb +8 -0
- data/app/controllers/outro_rails/instruments/pickers_controller.rb +21 -0
- data/app/controllers/outro_rails/instruments_controller.rb +24 -0
- data/app/controllers/outro_rails/scales/pickers_controller.rb +27 -0
- data/app/controllers/outro_rails/scales_controller.rb +58 -0
- data/app/controllers/outro_rails/transposer_controller.rb +33 -0
- data/app/helpers/outro_rails/application_helper.rb +7 -0
- data/app/helpers/outro_rails/capo_helper.rb +9 -0
- data/app/helpers/outro_rails/chord_charts_helper.rb +51 -0
- data/app/helpers/outro_rails/chords_helper.rb +30 -0
- data/app/helpers/outro_rails/circle_of_fifths_helper.rb +44 -0
- data/app/helpers/outro_rails/instruments_helper.rb +41 -0
- data/app/helpers/outro_rails/scales_helper.rb +34 -0
- data/app/helpers/outro_rails/transposer_helper.rb +27 -0
- data/app/jobs/outro_rails/application_job.rb +4 -0
- data/app/mailers/outro_rails/application_mailer.rb +6 -0
- data/app/models/outro_rails/application_record.rb +7 -0
- data/app/models/outro_rails/chord.rb +85 -0
- data/app/models/outro_rails/chord_chart/voicing.rb +54 -0
- data/app/models/outro_rails/chord_chart.rb +106 -0
- data/app/models/outro_rails/chord_voicing.rb +45 -0
- data/app/views/layouts/outro_rails/application.html.erb +29 -0
- data/app/views/outro_rails/caged/show.html.erb +78 -0
- data/app/views/outro_rails/capo/show.html.erb +62 -0
- data/app/views/outro_rails/chord_charts/_chart.html.erb +286 -0
- data/app/views/outro_rails/chord_charts/_fields.html.erb +50 -0
- data/app/views/outro_rails/chord_voicings/_chord_voicing.html.erb +41 -0
- data/app/views/outro_rails/chord_voicings/_figure.html.erb +37 -0
- data/app/views/outro_rails/chord_voicings/_guitar.html.erb +13 -0
- data/app/views/outro_rails/chord_voicings/_piano.html.erb +17 -0
- data/app/views/outro_rails/chord_voicings/show.html.erb +17 -0
- data/app/views/outro_rails/chords/_chord.html.erb +50 -0
- data/app/views/outro_rails/chords/_chords.html.erb +29 -0
- data/app/views/outro_rails/chords/_filter.html.erb +87 -0
- data/app/views/outro_rails/chords/index.html.erb +31 -0
- data/app/views/outro_rails/chords/show.html.erb +24 -0
- data/app/views/outro_rails/circle_of_fifths/_wheel.html.erb +64 -0
- data/app/views/outro_rails/circle_of_fifths/show.html.erb +95 -0
- data/app/views/outro_rails/home/index.html.erb +75 -0
- data/app/views/outro_rails/instruments/_guitar.html.erb +37 -0
- data/app/views/outro_rails/instruments/_guitar_figure.html.erb +145 -0
- data/app/views/outro_rails/instruments/_guitar_midi.html.erb +137 -0
- data/app/views/outro_rails/instruments/_piano.html.erb +9 -0
- data/app/views/outro_rails/instruments/_piano_figure.html.erb +82 -0
- data/app/views/outro_rails/instruments/_piano_midi.html.erb +74 -0
- data/app/views/outro_rails/instruments/index.html.erb +50 -0
- data/app/views/outro_rails/instruments/show.html.erb +31 -0
- data/app/views/outro_rails/scales/_chords_table.html.erb +39 -0
- data/app/views/outro_rails/scales/_picker.html.erb +37 -0
- data/app/views/outro_rails/scales/_related_scales.html.erb +65 -0
- data/app/views/outro_rails/scales/index.html.erb +52 -0
- data/app/views/outro_rails/scales/show.html.erb +102 -0
- data/app/views/outro_rails/shared/_breadcrumb.html.erb +31 -0
- data/app/views/outro_rails/shared/_header.html.erb +12 -0
- data/app/views/outro_rails/transposer/show.html.erb +85 -0
- data/config/routes.rb +68 -0
- data/db/migrate/20260702141708_create_outro_rails_chords.rb +21 -0
- data/db/migrate/20260702141728_create_outro_rails_chord_voicings.rb +23 -0
- data/db/migrate/20260815090000_create_outro_rails_chord_charts.rb +23 -0
- data/db/migrate/20260815090100_create_outro_rails_chord_chart_voicing_selections.rb +30 -0
- data/db/seeds/chord_voicings/a/a-guitar.yml +71 -0
- data/db/seeds/chord_voicings/a/a-piano.yml +32 -0
- data/db/seeds/chord_voicings/a/a11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a/a11-piano.yml +71 -0
- data/db/seeds/chord_voicings/a/a13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a/a13-piano.yml +71 -0
- data/db/seeds/chord_voicings/a/a13flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a/a13flat9-piano.yml +71 -0
- data/db/seeds/chord_voicings/a/a13sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a/a13sharp11-piano.yml +83 -0
- data/db/seeds/chord_voicings/a/a13sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a/a13sharp9-piano.yml +71 -0
- data/db/seeds/chord_voicings/a/a13sus4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a/a13sus4-piano.yml +71 -0
- data/db/seeds/chord_voicings/a/a5-guitar.yml +23 -0
- data/db/seeds/chord_voicings/a/a5-piano.yml +21 -0
- data/db/seeds/chord_voicings/a/a6-guitar.yml +83 -0
- data/db/seeds/chord_voicings/a/a6-piano.yml +43 -0
- data/db/seeds/chord_voicings/a/a7-guitar.yml +83 -0
- data/db/seeds/chord_voicings/a/a7-piano.yml +43 -0
- data/db/seeds/chord_voicings/a/a7flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a/a7flat13-piano.yml +54 -0
- data/db/seeds/chord_voicings/a/a7flat5-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a/a7flat5-piano.yml +43 -0
- data/db/seeds/chord_voicings/a/a7flat5flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a/a7flat5flat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/a/a7flat5sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a/a7flat5sharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/a/a7flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a/a7flat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/a/a7flat9flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a/a7flat9flat13-piano.yml +65 -0
- data/db/seeds/chord_voicings/a/a7flat9sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a/a7flat9sharp11-piano.yml +65 -0
- data/db/seeds/chord_voicings/a/a7sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a/a7sharp11-piano.yml +54 -0
- data/db/seeds/chord_voicings/a/a7sharp5-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a/a7sharp5-piano.yml +43 -0
- data/db/seeds/chord_voicings/a/a7sharp5flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a/a7sharp5flat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/a/a7sharp5sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a/a7sharp5sharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/a/a7sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a/a7sharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/a/a7sharp9flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a/a7sharp9flat13-piano.yml +65 -0
- data/db/seeds/chord_voicings/a/a7sus2-guitar.yml +47 -0
- data/db/seeds/chord_voicings/a/a7sus2-piano.yml +43 -0
- data/db/seeds/chord_voicings/a/a7sus4-guitar.yml +59 -0
- data/db/seeds/chord_voicings/a/a7sus4-piano.yml +43 -0
- data/db/seeds/chord_voicings/a/a9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a/a9-piano.yml +54 -0
- data/db/seeds/chord_voicings/a/a9flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a/a9flat13-piano.yml +65 -0
- data/db/seeds/chord_voicings/a/a9sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a/a9sharp11-piano.yml +65 -0
- data/db/seeds/chord_voicings/a/a9sus4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a/a9sus4-piano.yml +54 -0
- data/db/seeds/chord_voicings/a/aadd11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a/aadd11-piano.yml +43 -0
- data/db/seeds/chord_voicings/a/aadd13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a/aadd13-piano.yml +43 -0
- data/db/seeds/chord_voicings/a/aadd2-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a/aadd2-piano.yml +43 -0
- data/db/seeds/chord_voicings/a/aadd4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a/aadd4-piano.yml +43 -0
- data/db/seeds/chord_voicings/a/aadd9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a/aadd9-piano.yml +43 -0
- data/db/seeds/chord_voicings/a/aaug-guitar.yml +35 -0
- data/db/seeds/chord_voicings/a/aaug-piano.yml +32 -0
- data/db/seeds/chord_voicings/a/adim-guitar.yml +23 -0
- data/db/seeds/chord_voicings/a/adim-piano.yml +32 -0
- data/db/seeds/chord_voicings/a/adim7-guitar.yml +23 -0
- data/db/seeds/chord_voicings/a/adim7-piano.yml +43 -0
- data/db/seeds/chord_voicings/a/am-guitar.yml +47 -0
- data/db/seeds/chord_voicings/a/am-maj7-guitar.yml +47 -0
- data/db/seeds/chord_voicings/a/am-maj7-piano.yml +43 -0
- data/db/seeds/chord_voicings/a/am-piano.yml +32 -0
- data/db/seeds/chord_voicings/a/am11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a/am11-piano.yml +71 -0
- data/db/seeds/chord_voicings/a/am13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a/am13-piano.yml +71 -0
- data/db/seeds/chord_voicings/a/am6-guitar.yml +59 -0
- data/db/seeds/chord_voicings/a/am6-piano.yml +43 -0
- data/db/seeds/chord_voicings/a/am7-guitar.yml +59 -0
- data/db/seeds/chord_voicings/a/am7-piano.yml +43 -0
- data/db/seeds/chord_voicings/a/am7add11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a/am7add11-piano.yml +54 -0
- data/db/seeds/chord_voicings/a/am7flat5-guitar.yml +35 -0
- data/db/seeds/chord_voicings/a/am7flat5-piano.yml +43 -0
- data/db/seeds/chord_voicings/a/am9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a/am9-piano.yml +54 -0
- data/db/seeds/chord_voicings/a/amadd11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a/amadd11-piano.yml +43 -0
- data/db/seeds/chord_voicings/a/amadd13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a/amadd13-piano.yml +43 -0
- data/db/seeds/chord_voicings/a/amadd2-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a/amadd2-piano.yml +43 -0
- data/db/seeds/chord_voicings/a/amadd4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a/amadd4-piano.yml +43 -0
- data/db/seeds/chord_voicings/a/amadd9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a/amadd9-piano.yml +43 -0
- data/db/seeds/chord_voicings/a/amaj7-guitar.yml +71 -0
- data/db/seeds/chord_voicings/a/amaj7-piano.yml +43 -0
- data/db/seeds/chord_voicings/a/amaj7sharp5-guitar.yml +35 -0
- data/db/seeds/chord_voicings/a/amaj7sharp5-piano.yml +43 -0
- data/db/seeds/chord_voicings/a/asus2-guitar.yml +35 -0
- data/db/seeds/chord_voicings/a/asus2-piano.yml +32 -0
- data/db/seeds/chord_voicings/a/asus4-guitar.yml +47 -0
- data/db/seeds/chord_voicings/a/asus4-piano.yml +32 -0
- data/db/seeds/chord_voicings/a-flat/aflat-guitar.yml +59 -0
- data/db/seeds/chord_voicings/a-flat/aflat-piano.yml +32 -0
- data/db/seeds/chord_voicings/a-flat/aflat11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-flat/aflat11-piano.yml +71 -0
- data/db/seeds/chord_voicings/a-flat/aflat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-flat/aflat13-piano.yml +71 -0
- data/db/seeds/chord_voicings/a-flat/aflat13flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-flat/aflat13flat9-piano.yml +71 -0
- data/db/seeds/chord_voicings/a-flat/aflat13sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-flat/aflat13sharp11-piano.yml +83 -0
- data/db/seeds/chord_voicings/a-flat/aflat13sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-flat/aflat13sharp9-piano.yml +71 -0
- data/db/seeds/chord_voicings/a-flat/aflat13sus4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-flat/aflat13sus4-piano.yml +71 -0
- data/db/seeds/chord_voicings/a-flat/aflat5-guitar.yml +23 -0
- data/db/seeds/chord_voicings/a-flat/aflat5-piano.yml +21 -0
- data/db/seeds/chord_voicings/a-flat/aflat6-guitar.yml +59 -0
- data/db/seeds/chord_voicings/a-flat/aflat6-piano.yml +43 -0
- data/db/seeds/chord_voicings/a-flat/aflat7-guitar.yml +59 -0
- data/db/seeds/chord_voicings/a-flat/aflat7-piano.yml +43 -0
- data/db/seeds/chord_voicings/a-flat/aflat7flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-flat/aflat7flat13-piano.yml +54 -0
- data/db/seeds/chord_voicings/a-flat/aflat7flat5-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-flat/aflat7flat5-piano.yml +43 -0
- data/db/seeds/chord_voicings/a-flat/aflat7flat5flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-flat/aflat7flat5flat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/a-flat/aflat7flat5sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-flat/aflat7flat5sharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/a-flat/aflat7flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-flat/aflat7flat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/a-flat/aflat7flat9flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-flat/aflat7flat9flat13-piano.yml +65 -0
- data/db/seeds/chord_voicings/a-flat/aflat7flat9sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-flat/aflat7flat9sharp11-piano.yml +65 -0
- data/db/seeds/chord_voicings/a-flat/aflat7sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-flat/aflat7sharp11-piano.yml +54 -0
- data/db/seeds/chord_voicings/a-flat/aflat7sharp5-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-flat/aflat7sharp5-piano.yml +43 -0
- data/db/seeds/chord_voicings/a-flat/aflat7sharp5flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-flat/aflat7sharp5flat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/a-flat/aflat7sharp5sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-flat/aflat7sharp5sharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/a-flat/aflat7sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-flat/aflat7sharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/a-flat/aflat7sharp9flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-flat/aflat7sharp9flat13-piano.yml +65 -0
- data/db/seeds/chord_voicings/a-flat/aflat7sus2-guitar.yml +23 -0
- data/db/seeds/chord_voicings/a-flat/aflat7sus2-piano.yml +43 -0
- data/db/seeds/chord_voicings/a-flat/aflat7sus4-guitar.yml +35 -0
- data/db/seeds/chord_voicings/a-flat/aflat7sus4-piano.yml +43 -0
- data/db/seeds/chord_voicings/a-flat/aflat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-flat/aflat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/a-flat/aflat9flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-flat/aflat9flat13-piano.yml +65 -0
- data/db/seeds/chord_voicings/a-flat/aflat9sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-flat/aflat9sharp11-piano.yml +65 -0
- data/db/seeds/chord_voicings/a-flat/aflat9sus4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-flat/aflat9sus4-piano.yml +54 -0
- data/db/seeds/chord_voicings/a-flat/aflatadd11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-flat/aflatadd11-piano.yml +43 -0
- data/db/seeds/chord_voicings/a-flat/aflatadd13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-flat/aflatadd13-piano.yml +43 -0
- data/db/seeds/chord_voicings/a-flat/aflatadd2-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-flat/aflatadd2-piano.yml +43 -0
- data/db/seeds/chord_voicings/a-flat/aflatadd4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-flat/aflatadd4-piano.yml +43 -0
- data/db/seeds/chord_voicings/a-flat/aflatadd9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-flat/aflatadd9-piano.yml +43 -0
- data/db/seeds/chord_voicings/a-flat/aflataug-guitar.yml +23 -0
- data/db/seeds/chord_voicings/a-flat/aflataug-piano.yml +32 -0
- data/db/seeds/chord_voicings/a-flat/aflatdim-guitar.yml +23 -0
- data/db/seeds/chord_voicings/a-flat/aflatdim-piano.yml +32 -0
- data/db/seeds/chord_voicings/a-flat/aflatdim7-guitar.yml +23 -0
- data/db/seeds/chord_voicings/a-flat/aflatdim7-piano.yml +43 -0
- data/db/seeds/chord_voicings/a-flat/aflatm-guitar.yml +35 -0
- data/db/seeds/chord_voicings/a-flat/aflatm-maj7-guitar.yml +35 -0
- data/db/seeds/chord_voicings/a-flat/aflatm-maj7-piano.yml +43 -0
- data/db/seeds/chord_voicings/a-flat/aflatm-piano.yml +32 -0
- data/db/seeds/chord_voicings/a-flat/aflatm11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-flat/aflatm11-piano.yml +71 -0
- data/db/seeds/chord_voicings/a-flat/aflatm13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-flat/aflatm13-piano.yml +71 -0
- data/db/seeds/chord_voicings/a-flat/aflatm6-guitar.yml +35 -0
- data/db/seeds/chord_voicings/a-flat/aflatm6-piano.yml +43 -0
- data/db/seeds/chord_voicings/a-flat/aflatm7-guitar.yml +35 -0
- data/db/seeds/chord_voicings/a-flat/aflatm7-piano.yml +43 -0
- data/db/seeds/chord_voicings/a-flat/aflatm7add11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-flat/aflatm7add11-piano.yml +54 -0
- data/db/seeds/chord_voicings/a-flat/aflatm7flat5-guitar.yml +23 -0
- data/db/seeds/chord_voicings/a-flat/aflatm7flat5-piano.yml +43 -0
- data/db/seeds/chord_voicings/a-flat/aflatm9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-flat/aflatm9-piano.yml +54 -0
- data/db/seeds/chord_voicings/a-flat/aflatmadd11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-flat/aflatmadd11-piano.yml +43 -0
- data/db/seeds/chord_voicings/a-flat/aflatmadd13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-flat/aflatmadd13-piano.yml +43 -0
- data/db/seeds/chord_voicings/a-flat/aflatmadd2-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-flat/aflatmadd2-piano.yml +43 -0
- data/db/seeds/chord_voicings/a-flat/aflatmadd4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-flat/aflatmadd4-piano.yml +43 -0
- data/db/seeds/chord_voicings/a-flat/aflatmadd9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-flat/aflatmadd9-piano.yml +43 -0
- data/db/seeds/chord_voicings/a-flat/aflatmaj7-guitar.yml +59 -0
- data/db/seeds/chord_voicings/a-flat/aflatmaj7-piano.yml +43 -0
- data/db/seeds/chord_voicings/a-flat/aflatmaj7sharp5-guitar.yml +23 -0
- data/db/seeds/chord_voicings/a-flat/aflatmaj7sharp5-piano.yml +43 -0
- data/db/seeds/chord_voicings/a-flat/aflatsus2-guitar.yml +23 -0
- data/db/seeds/chord_voicings/a-flat/aflatsus2-piano.yml +32 -0
- data/db/seeds/chord_voicings/a-flat/aflatsus4-guitar.yml +35 -0
- data/db/seeds/chord_voicings/a-flat/aflatsus4-piano.yml +32 -0
- data/db/seeds/chord_voicings/a-sharp/asharp-guitar.yml +59 -0
- data/db/seeds/chord_voicings/a-sharp/asharp-piano.yml +32 -0
- data/db/seeds/chord_voicings/a-sharp/asharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-sharp/asharp11-piano.yml +71 -0
- data/db/seeds/chord_voicings/a-sharp/asharp13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-sharp/asharp13-piano.yml +71 -0
- data/db/seeds/chord_voicings/a-sharp/asharp13flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-sharp/asharp13flat9-piano.yml +71 -0
- data/db/seeds/chord_voicings/a-sharp/asharp13sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-sharp/asharp13sharp11-piano.yml +83 -0
- data/db/seeds/chord_voicings/a-sharp/asharp13sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-sharp/asharp13sharp9-piano.yml +71 -0
- data/db/seeds/chord_voicings/a-sharp/asharp13sus4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-sharp/asharp13sus4-piano.yml +71 -0
- data/db/seeds/chord_voicings/a-sharp/asharp5-guitar.yml +23 -0
- data/db/seeds/chord_voicings/a-sharp/asharp5-piano.yml +21 -0
- data/db/seeds/chord_voicings/a-sharp/asharp6-guitar.yml +59 -0
- data/db/seeds/chord_voicings/a-sharp/asharp6-piano.yml +43 -0
- data/db/seeds/chord_voicings/a-sharp/asharp7-guitar.yml +59 -0
- data/db/seeds/chord_voicings/a-sharp/asharp7-piano.yml +43 -0
- data/db/seeds/chord_voicings/a-sharp/asharp7flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-sharp/asharp7flat13-piano.yml +54 -0
- data/db/seeds/chord_voicings/a-sharp/asharp7flat5-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-sharp/asharp7flat5-piano.yml +43 -0
- data/db/seeds/chord_voicings/a-sharp/asharp7flat5flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-sharp/asharp7flat5flat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/a-sharp/asharp7flat5sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-sharp/asharp7flat5sharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/a-sharp/asharp7flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-sharp/asharp7flat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/a-sharp/asharp7flat9flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-sharp/asharp7flat9flat13-piano.yml +65 -0
- data/db/seeds/chord_voicings/a-sharp/asharp7flat9sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-sharp/asharp7flat9sharp11-piano.yml +65 -0
- data/db/seeds/chord_voicings/a-sharp/asharp7sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-sharp/asharp7sharp11-piano.yml +54 -0
- data/db/seeds/chord_voicings/a-sharp/asharp7sharp5-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-sharp/asharp7sharp5-piano.yml +43 -0
- data/db/seeds/chord_voicings/a-sharp/asharp7sharp5flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-sharp/asharp7sharp5flat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/a-sharp/asharp7sharp5sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-sharp/asharp7sharp5sharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/a-sharp/asharp7sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-sharp/asharp7sharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/a-sharp/asharp7sharp9flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-sharp/asharp7sharp9flat13-piano.yml +65 -0
- data/db/seeds/chord_voicings/a-sharp/asharp7sus2-guitar.yml +23 -0
- data/db/seeds/chord_voicings/a-sharp/asharp7sus2-piano.yml +43 -0
- data/db/seeds/chord_voicings/a-sharp/asharp7sus4-guitar.yml +35 -0
- data/db/seeds/chord_voicings/a-sharp/asharp7sus4-piano.yml +43 -0
- data/db/seeds/chord_voicings/a-sharp/asharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-sharp/asharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/a-sharp/asharp9flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-sharp/asharp9flat13-piano.yml +65 -0
- data/db/seeds/chord_voicings/a-sharp/asharp9sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-sharp/asharp9sharp11-piano.yml +65 -0
- data/db/seeds/chord_voicings/a-sharp/asharp9sus4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-sharp/asharp9sus4-piano.yml +54 -0
- data/db/seeds/chord_voicings/a-sharp/asharpadd11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-sharp/asharpadd11-piano.yml +43 -0
- data/db/seeds/chord_voicings/a-sharp/asharpadd13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-sharp/asharpadd13-piano.yml +43 -0
- data/db/seeds/chord_voicings/a-sharp/asharpadd2-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-sharp/asharpadd2-piano.yml +43 -0
- data/db/seeds/chord_voicings/a-sharp/asharpadd4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-sharp/asharpadd4-piano.yml +43 -0
- data/db/seeds/chord_voicings/a-sharp/asharpadd9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-sharp/asharpadd9-piano.yml +43 -0
- data/db/seeds/chord_voicings/a-sharp/asharpaug-guitar.yml +23 -0
- data/db/seeds/chord_voicings/a-sharp/asharpaug-piano.yml +32 -0
- data/db/seeds/chord_voicings/a-sharp/asharpdim-guitar.yml +23 -0
- data/db/seeds/chord_voicings/a-sharp/asharpdim-piano.yml +32 -0
- data/db/seeds/chord_voicings/a-sharp/asharpdim7-guitar.yml +47 -0
- data/db/seeds/chord_voicings/a-sharp/asharpdim7-piano.yml +43 -0
- data/db/seeds/chord_voicings/a-sharp/asharpm-guitar.yml +35 -0
- data/db/seeds/chord_voicings/a-sharp/asharpm-maj7-guitar.yml +35 -0
- data/db/seeds/chord_voicings/a-sharp/asharpm-maj7-piano.yml +43 -0
- data/db/seeds/chord_voicings/a-sharp/asharpm-piano.yml +32 -0
- data/db/seeds/chord_voicings/a-sharp/asharpm11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-sharp/asharpm11-piano.yml +71 -0
- data/db/seeds/chord_voicings/a-sharp/asharpm13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-sharp/asharpm13-piano.yml +71 -0
- data/db/seeds/chord_voicings/a-sharp/asharpm6-guitar.yml +35 -0
- data/db/seeds/chord_voicings/a-sharp/asharpm6-piano.yml +43 -0
- data/db/seeds/chord_voicings/a-sharp/asharpm7-guitar.yml +35 -0
- data/db/seeds/chord_voicings/a-sharp/asharpm7-piano.yml +43 -0
- data/db/seeds/chord_voicings/a-sharp/asharpm7add11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-sharp/asharpm7add11-piano.yml +54 -0
- data/db/seeds/chord_voicings/a-sharp/asharpm7flat5-guitar.yml +23 -0
- data/db/seeds/chord_voicings/a-sharp/asharpm7flat5-piano.yml +43 -0
- data/db/seeds/chord_voicings/a-sharp/asharpm9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-sharp/asharpm9-piano.yml +54 -0
- data/db/seeds/chord_voicings/a-sharp/asharpmadd11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-sharp/asharpmadd11-piano.yml +43 -0
- data/db/seeds/chord_voicings/a-sharp/asharpmadd13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-sharp/asharpmadd13-piano.yml +43 -0
- data/db/seeds/chord_voicings/a-sharp/asharpmadd2-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-sharp/asharpmadd2-piano.yml +43 -0
- data/db/seeds/chord_voicings/a-sharp/asharpmadd4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-sharp/asharpmadd4-piano.yml +43 -0
- data/db/seeds/chord_voicings/a-sharp/asharpmadd9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/a-sharp/asharpmadd9-piano.yml +43 -0
- data/db/seeds/chord_voicings/a-sharp/asharpmaj7-guitar.yml +59 -0
- data/db/seeds/chord_voicings/a-sharp/asharpmaj7-piano.yml +43 -0
- data/db/seeds/chord_voicings/a-sharp/asharpmaj7sharp5-guitar.yml +23 -0
- data/db/seeds/chord_voicings/a-sharp/asharpmaj7sharp5-piano.yml +43 -0
- data/db/seeds/chord_voicings/a-sharp/asharpsus2-guitar.yml +23 -0
- data/db/seeds/chord_voicings/a-sharp/asharpsus2-piano.yml +32 -0
- data/db/seeds/chord_voicings/a-sharp/asharpsus4-guitar.yml +35 -0
- data/db/seeds/chord_voicings/a-sharp/asharpsus4-piano.yml +32 -0
- data/db/seeds/chord_voicings/b/b-guitar.yml +59 -0
- data/db/seeds/chord_voicings/b/b-piano.yml +32 -0
- data/db/seeds/chord_voicings/b/b11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b/b11-piano.yml +71 -0
- data/db/seeds/chord_voicings/b/b13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b/b13-piano.yml +71 -0
- data/db/seeds/chord_voicings/b/b13flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b/b13flat9-piano.yml +71 -0
- data/db/seeds/chord_voicings/b/b13sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b/b13sharp11-piano.yml +83 -0
- data/db/seeds/chord_voicings/b/b13sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b/b13sharp9-piano.yml +71 -0
- data/db/seeds/chord_voicings/b/b13sus4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b/b13sus4-piano.yml +71 -0
- data/db/seeds/chord_voicings/b/b5-guitar.yml +23 -0
- data/db/seeds/chord_voicings/b/b5-piano.yml +21 -0
- data/db/seeds/chord_voicings/b/b6-guitar.yml +59 -0
- data/db/seeds/chord_voicings/b/b6-piano.yml +43 -0
- data/db/seeds/chord_voicings/b/b7-guitar.yml +59 -0
- data/db/seeds/chord_voicings/b/b7-piano.yml +43 -0
- data/db/seeds/chord_voicings/b/b7flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b/b7flat13-piano.yml +54 -0
- data/db/seeds/chord_voicings/b/b7flat5-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b/b7flat5-piano.yml +43 -0
- data/db/seeds/chord_voicings/b/b7flat5flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b/b7flat5flat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/b/b7flat5sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b/b7flat5sharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/b/b7flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b/b7flat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/b/b7flat9flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b/b7flat9flat13-piano.yml +65 -0
- data/db/seeds/chord_voicings/b/b7flat9sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b/b7flat9sharp11-piano.yml +65 -0
- data/db/seeds/chord_voicings/b/b7sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b/b7sharp11-piano.yml +54 -0
- data/db/seeds/chord_voicings/b/b7sharp5-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b/b7sharp5-piano.yml +43 -0
- data/db/seeds/chord_voicings/b/b7sharp5flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b/b7sharp5flat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/b/b7sharp5sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b/b7sharp5sharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/b/b7sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b/b7sharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/b/b7sharp9flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b/b7sharp9flat13-piano.yml +65 -0
- data/db/seeds/chord_voicings/b/b7sus2-guitar.yml +23 -0
- data/db/seeds/chord_voicings/b/b7sus2-piano.yml +43 -0
- data/db/seeds/chord_voicings/b/b7sus4-guitar.yml +35 -0
- data/db/seeds/chord_voicings/b/b7sus4-piano.yml +43 -0
- data/db/seeds/chord_voicings/b/b9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b/b9-piano.yml +54 -0
- data/db/seeds/chord_voicings/b/b9flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b/b9flat13-piano.yml +65 -0
- data/db/seeds/chord_voicings/b/b9sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b/b9sharp11-piano.yml +65 -0
- data/db/seeds/chord_voicings/b/b9sus4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b/b9sus4-piano.yml +54 -0
- data/db/seeds/chord_voicings/b/badd11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b/badd11-piano.yml +43 -0
- data/db/seeds/chord_voicings/b/badd13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b/badd13-piano.yml +43 -0
- data/db/seeds/chord_voicings/b/badd2-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b/badd2-piano.yml +43 -0
- data/db/seeds/chord_voicings/b/badd4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b/badd4-piano.yml +43 -0
- data/db/seeds/chord_voicings/b/badd9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b/badd9-piano.yml +43 -0
- data/db/seeds/chord_voicings/b/baug-guitar.yml +23 -0
- data/db/seeds/chord_voicings/b/baug-piano.yml +32 -0
- data/db/seeds/chord_voicings/b/bdim-guitar.yml +23 -0
- data/db/seeds/chord_voicings/b/bdim-piano.yml +32 -0
- data/db/seeds/chord_voicings/b/bdim7-guitar.yml +23 -0
- data/db/seeds/chord_voicings/b/bdim7-piano.yml +43 -0
- data/db/seeds/chord_voicings/b/bm-guitar.yml +35 -0
- data/db/seeds/chord_voicings/b/bm-maj7-guitar.yml +35 -0
- data/db/seeds/chord_voicings/b/bm-maj7-piano.yml +43 -0
- data/db/seeds/chord_voicings/b/bm-piano.yml +32 -0
- data/db/seeds/chord_voicings/b/bm11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b/bm11-piano.yml +71 -0
- data/db/seeds/chord_voicings/b/bm13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b/bm13-piano.yml +71 -0
- data/db/seeds/chord_voicings/b/bm6-guitar.yml +35 -0
- data/db/seeds/chord_voicings/b/bm6-piano.yml +43 -0
- data/db/seeds/chord_voicings/b/bm7-guitar.yml +35 -0
- data/db/seeds/chord_voicings/b/bm7-piano.yml +43 -0
- data/db/seeds/chord_voicings/b/bm7add11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b/bm7add11-piano.yml +54 -0
- data/db/seeds/chord_voicings/b/bm7flat5-guitar.yml +23 -0
- data/db/seeds/chord_voicings/b/bm7flat5-piano.yml +43 -0
- data/db/seeds/chord_voicings/b/bm9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b/bm9-piano.yml +54 -0
- data/db/seeds/chord_voicings/b/bmadd11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b/bmadd11-piano.yml +43 -0
- data/db/seeds/chord_voicings/b/bmadd13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b/bmadd13-piano.yml +43 -0
- data/db/seeds/chord_voicings/b/bmadd2-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b/bmadd2-piano.yml +43 -0
- data/db/seeds/chord_voicings/b/bmadd4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b/bmadd4-piano.yml +43 -0
- data/db/seeds/chord_voicings/b/bmadd9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b/bmadd9-piano.yml +43 -0
- data/db/seeds/chord_voicings/b/bmaj7-guitar.yml +59 -0
- data/db/seeds/chord_voicings/b/bmaj7-piano.yml +43 -0
- data/db/seeds/chord_voicings/b/bmaj7sharp5-guitar.yml +23 -0
- data/db/seeds/chord_voicings/b/bmaj7sharp5-piano.yml +43 -0
- data/db/seeds/chord_voicings/b/bsus2-guitar.yml +23 -0
- data/db/seeds/chord_voicings/b/bsus2-piano.yml +32 -0
- data/db/seeds/chord_voicings/b/bsus4-guitar.yml +35 -0
- data/db/seeds/chord_voicings/b/bsus4-piano.yml +32 -0
- data/db/seeds/chord_voicings/b-flat/bflat-guitar.yml +59 -0
- data/db/seeds/chord_voicings/b-flat/bflat-piano.yml +32 -0
- data/db/seeds/chord_voicings/b-flat/bflat11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b-flat/bflat11-piano.yml +71 -0
- data/db/seeds/chord_voicings/b-flat/bflat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b-flat/bflat13-piano.yml +71 -0
- data/db/seeds/chord_voicings/b-flat/bflat13flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b-flat/bflat13flat9-piano.yml +71 -0
- data/db/seeds/chord_voicings/b-flat/bflat13sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b-flat/bflat13sharp11-piano.yml +83 -0
- data/db/seeds/chord_voicings/b-flat/bflat13sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b-flat/bflat13sharp9-piano.yml +71 -0
- data/db/seeds/chord_voicings/b-flat/bflat13sus4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b-flat/bflat13sus4-piano.yml +71 -0
- data/db/seeds/chord_voicings/b-flat/bflat5-guitar.yml +23 -0
- data/db/seeds/chord_voicings/b-flat/bflat5-piano.yml +21 -0
- data/db/seeds/chord_voicings/b-flat/bflat6-guitar.yml +59 -0
- data/db/seeds/chord_voicings/b-flat/bflat6-piano.yml +43 -0
- data/db/seeds/chord_voicings/b-flat/bflat7-guitar.yml +59 -0
- data/db/seeds/chord_voicings/b-flat/bflat7-piano.yml +43 -0
- data/db/seeds/chord_voicings/b-flat/bflat7flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b-flat/bflat7flat13-piano.yml +54 -0
- data/db/seeds/chord_voicings/b-flat/bflat7flat5-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b-flat/bflat7flat5-piano.yml +43 -0
- data/db/seeds/chord_voicings/b-flat/bflat7flat5flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b-flat/bflat7flat5flat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/b-flat/bflat7flat5sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b-flat/bflat7flat5sharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/b-flat/bflat7flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b-flat/bflat7flat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/b-flat/bflat7flat9flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b-flat/bflat7flat9flat13-piano.yml +65 -0
- data/db/seeds/chord_voicings/b-flat/bflat7flat9sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b-flat/bflat7flat9sharp11-piano.yml +65 -0
- data/db/seeds/chord_voicings/b-flat/bflat7sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b-flat/bflat7sharp11-piano.yml +54 -0
- data/db/seeds/chord_voicings/b-flat/bflat7sharp5-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b-flat/bflat7sharp5-piano.yml +43 -0
- data/db/seeds/chord_voicings/b-flat/bflat7sharp5flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b-flat/bflat7sharp5flat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/b-flat/bflat7sharp5sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b-flat/bflat7sharp5sharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/b-flat/bflat7sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b-flat/bflat7sharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/b-flat/bflat7sharp9flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b-flat/bflat7sharp9flat13-piano.yml +65 -0
- data/db/seeds/chord_voicings/b-flat/bflat7sus2-guitar.yml +23 -0
- data/db/seeds/chord_voicings/b-flat/bflat7sus2-piano.yml +43 -0
- data/db/seeds/chord_voicings/b-flat/bflat7sus4-guitar.yml +35 -0
- data/db/seeds/chord_voicings/b-flat/bflat7sus4-piano.yml +43 -0
- data/db/seeds/chord_voicings/b-flat/bflat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b-flat/bflat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/b-flat/bflat9flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b-flat/bflat9flat13-piano.yml +65 -0
- data/db/seeds/chord_voicings/b-flat/bflat9sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b-flat/bflat9sharp11-piano.yml +65 -0
- data/db/seeds/chord_voicings/b-flat/bflat9sus4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b-flat/bflat9sus4-piano.yml +54 -0
- data/db/seeds/chord_voicings/b-flat/bflatadd11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b-flat/bflatadd11-piano.yml +43 -0
- data/db/seeds/chord_voicings/b-flat/bflatadd13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b-flat/bflatadd13-piano.yml +43 -0
- data/db/seeds/chord_voicings/b-flat/bflatadd2-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b-flat/bflatadd2-piano.yml +43 -0
- data/db/seeds/chord_voicings/b-flat/bflatadd4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b-flat/bflatadd4-piano.yml +43 -0
- data/db/seeds/chord_voicings/b-flat/bflatadd9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b-flat/bflatadd9-piano.yml +43 -0
- data/db/seeds/chord_voicings/b-flat/bflataug-guitar.yml +23 -0
- data/db/seeds/chord_voicings/b-flat/bflataug-piano.yml +32 -0
- data/db/seeds/chord_voicings/b-flat/bflatdim-guitar.yml +23 -0
- data/db/seeds/chord_voicings/b-flat/bflatdim-piano.yml +32 -0
- data/db/seeds/chord_voicings/b-flat/bflatdim7-guitar.yml +47 -0
- data/db/seeds/chord_voicings/b-flat/bflatdim7-piano.yml +43 -0
- data/db/seeds/chord_voicings/b-flat/bflatm-guitar.yml +35 -0
- data/db/seeds/chord_voicings/b-flat/bflatm-maj7-guitar.yml +35 -0
- data/db/seeds/chord_voicings/b-flat/bflatm-maj7-piano.yml +43 -0
- data/db/seeds/chord_voicings/b-flat/bflatm-piano.yml +32 -0
- data/db/seeds/chord_voicings/b-flat/bflatm11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b-flat/bflatm11-piano.yml +71 -0
- data/db/seeds/chord_voicings/b-flat/bflatm13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b-flat/bflatm13-piano.yml +71 -0
- data/db/seeds/chord_voicings/b-flat/bflatm6-guitar.yml +35 -0
- data/db/seeds/chord_voicings/b-flat/bflatm6-piano.yml +43 -0
- data/db/seeds/chord_voicings/b-flat/bflatm7-guitar.yml +35 -0
- data/db/seeds/chord_voicings/b-flat/bflatm7-piano.yml +43 -0
- data/db/seeds/chord_voicings/b-flat/bflatm7add11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b-flat/bflatm7add11-piano.yml +54 -0
- data/db/seeds/chord_voicings/b-flat/bflatm7flat5-guitar.yml +23 -0
- data/db/seeds/chord_voicings/b-flat/bflatm7flat5-piano.yml +43 -0
- data/db/seeds/chord_voicings/b-flat/bflatm9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b-flat/bflatm9-piano.yml +54 -0
- data/db/seeds/chord_voicings/b-flat/bflatmadd11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b-flat/bflatmadd11-piano.yml +43 -0
- data/db/seeds/chord_voicings/b-flat/bflatmadd13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b-flat/bflatmadd13-piano.yml +43 -0
- data/db/seeds/chord_voicings/b-flat/bflatmadd2-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b-flat/bflatmadd2-piano.yml +43 -0
- data/db/seeds/chord_voicings/b-flat/bflatmadd4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b-flat/bflatmadd4-piano.yml +43 -0
- data/db/seeds/chord_voicings/b-flat/bflatmadd9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/b-flat/bflatmadd9-piano.yml +43 -0
- data/db/seeds/chord_voicings/b-flat/bflatmaj7-guitar.yml +59 -0
- data/db/seeds/chord_voicings/b-flat/bflatmaj7-piano.yml +43 -0
- data/db/seeds/chord_voicings/b-flat/bflatmaj7sharp5-guitar.yml +23 -0
- data/db/seeds/chord_voicings/b-flat/bflatmaj7sharp5-piano.yml +43 -0
- data/db/seeds/chord_voicings/b-flat/bflatsus2-guitar.yml +23 -0
- data/db/seeds/chord_voicings/b-flat/bflatsus2-piano.yml +32 -0
- data/db/seeds/chord_voicings/b-flat/bflatsus4-guitar.yml +35 -0
- data/db/seeds/chord_voicings/b-flat/bflatsus4-piano.yml +32 -0
- data/db/seeds/chord_voicings/c/c-guitar.yml +83 -0
- data/db/seeds/chord_voicings/c/c-piano.yml +32 -0
- data/db/seeds/chord_voicings/c/c11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c/c11-piano.yml +71 -0
- data/db/seeds/chord_voicings/c/c13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c/c13-piano.yml +71 -0
- data/db/seeds/chord_voicings/c/c13flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c/c13flat9-piano.yml +71 -0
- data/db/seeds/chord_voicings/c/c13sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c/c13sharp11-piano.yml +83 -0
- data/db/seeds/chord_voicings/c/c13sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c/c13sharp9-piano.yml +71 -0
- data/db/seeds/chord_voicings/c/c13sus4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c/c13sus4-piano.yml +71 -0
- data/db/seeds/chord_voicings/c/c5-guitar.yml +23 -0
- data/db/seeds/chord_voicings/c/c5-piano.yml +21 -0
- data/db/seeds/chord_voicings/c/c6-guitar.yml +83 -0
- data/db/seeds/chord_voicings/c/c6-piano.yml +43 -0
- data/db/seeds/chord_voicings/c/c7-guitar.yml +83 -0
- data/db/seeds/chord_voicings/c/c7-piano.yml +43 -0
- data/db/seeds/chord_voicings/c/c7flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c/c7flat13-piano.yml +54 -0
- data/db/seeds/chord_voicings/c/c7flat5-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c/c7flat5-piano.yml +43 -0
- data/db/seeds/chord_voicings/c/c7flat5flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c/c7flat5flat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/c/c7flat5sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c/c7flat5sharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/c/c7flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c/c7flat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/c/c7flat9flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c/c7flat9flat13-piano.yml +65 -0
- data/db/seeds/chord_voicings/c/c7flat9sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c/c7flat9sharp11-piano.yml +65 -0
- data/db/seeds/chord_voicings/c/c7sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c/c7sharp11-piano.yml +54 -0
- data/db/seeds/chord_voicings/c/c7sharp5-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c/c7sharp5-piano.yml +43 -0
- data/db/seeds/chord_voicings/c/c7sharp5flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c/c7sharp5flat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/c/c7sharp5sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c/c7sharp5sharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/c/c7sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c/c7sharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/c/c7sharp9flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c/c7sharp9flat13-piano.yml +65 -0
- data/db/seeds/chord_voicings/c/c7sus2-guitar.yml +23 -0
- data/db/seeds/chord_voicings/c/c7sus2-piano.yml +43 -0
- data/db/seeds/chord_voicings/c/c7sus4-guitar.yml +35 -0
- data/db/seeds/chord_voicings/c/c7sus4-piano.yml +43 -0
- data/db/seeds/chord_voicings/c/c9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c/c9-piano.yml +54 -0
- data/db/seeds/chord_voicings/c/c9flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c/c9flat13-piano.yml +65 -0
- data/db/seeds/chord_voicings/c/c9sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c/c9sharp11-piano.yml +65 -0
- data/db/seeds/chord_voicings/c/c9sus4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c/c9sus4-piano.yml +54 -0
- data/db/seeds/chord_voicings/c/cadd11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c/cadd11-piano.yml +43 -0
- data/db/seeds/chord_voicings/c/cadd13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c/cadd13-piano.yml +43 -0
- data/db/seeds/chord_voicings/c/cadd2-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c/cadd2-piano.yml +43 -0
- data/db/seeds/chord_voicings/c/cadd4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c/cadd4-piano.yml +43 -0
- data/db/seeds/chord_voicings/c/cadd9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c/cadd9-piano.yml +43 -0
- data/db/seeds/chord_voicings/c/caug-guitar.yml +23 -0
- data/db/seeds/chord_voicings/c/caug-piano.yml +32 -0
- data/db/seeds/chord_voicings/c/cdim-guitar.yml +23 -0
- data/db/seeds/chord_voicings/c/cdim-piano.yml +32 -0
- data/db/seeds/chord_voicings/c/cdim7-guitar.yml +23 -0
- data/db/seeds/chord_voicings/c/cdim7-piano.yml +43 -0
- data/db/seeds/chord_voicings/c/cm-guitar.yml +35 -0
- data/db/seeds/chord_voicings/c/cm-maj7-guitar.yml +35 -0
- data/db/seeds/chord_voicings/c/cm-maj7-piano.yml +43 -0
- data/db/seeds/chord_voicings/c/cm-piano.yml +32 -0
- data/db/seeds/chord_voicings/c/cm11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c/cm11-piano.yml +71 -0
- data/db/seeds/chord_voicings/c/cm13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c/cm13-piano.yml +71 -0
- data/db/seeds/chord_voicings/c/cm6-guitar.yml +35 -0
- data/db/seeds/chord_voicings/c/cm6-piano.yml +43 -0
- data/db/seeds/chord_voicings/c/cm7-guitar.yml +35 -0
- data/db/seeds/chord_voicings/c/cm7-piano.yml +43 -0
- data/db/seeds/chord_voicings/c/cm7add11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c/cm7add11-piano.yml +54 -0
- data/db/seeds/chord_voicings/c/cm7flat5-guitar.yml +23 -0
- data/db/seeds/chord_voicings/c/cm7flat5-piano.yml +43 -0
- data/db/seeds/chord_voicings/c/cm9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c/cm9-piano.yml +54 -0
- data/db/seeds/chord_voicings/c/cmadd11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c/cmadd11-piano.yml +43 -0
- data/db/seeds/chord_voicings/c/cmadd13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c/cmadd13-piano.yml +43 -0
- data/db/seeds/chord_voicings/c/cmadd2-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c/cmadd2-piano.yml +43 -0
- data/db/seeds/chord_voicings/c/cmadd4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c/cmadd4-piano.yml +43 -0
- data/db/seeds/chord_voicings/c/cmadd9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c/cmadd9-piano.yml +43 -0
- data/db/seeds/chord_voicings/c/cmaj7-guitar.yml +83 -0
- data/db/seeds/chord_voicings/c/cmaj7-piano.yml +43 -0
- data/db/seeds/chord_voicings/c/cmaj7sharp5-guitar.yml +23 -0
- data/db/seeds/chord_voicings/c/cmaj7sharp5-piano.yml +43 -0
- data/db/seeds/chord_voicings/c/csus2-guitar.yml +23 -0
- data/db/seeds/chord_voicings/c/csus2-piano.yml +32 -0
- data/db/seeds/chord_voicings/c/csus4-guitar.yml +35 -0
- data/db/seeds/chord_voicings/c/csus4-piano.yml +32 -0
- data/db/seeds/chord_voicings/c-sharp/csharp-guitar.yml +59 -0
- data/db/seeds/chord_voicings/c-sharp/csharp-piano.yml +32 -0
- data/db/seeds/chord_voicings/c-sharp/csharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c-sharp/csharp11-piano.yml +71 -0
- data/db/seeds/chord_voicings/c-sharp/csharp13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c-sharp/csharp13-piano.yml +71 -0
- data/db/seeds/chord_voicings/c-sharp/csharp13flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c-sharp/csharp13flat9-piano.yml +71 -0
- data/db/seeds/chord_voicings/c-sharp/csharp13sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c-sharp/csharp13sharp11-piano.yml +83 -0
- data/db/seeds/chord_voicings/c-sharp/csharp13sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c-sharp/csharp13sharp9-piano.yml +71 -0
- data/db/seeds/chord_voicings/c-sharp/csharp13sus4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c-sharp/csharp13sus4-piano.yml +71 -0
- data/db/seeds/chord_voicings/c-sharp/csharp5-guitar.yml +23 -0
- data/db/seeds/chord_voicings/c-sharp/csharp5-piano.yml +21 -0
- data/db/seeds/chord_voicings/c-sharp/csharp6-guitar.yml +59 -0
- data/db/seeds/chord_voicings/c-sharp/csharp6-piano.yml +43 -0
- data/db/seeds/chord_voicings/c-sharp/csharp7-guitar.yml +59 -0
- data/db/seeds/chord_voicings/c-sharp/csharp7-piano.yml +43 -0
- data/db/seeds/chord_voicings/c-sharp/csharp7flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c-sharp/csharp7flat13-piano.yml +54 -0
- data/db/seeds/chord_voicings/c-sharp/csharp7flat5-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c-sharp/csharp7flat5-piano.yml +43 -0
- data/db/seeds/chord_voicings/c-sharp/csharp7flat5flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c-sharp/csharp7flat5flat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/c-sharp/csharp7flat5sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c-sharp/csharp7flat5sharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/c-sharp/csharp7flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c-sharp/csharp7flat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/c-sharp/csharp7flat9flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c-sharp/csharp7flat9flat13-piano.yml +65 -0
- data/db/seeds/chord_voicings/c-sharp/csharp7flat9sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c-sharp/csharp7flat9sharp11-piano.yml +65 -0
- data/db/seeds/chord_voicings/c-sharp/csharp7sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c-sharp/csharp7sharp11-piano.yml +54 -0
- data/db/seeds/chord_voicings/c-sharp/csharp7sharp5-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c-sharp/csharp7sharp5-piano.yml +43 -0
- data/db/seeds/chord_voicings/c-sharp/csharp7sharp5flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c-sharp/csharp7sharp5flat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/c-sharp/csharp7sharp5sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c-sharp/csharp7sharp5sharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/c-sharp/csharp7sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c-sharp/csharp7sharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/c-sharp/csharp7sharp9flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c-sharp/csharp7sharp9flat13-piano.yml +65 -0
- data/db/seeds/chord_voicings/c-sharp/csharp7sus2-guitar.yml +23 -0
- data/db/seeds/chord_voicings/c-sharp/csharp7sus2-piano.yml +43 -0
- data/db/seeds/chord_voicings/c-sharp/csharp7sus4-guitar.yml +35 -0
- data/db/seeds/chord_voicings/c-sharp/csharp7sus4-piano.yml +43 -0
- data/db/seeds/chord_voicings/c-sharp/csharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c-sharp/csharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/c-sharp/csharp9flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c-sharp/csharp9flat13-piano.yml +65 -0
- data/db/seeds/chord_voicings/c-sharp/csharp9sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c-sharp/csharp9sharp11-piano.yml +65 -0
- data/db/seeds/chord_voicings/c-sharp/csharp9sus4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c-sharp/csharp9sus4-piano.yml +54 -0
- data/db/seeds/chord_voicings/c-sharp/csharpadd11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c-sharp/csharpadd11-piano.yml +43 -0
- data/db/seeds/chord_voicings/c-sharp/csharpadd13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c-sharp/csharpadd13-piano.yml +43 -0
- data/db/seeds/chord_voicings/c-sharp/csharpadd2-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c-sharp/csharpadd2-piano.yml +43 -0
- data/db/seeds/chord_voicings/c-sharp/csharpadd4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c-sharp/csharpadd4-piano.yml +43 -0
- data/db/seeds/chord_voicings/c-sharp/csharpadd9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c-sharp/csharpadd9-piano.yml +43 -0
- data/db/seeds/chord_voicings/c-sharp/csharpaug-guitar.yml +23 -0
- data/db/seeds/chord_voicings/c-sharp/csharpaug-piano.yml +32 -0
- data/db/seeds/chord_voicings/c-sharp/csharpdim-guitar.yml +23 -0
- data/db/seeds/chord_voicings/c-sharp/csharpdim-piano.yml +32 -0
- data/db/seeds/chord_voicings/c-sharp/csharpdim7-guitar.yml +23 -0
- data/db/seeds/chord_voicings/c-sharp/csharpdim7-piano.yml +43 -0
- data/db/seeds/chord_voicings/c-sharp/csharpm-guitar.yml +35 -0
- data/db/seeds/chord_voicings/c-sharp/csharpm-maj7-guitar.yml +35 -0
- data/db/seeds/chord_voicings/c-sharp/csharpm-maj7-piano.yml +43 -0
- data/db/seeds/chord_voicings/c-sharp/csharpm-piano.yml +32 -0
- data/db/seeds/chord_voicings/c-sharp/csharpm11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c-sharp/csharpm11-piano.yml +71 -0
- data/db/seeds/chord_voicings/c-sharp/csharpm13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c-sharp/csharpm13-piano.yml +71 -0
- data/db/seeds/chord_voicings/c-sharp/csharpm6-guitar.yml +35 -0
- data/db/seeds/chord_voicings/c-sharp/csharpm6-piano.yml +43 -0
- data/db/seeds/chord_voicings/c-sharp/csharpm7-guitar.yml +35 -0
- data/db/seeds/chord_voicings/c-sharp/csharpm7-piano.yml +43 -0
- data/db/seeds/chord_voicings/c-sharp/csharpm7add11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c-sharp/csharpm7add11-piano.yml +54 -0
- data/db/seeds/chord_voicings/c-sharp/csharpm7flat5-guitar.yml +23 -0
- data/db/seeds/chord_voicings/c-sharp/csharpm7flat5-piano.yml +43 -0
- data/db/seeds/chord_voicings/c-sharp/csharpm9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c-sharp/csharpm9-piano.yml +54 -0
- data/db/seeds/chord_voicings/c-sharp/csharpmadd11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c-sharp/csharpmadd11-piano.yml +43 -0
- data/db/seeds/chord_voicings/c-sharp/csharpmadd13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c-sharp/csharpmadd13-piano.yml +43 -0
- data/db/seeds/chord_voicings/c-sharp/csharpmadd2-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c-sharp/csharpmadd2-piano.yml +43 -0
- data/db/seeds/chord_voicings/c-sharp/csharpmadd4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c-sharp/csharpmadd4-piano.yml +43 -0
- data/db/seeds/chord_voicings/c-sharp/csharpmadd9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/c-sharp/csharpmadd9-piano.yml +43 -0
- data/db/seeds/chord_voicings/c-sharp/csharpmaj7-guitar.yml +59 -0
- data/db/seeds/chord_voicings/c-sharp/csharpmaj7-piano.yml +43 -0
- data/db/seeds/chord_voicings/c-sharp/csharpmaj7sharp5-guitar.yml +23 -0
- data/db/seeds/chord_voicings/c-sharp/csharpmaj7sharp5-piano.yml +43 -0
- data/db/seeds/chord_voicings/c-sharp/csharpsus2-guitar.yml +23 -0
- data/db/seeds/chord_voicings/c-sharp/csharpsus2-piano.yml +32 -0
- data/db/seeds/chord_voicings/c-sharp/csharpsus4-guitar.yml +35 -0
- data/db/seeds/chord_voicings/c-sharp/csharpsus4-piano.yml +32 -0
- data/db/seeds/chord_voicings/d/d-guitar.yml +83 -0
- data/db/seeds/chord_voicings/d/d-piano.yml +32 -0
- data/db/seeds/chord_voicings/d/d11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d/d11-piano.yml +71 -0
- data/db/seeds/chord_voicings/d/d13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d/d13-piano.yml +71 -0
- data/db/seeds/chord_voicings/d/d13flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d/d13flat9-piano.yml +71 -0
- data/db/seeds/chord_voicings/d/d13sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d/d13sharp11-piano.yml +83 -0
- data/db/seeds/chord_voicings/d/d13sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d/d13sharp9-piano.yml +71 -0
- data/db/seeds/chord_voicings/d/d13sus4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d/d13sus4-piano.yml +71 -0
- data/db/seeds/chord_voicings/d/d5-guitar.yml +23 -0
- data/db/seeds/chord_voicings/d/d5-piano.yml +21 -0
- data/db/seeds/chord_voicings/d/d6-guitar.yml +95 -0
- data/db/seeds/chord_voicings/d/d6-piano.yml +43 -0
- data/db/seeds/chord_voicings/d/d7-guitar.yml +95 -0
- data/db/seeds/chord_voicings/d/d7-piano.yml +43 -0
- data/db/seeds/chord_voicings/d/d7flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d/d7flat13-piano.yml +54 -0
- data/db/seeds/chord_voicings/d/d7flat5-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d/d7flat5-piano.yml +43 -0
- data/db/seeds/chord_voicings/d/d7flat5flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d/d7flat5flat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/d/d7flat5sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d/d7flat5sharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/d/d7flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d/d7flat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/d/d7flat9flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d/d7flat9flat13-piano.yml +65 -0
- data/db/seeds/chord_voicings/d/d7flat9sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d/d7flat9sharp11-piano.yml +65 -0
- data/db/seeds/chord_voicings/d/d7sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d/d7sharp11-piano.yml +54 -0
- data/db/seeds/chord_voicings/d/d7sharp5-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d/d7sharp5-piano.yml +43 -0
- data/db/seeds/chord_voicings/d/d7sharp5flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d/d7sharp5flat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/d/d7sharp5sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d/d7sharp5sharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/d/d7sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d/d7sharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/d/d7sharp9flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d/d7sharp9flat13-piano.yml +65 -0
- data/db/seeds/chord_voicings/d/d7sus2-guitar.yml +59 -0
- data/db/seeds/chord_voicings/d/d7sus2-piano.yml +43 -0
- data/db/seeds/chord_voicings/d/d7sus4-guitar.yml +71 -0
- data/db/seeds/chord_voicings/d/d7sus4-piano.yml +43 -0
- data/db/seeds/chord_voicings/d/d9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d/d9-piano.yml +54 -0
- data/db/seeds/chord_voicings/d/d9flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d/d9flat13-piano.yml +65 -0
- data/db/seeds/chord_voicings/d/d9sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d/d9sharp11-piano.yml +65 -0
- data/db/seeds/chord_voicings/d/d9sus4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d/d9sus4-piano.yml +54 -0
- data/db/seeds/chord_voicings/d/dadd11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d/dadd11-piano.yml +43 -0
- data/db/seeds/chord_voicings/d/dadd13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d/dadd13-piano.yml +43 -0
- data/db/seeds/chord_voicings/d/dadd2-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d/dadd2-piano.yml +43 -0
- data/db/seeds/chord_voicings/d/dadd4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d/dadd4-piano.yml +43 -0
- data/db/seeds/chord_voicings/d/dadd9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d/dadd9-piano.yml +43 -0
- data/db/seeds/chord_voicings/d/daug-guitar.yml +23 -0
- data/db/seeds/chord_voicings/d/daug-piano.yml +32 -0
- data/db/seeds/chord_voicings/d/ddim-guitar.yml +23 -0
- data/db/seeds/chord_voicings/d/ddim-piano.yml +32 -0
- data/db/seeds/chord_voicings/d/ddim7-guitar.yml +47 -0
- data/db/seeds/chord_voicings/d/ddim7-piano.yml +43 -0
- data/db/seeds/chord_voicings/d/dm-guitar.yml +59 -0
- data/db/seeds/chord_voicings/d/dm-maj7-guitar.yml +59 -0
- data/db/seeds/chord_voicings/d/dm-maj7-piano.yml +43 -0
- data/db/seeds/chord_voicings/d/dm-piano.yml +32 -0
- data/db/seeds/chord_voicings/d/dm11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d/dm11-piano.yml +71 -0
- data/db/seeds/chord_voicings/d/dm13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d/dm13-piano.yml +71 -0
- data/db/seeds/chord_voicings/d/dm6-guitar.yml +71 -0
- data/db/seeds/chord_voicings/d/dm6-piano.yml +43 -0
- data/db/seeds/chord_voicings/d/dm7-guitar.yml +71 -0
- data/db/seeds/chord_voicings/d/dm7-piano.yml +43 -0
- data/db/seeds/chord_voicings/d/dm7add11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d/dm7add11-piano.yml +54 -0
- data/db/seeds/chord_voicings/d/dm7flat5-guitar.yml +47 -0
- data/db/seeds/chord_voicings/d/dm7flat5-piano.yml +43 -0
- data/db/seeds/chord_voicings/d/dm9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d/dm9-piano.yml +54 -0
- data/db/seeds/chord_voicings/d/dmadd11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d/dmadd11-piano.yml +43 -0
- data/db/seeds/chord_voicings/d/dmadd13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d/dmadd13-piano.yml +43 -0
- data/db/seeds/chord_voicings/d/dmadd2-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d/dmadd2-piano.yml +43 -0
- data/db/seeds/chord_voicings/d/dmadd4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d/dmadd4-piano.yml +43 -0
- data/db/seeds/chord_voicings/d/dmadd9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d/dmadd9-piano.yml +43 -0
- data/db/seeds/chord_voicings/d/dmaj7-guitar.yml +83 -0
- data/db/seeds/chord_voicings/d/dmaj7-piano.yml +43 -0
- data/db/seeds/chord_voicings/d/dmaj7sharp5-guitar.yml +23 -0
- data/db/seeds/chord_voicings/d/dmaj7sharp5-piano.yml +43 -0
- data/db/seeds/chord_voicings/d/dsus2-guitar.yml +47 -0
- data/db/seeds/chord_voicings/d/dsus2-piano.yml +32 -0
- data/db/seeds/chord_voicings/d/dsus4-guitar.yml +59 -0
- data/db/seeds/chord_voicings/d/dsus4-piano.yml +32 -0
- data/db/seeds/chord_voicings/d-flat/dflat-guitar.yml +59 -0
- data/db/seeds/chord_voicings/d-flat/dflat-piano.yml +32 -0
- data/db/seeds/chord_voicings/d-flat/dflat11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-flat/dflat11-piano.yml +71 -0
- data/db/seeds/chord_voicings/d-flat/dflat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-flat/dflat13-piano.yml +71 -0
- data/db/seeds/chord_voicings/d-flat/dflat13flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-flat/dflat13flat9-piano.yml +71 -0
- data/db/seeds/chord_voicings/d-flat/dflat13sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-flat/dflat13sharp11-piano.yml +83 -0
- data/db/seeds/chord_voicings/d-flat/dflat13sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-flat/dflat13sharp9-piano.yml +71 -0
- data/db/seeds/chord_voicings/d-flat/dflat13sus4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-flat/dflat13sus4-piano.yml +71 -0
- data/db/seeds/chord_voicings/d-flat/dflat5-guitar.yml +23 -0
- data/db/seeds/chord_voicings/d-flat/dflat5-piano.yml +21 -0
- data/db/seeds/chord_voicings/d-flat/dflat6-guitar.yml +59 -0
- data/db/seeds/chord_voicings/d-flat/dflat6-piano.yml +43 -0
- data/db/seeds/chord_voicings/d-flat/dflat7-guitar.yml +59 -0
- data/db/seeds/chord_voicings/d-flat/dflat7-piano.yml +43 -0
- data/db/seeds/chord_voicings/d-flat/dflat7flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-flat/dflat7flat13-piano.yml +54 -0
- data/db/seeds/chord_voicings/d-flat/dflat7flat5-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-flat/dflat7flat5-piano.yml +43 -0
- data/db/seeds/chord_voicings/d-flat/dflat7flat5flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-flat/dflat7flat5flat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/d-flat/dflat7flat5sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-flat/dflat7flat5sharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/d-flat/dflat7flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-flat/dflat7flat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/d-flat/dflat7flat9flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-flat/dflat7flat9flat13-piano.yml +65 -0
- data/db/seeds/chord_voicings/d-flat/dflat7flat9sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-flat/dflat7flat9sharp11-piano.yml +65 -0
- data/db/seeds/chord_voicings/d-flat/dflat7sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-flat/dflat7sharp11-piano.yml +54 -0
- data/db/seeds/chord_voicings/d-flat/dflat7sharp5-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-flat/dflat7sharp5-piano.yml +43 -0
- data/db/seeds/chord_voicings/d-flat/dflat7sharp5flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-flat/dflat7sharp5flat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/d-flat/dflat7sharp5sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-flat/dflat7sharp5sharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/d-flat/dflat7sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-flat/dflat7sharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/d-flat/dflat7sharp9flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-flat/dflat7sharp9flat13-piano.yml +65 -0
- data/db/seeds/chord_voicings/d-flat/dflat7sus2-guitar.yml +23 -0
- data/db/seeds/chord_voicings/d-flat/dflat7sus2-piano.yml +43 -0
- data/db/seeds/chord_voicings/d-flat/dflat7sus4-guitar.yml +35 -0
- data/db/seeds/chord_voicings/d-flat/dflat7sus4-piano.yml +43 -0
- data/db/seeds/chord_voicings/d-flat/dflat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-flat/dflat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/d-flat/dflat9flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-flat/dflat9flat13-piano.yml +65 -0
- data/db/seeds/chord_voicings/d-flat/dflat9sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-flat/dflat9sharp11-piano.yml +65 -0
- data/db/seeds/chord_voicings/d-flat/dflat9sus4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-flat/dflat9sus4-piano.yml +54 -0
- data/db/seeds/chord_voicings/d-flat/dflatadd11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-flat/dflatadd11-piano.yml +43 -0
- data/db/seeds/chord_voicings/d-flat/dflatadd13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-flat/dflatadd13-piano.yml +43 -0
- data/db/seeds/chord_voicings/d-flat/dflatadd2-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-flat/dflatadd2-piano.yml +43 -0
- data/db/seeds/chord_voicings/d-flat/dflatadd4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-flat/dflatadd4-piano.yml +43 -0
- data/db/seeds/chord_voicings/d-flat/dflatadd9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-flat/dflatadd9-piano.yml +43 -0
- data/db/seeds/chord_voicings/d-flat/dflataug-guitar.yml +23 -0
- data/db/seeds/chord_voicings/d-flat/dflataug-piano.yml +32 -0
- data/db/seeds/chord_voicings/d-flat/dflatdim-guitar.yml +23 -0
- data/db/seeds/chord_voicings/d-flat/dflatdim-piano.yml +32 -0
- data/db/seeds/chord_voicings/d-flat/dflatdim7-guitar.yml +23 -0
- data/db/seeds/chord_voicings/d-flat/dflatdim7-piano.yml +43 -0
- data/db/seeds/chord_voicings/d-flat/dflatm-guitar.yml +35 -0
- data/db/seeds/chord_voicings/d-flat/dflatm-maj7-guitar.yml +35 -0
- data/db/seeds/chord_voicings/d-flat/dflatm-maj7-piano.yml +43 -0
- data/db/seeds/chord_voicings/d-flat/dflatm-piano.yml +32 -0
- data/db/seeds/chord_voicings/d-flat/dflatm11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-flat/dflatm11-piano.yml +71 -0
- data/db/seeds/chord_voicings/d-flat/dflatm13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-flat/dflatm13-piano.yml +71 -0
- data/db/seeds/chord_voicings/d-flat/dflatm6-guitar.yml +35 -0
- data/db/seeds/chord_voicings/d-flat/dflatm6-piano.yml +43 -0
- data/db/seeds/chord_voicings/d-flat/dflatm7-guitar.yml +35 -0
- data/db/seeds/chord_voicings/d-flat/dflatm7-piano.yml +43 -0
- data/db/seeds/chord_voicings/d-flat/dflatm7add11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-flat/dflatm7add11-piano.yml +54 -0
- data/db/seeds/chord_voicings/d-flat/dflatm7flat5-guitar.yml +23 -0
- data/db/seeds/chord_voicings/d-flat/dflatm7flat5-piano.yml +43 -0
- data/db/seeds/chord_voicings/d-flat/dflatm9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-flat/dflatm9-piano.yml +54 -0
- data/db/seeds/chord_voicings/d-flat/dflatmadd11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-flat/dflatmadd11-piano.yml +43 -0
- data/db/seeds/chord_voicings/d-flat/dflatmadd13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-flat/dflatmadd13-piano.yml +43 -0
- data/db/seeds/chord_voicings/d-flat/dflatmadd2-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-flat/dflatmadd2-piano.yml +43 -0
- data/db/seeds/chord_voicings/d-flat/dflatmadd4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-flat/dflatmadd4-piano.yml +43 -0
- data/db/seeds/chord_voicings/d-flat/dflatmadd9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-flat/dflatmadd9-piano.yml +43 -0
- data/db/seeds/chord_voicings/d-flat/dflatmaj7-guitar.yml +59 -0
- data/db/seeds/chord_voicings/d-flat/dflatmaj7-piano.yml +43 -0
- data/db/seeds/chord_voicings/d-flat/dflatmaj7sharp5-guitar.yml +23 -0
- data/db/seeds/chord_voicings/d-flat/dflatmaj7sharp5-piano.yml +43 -0
- data/db/seeds/chord_voicings/d-flat/dflatsus2-guitar.yml +23 -0
- data/db/seeds/chord_voicings/d-flat/dflatsus2-piano.yml +32 -0
- data/db/seeds/chord_voicings/d-flat/dflatsus4-guitar.yml +35 -0
- data/db/seeds/chord_voicings/d-flat/dflatsus4-piano.yml +32 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp-guitar.yml +59 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp-piano.yml +32 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp11-piano.yml +71 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp13-piano.yml +71 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp13flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp13flat9-piano.yml +71 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp13sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp13sharp11-piano.yml +83 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp13sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp13sharp9-piano.yml +71 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp13sus4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp13sus4-piano.yml +71 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp5-guitar.yml +23 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp5-piano.yml +21 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp6-guitar.yml +59 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp6-piano.yml +43 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp7-guitar.yml +59 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp7-piano.yml +43 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp7flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp7flat13-piano.yml +54 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp7flat5-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp7flat5-piano.yml +43 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp7flat5flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp7flat5flat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp7flat5sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp7flat5sharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp7flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp7flat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp7flat9flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp7flat9flat13-piano.yml +65 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp7flat9sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp7flat9sharp11-piano.yml +65 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp7sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp7sharp11-piano.yml +54 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp7sharp5-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp7sharp5-piano.yml +43 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp7sharp5flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp7sharp5flat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp7sharp5sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp7sharp5sharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp7sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp7sharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp7sharp9flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp7sharp9flat13-piano.yml +65 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp7sus2-guitar.yml +23 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp7sus2-piano.yml +43 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp7sus4-guitar.yml +35 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp7sus4-piano.yml +43 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp9flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp9flat13-piano.yml +65 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp9sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp9sharp11-piano.yml +65 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp9sus4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-sharp/dsharp9sus4-piano.yml +54 -0
- data/db/seeds/chord_voicings/d-sharp/dsharpadd11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-sharp/dsharpadd11-piano.yml +43 -0
- data/db/seeds/chord_voicings/d-sharp/dsharpadd13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-sharp/dsharpadd13-piano.yml +43 -0
- data/db/seeds/chord_voicings/d-sharp/dsharpadd2-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-sharp/dsharpadd2-piano.yml +43 -0
- data/db/seeds/chord_voicings/d-sharp/dsharpadd4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-sharp/dsharpadd4-piano.yml +43 -0
- data/db/seeds/chord_voicings/d-sharp/dsharpadd9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-sharp/dsharpadd9-piano.yml +43 -0
- data/db/seeds/chord_voicings/d-sharp/dsharpaug-guitar.yml +23 -0
- data/db/seeds/chord_voicings/d-sharp/dsharpaug-piano.yml +32 -0
- data/db/seeds/chord_voicings/d-sharp/dsharpdim-guitar.yml +23 -0
- data/db/seeds/chord_voicings/d-sharp/dsharpdim-piano.yml +32 -0
- data/db/seeds/chord_voicings/d-sharp/dsharpdim7-guitar.yml +23 -0
- data/db/seeds/chord_voicings/d-sharp/dsharpdim7-piano.yml +43 -0
- data/db/seeds/chord_voicings/d-sharp/dsharpm-guitar.yml +35 -0
- data/db/seeds/chord_voicings/d-sharp/dsharpm-maj7-guitar.yml +35 -0
- data/db/seeds/chord_voicings/d-sharp/dsharpm-maj7-piano.yml +43 -0
- data/db/seeds/chord_voicings/d-sharp/dsharpm-piano.yml +32 -0
- data/db/seeds/chord_voicings/d-sharp/dsharpm11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-sharp/dsharpm11-piano.yml +71 -0
- data/db/seeds/chord_voicings/d-sharp/dsharpm13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-sharp/dsharpm13-piano.yml +71 -0
- data/db/seeds/chord_voicings/d-sharp/dsharpm6-guitar.yml +35 -0
- data/db/seeds/chord_voicings/d-sharp/dsharpm6-piano.yml +43 -0
- data/db/seeds/chord_voicings/d-sharp/dsharpm7-guitar.yml +35 -0
- data/db/seeds/chord_voicings/d-sharp/dsharpm7-piano.yml +43 -0
- data/db/seeds/chord_voicings/d-sharp/dsharpm7add11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-sharp/dsharpm7add11-piano.yml +54 -0
- data/db/seeds/chord_voicings/d-sharp/dsharpm7flat5-guitar.yml +23 -0
- data/db/seeds/chord_voicings/d-sharp/dsharpm7flat5-piano.yml +43 -0
- data/db/seeds/chord_voicings/d-sharp/dsharpm9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-sharp/dsharpm9-piano.yml +54 -0
- data/db/seeds/chord_voicings/d-sharp/dsharpmadd11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-sharp/dsharpmadd11-piano.yml +43 -0
- data/db/seeds/chord_voicings/d-sharp/dsharpmadd13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-sharp/dsharpmadd13-piano.yml +43 -0
- data/db/seeds/chord_voicings/d-sharp/dsharpmadd2-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-sharp/dsharpmadd2-piano.yml +43 -0
- data/db/seeds/chord_voicings/d-sharp/dsharpmadd4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-sharp/dsharpmadd4-piano.yml +43 -0
- data/db/seeds/chord_voicings/d-sharp/dsharpmadd9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/d-sharp/dsharpmadd9-piano.yml +43 -0
- data/db/seeds/chord_voicings/d-sharp/dsharpmaj7-guitar.yml +59 -0
- data/db/seeds/chord_voicings/d-sharp/dsharpmaj7-piano.yml +43 -0
- data/db/seeds/chord_voicings/d-sharp/dsharpmaj7sharp5-guitar.yml +23 -0
- data/db/seeds/chord_voicings/d-sharp/dsharpmaj7sharp5-piano.yml +43 -0
- data/db/seeds/chord_voicings/d-sharp/dsharpsus2-guitar.yml +23 -0
- data/db/seeds/chord_voicings/d-sharp/dsharpsus2-piano.yml +32 -0
- data/db/seeds/chord_voicings/d-sharp/dsharpsus4-guitar.yml +35 -0
- data/db/seeds/chord_voicings/d-sharp/dsharpsus4-piano.yml +32 -0
- data/db/seeds/chord_voicings/e/e-guitar.yml +59 -0
- data/db/seeds/chord_voicings/e/e-piano.yml +32 -0
- data/db/seeds/chord_voicings/e/e11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e/e11-piano.yml +71 -0
- data/db/seeds/chord_voicings/e/e13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e/e13-piano.yml +71 -0
- data/db/seeds/chord_voicings/e/e13flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e/e13flat9-piano.yml +71 -0
- data/db/seeds/chord_voicings/e/e13sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e/e13sharp11-piano.yml +83 -0
- data/db/seeds/chord_voicings/e/e13sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e/e13sharp9-piano.yml +71 -0
- data/db/seeds/chord_voicings/e/e13sus4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e/e13sus4-piano.yml +71 -0
- data/db/seeds/chord_voicings/e/e5-guitar.yml +23 -0
- data/db/seeds/chord_voicings/e/e5-piano.yml +21 -0
- data/db/seeds/chord_voicings/e/e6-guitar.yml +59 -0
- data/db/seeds/chord_voicings/e/e6-piano.yml +43 -0
- data/db/seeds/chord_voicings/e/e7-guitar.yml +59 -0
- data/db/seeds/chord_voicings/e/e7-piano.yml +43 -0
- data/db/seeds/chord_voicings/e/e7flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e/e7flat13-piano.yml +54 -0
- data/db/seeds/chord_voicings/e/e7flat5-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e/e7flat5-piano.yml +43 -0
- data/db/seeds/chord_voicings/e/e7flat5flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e/e7flat5flat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/e/e7flat5sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e/e7flat5sharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/e/e7flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e/e7flat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/e/e7flat9flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e/e7flat9flat13-piano.yml +65 -0
- data/db/seeds/chord_voicings/e/e7flat9sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e/e7flat9sharp11-piano.yml +65 -0
- data/db/seeds/chord_voicings/e/e7sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e/e7sharp11-piano.yml +54 -0
- data/db/seeds/chord_voicings/e/e7sharp5-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e/e7sharp5-piano.yml +43 -0
- data/db/seeds/chord_voicings/e/e7sharp5flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e/e7sharp5flat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/e/e7sharp5sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e/e7sharp5sharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/e/e7sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e/e7sharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/e/e7sharp9flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e/e7sharp9flat13-piano.yml +65 -0
- data/db/seeds/chord_voicings/e/e7sus2-guitar.yml +23 -0
- data/db/seeds/chord_voicings/e/e7sus2-piano.yml +43 -0
- data/db/seeds/chord_voicings/e/e7sus4-guitar.yml +35 -0
- data/db/seeds/chord_voicings/e/e7sus4-piano.yml +43 -0
- data/db/seeds/chord_voicings/e/e9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e/e9-piano.yml +54 -0
- data/db/seeds/chord_voicings/e/e9flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e/e9flat13-piano.yml +65 -0
- data/db/seeds/chord_voicings/e/e9sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e/e9sharp11-piano.yml +65 -0
- data/db/seeds/chord_voicings/e/e9sus4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e/e9sus4-piano.yml +54 -0
- data/db/seeds/chord_voicings/e/eadd11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e/eadd11-piano.yml +43 -0
- data/db/seeds/chord_voicings/e/eadd13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e/eadd13-piano.yml +43 -0
- data/db/seeds/chord_voicings/e/eadd2-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e/eadd2-piano.yml +43 -0
- data/db/seeds/chord_voicings/e/eadd4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e/eadd4-piano.yml +43 -0
- data/db/seeds/chord_voicings/e/eadd9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e/eadd9-piano.yml +43 -0
- data/db/seeds/chord_voicings/e/eaug-guitar.yml +23 -0
- data/db/seeds/chord_voicings/e/eaug-piano.yml +32 -0
- data/db/seeds/chord_voicings/e/edim-guitar.yml +23 -0
- data/db/seeds/chord_voicings/e/edim-piano.yml +32 -0
- data/db/seeds/chord_voicings/e/edim7-guitar.yml +23 -0
- data/db/seeds/chord_voicings/e/edim7-piano.yml +43 -0
- data/db/seeds/chord_voicings/e/em-guitar.yml +35 -0
- data/db/seeds/chord_voicings/e/em-maj7-guitar.yml +35 -0
- data/db/seeds/chord_voicings/e/em-maj7-piano.yml +43 -0
- data/db/seeds/chord_voicings/e/em-piano.yml +32 -0
- data/db/seeds/chord_voicings/e/em11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e/em11-piano.yml +71 -0
- data/db/seeds/chord_voicings/e/em13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e/em13-piano.yml +71 -0
- data/db/seeds/chord_voicings/e/em6-guitar.yml +35 -0
- data/db/seeds/chord_voicings/e/em6-piano.yml +43 -0
- data/db/seeds/chord_voicings/e/em7-guitar.yml +35 -0
- data/db/seeds/chord_voicings/e/em7-piano.yml +43 -0
- data/db/seeds/chord_voicings/e/em7add11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e/em7add11-piano.yml +54 -0
- data/db/seeds/chord_voicings/e/em7flat5-guitar.yml +23 -0
- data/db/seeds/chord_voicings/e/em7flat5-piano.yml +43 -0
- data/db/seeds/chord_voicings/e/em9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e/em9-piano.yml +54 -0
- data/db/seeds/chord_voicings/e/emadd11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e/emadd11-piano.yml +43 -0
- data/db/seeds/chord_voicings/e/emadd13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e/emadd13-piano.yml +43 -0
- data/db/seeds/chord_voicings/e/emadd2-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e/emadd2-piano.yml +43 -0
- data/db/seeds/chord_voicings/e/emadd4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e/emadd4-piano.yml +43 -0
- data/db/seeds/chord_voicings/e/emadd9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e/emadd9-piano.yml +43 -0
- data/db/seeds/chord_voicings/e/emaj7-guitar.yml +59 -0
- data/db/seeds/chord_voicings/e/emaj7-piano.yml +43 -0
- data/db/seeds/chord_voicings/e/emaj7sharp5-guitar.yml +23 -0
- data/db/seeds/chord_voicings/e/emaj7sharp5-piano.yml +43 -0
- data/db/seeds/chord_voicings/e/esus2-guitar.yml +23 -0
- data/db/seeds/chord_voicings/e/esus2-piano.yml +32 -0
- data/db/seeds/chord_voicings/e/esus4-guitar.yml +35 -0
- data/db/seeds/chord_voicings/e/esus4-piano.yml +32 -0
- data/db/seeds/chord_voicings/e-flat/eflat-guitar.yml +59 -0
- data/db/seeds/chord_voicings/e-flat/eflat-piano.yml +32 -0
- data/db/seeds/chord_voicings/e-flat/eflat11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e-flat/eflat11-piano.yml +71 -0
- data/db/seeds/chord_voicings/e-flat/eflat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e-flat/eflat13-piano.yml +71 -0
- data/db/seeds/chord_voicings/e-flat/eflat13flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e-flat/eflat13flat9-piano.yml +71 -0
- data/db/seeds/chord_voicings/e-flat/eflat13sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e-flat/eflat13sharp11-piano.yml +83 -0
- data/db/seeds/chord_voicings/e-flat/eflat13sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e-flat/eflat13sharp9-piano.yml +71 -0
- data/db/seeds/chord_voicings/e-flat/eflat13sus4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e-flat/eflat13sus4-piano.yml +71 -0
- data/db/seeds/chord_voicings/e-flat/eflat5-guitar.yml +23 -0
- data/db/seeds/chord_voicings/e-flat/eflat5-piano.yml +21 -0
- data/db/seeds/chord_voicings/e-flat/eflat6-guitar.yml +59 -0
- data/db/seeds/chord_voicings/e-flat/eflat6-piano.yml +43 -0
- data/db/seeds/chord_voicings/e-flat/eflat7-guitar.yml +59 -0
- data/db/seeds/chord_voicings/e-flat/eflat7-piano.yml +43 -0
- data/db/seeds/chord_voicings/e-flat/eflat7flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e-flat/eflat7flat13-piano.yml +54 -0
- data/db/seeds/chord_voicings/e-flat/eflat7flat5-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e-flat/eflat7flat5-piano.yml +43 -0
- data/db/seeds/chord_voicings/e-flat/eflat7flat5flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e-flat/eflat7flat5flat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/e-flat/eflat7flat5sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e-flat/eflat7flat5sharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/e-flat/eflat7flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e-flat/eflat7flat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/e-flat/eflat7flat9flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e-flat/eflat7flat9flat13-piano.yml +65 -0
- data/db/seeds/chord_voicings/e-flat/eflat7flat9sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e-flat/eflat7flat9sharp11-piano.yml +65 -0
- data/db/seeds/chord_voicings/e-flat/eflat7sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e-flat/eflat7sharp11-piano.yml +54 -0
- data/db/seeds/chord_voicings/e-flat/eflat7sharp5-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e-flat/eflat7sharp5-piano.yml +43 -0
- data/db/seeds/chord_voicings/e-flat/eflat7sharp5flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e-flat/eflat7sharp5flat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/e-flat/eflat7sharp5sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e-flat/eflat7sharp5sharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/e-flat/eflat7sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e-flat/eflat7sharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/e-flat/eflat7sharp9flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e-flat/eflat7sharp9flat13-piano.yml +65 -0
- data/db/seeds/chord_voicings/e-flat/eflat7sus2-guitar.yml +23 -0
- data/db/seeds/chord_voicings/e-flat/eflat7sus2-piano.yml +43 -0
- data/db/seeds/chord_voicings/e-flat/eflat7sus4-guitar.yml +35 -0
- data/db/seeds/chord_voicings/e-flat/eflat7sus4-piano.yml +43 -0
- data/db/seeds/chord_voicings/e-flat/eflat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e-flat/eflat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/e-flat/eflat9flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e-flat/eflat9flat13-piano.yml +65 -0
- data/db/seeds/chord_voicings/e-flat/eflat9sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e-flat/eflat9sharp11-piano.yml +65 -0
- data/db/seeds/chord_voicings/e-flat/eflat9sus4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e-flat/eflat9sus4-piano.yml +54 -0
- data/db/seeds/chord_voicings/e-flat/eflatadd11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e-flat/eflatadd11-piano.yml +43 -0
- data/db/seeds/chord_voicings/e-flat/eflatadd13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e-flat/eflatadd13-piano.yml +43 -0
- data/db/seeds/chord_voicings/e-flat/eflatadd2-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e-flat/eflatadd2-piano.yml +43 -0
- data/db/seeds/chord_voicings/e-flat/eflatadd4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e-flat/eflatadd4-piano.yml +43 -0
- data/db/seeds/chord_voicings/e-flat/eflatadd9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e-flat/eflatadd9-piano.yml +43 -0
- data/db/seeds/chord_voicings/e-flat/eflataug-guitar.yml +23 -0
- data/db/seeds/chord_voicings/e-flat/eflataug-piano.yml +32 -0
- data/db/seeds/chord_voicings/e-flat/eflatdim-guitar.yml +23 -0
- data/db/seeds/chord_voicings/e-flat/eflatdim-piano.yml +32 -0
- data/db/seeds/chord_voicings/e-flat/eflatdim7-guitar.yml +23 -0
- data/db/seeds/chord_voicings/e-flat/eflatdim7-piano.yml +43 -0
- data/db/seeds/chord_voicings/e-flat/eflatm-guitar.yml +35 -0
- data/db/seeds/chord_voicings/e-flat/eflatm-maj7-guitar.yml +35 -0
- data/db/seeds/chord_voicings/e-flat/eflatm-maj7-piano.yml +43 -0
- data/db/seeds/chord_voicings/e-flat/eflatm-piano.yml +32 -0
- data/db/seeds/chord_voicings/e-flat/eflatm11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e-flat/eflatm11-piano.yml +71 -0
- data/db/seeds/chord_voicings/e-flat/eflatm13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e-flat/eflatm13-piano.yml +71 -0
- data/db/seeds/chord_voicings/e-flat/eflatm6-guitar.yml +35 -0
- data/db/seeds/chord_voicings/e-flat/eflatm6-piano.yml +43 -0
- data/db/seeds/chord_voicings/e-flat/eflatm7-guitar.yml +35 -0
- data/db/seeds/chord_voicings/e-flat/eflatm7-piano.yml +43 -0
- data/db/seeds/chord_voicings/e-flat/eflatm7add11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e-flat/eflatm7add11-piano.yml +54 -0
- data/db/seeds/chord_voicings/e-flat/eflatm7flat5-guitar.yml +23 -0
- data/db/seeds/chord_voicings/e-flat/eflatm7flat5-piano.yml +43 -0
- data/db/seeds/chord_voicings/e-flat/eflatm9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e-flat/eflatm9-piano.yml +54 -0
- data/db/seeds/chord_voicings/e-flat/eflatmadd11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e-flat/eflatmadd11-piano.yml +43 -0
- data/db/seeds/chord_voicings/e-flat/eflatmadd13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e-flat/eflatmadd13-piano.yml +43 -0
- data/db/seeds/chord_voicings/e-flat/eflatmadd2-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e-flat/eflatmadd2-piano.yml +43 -0
- data/db/seeds/chord_voicings/e-flat/eflatmadd4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e-flat/eflatmadd4-piano.yml +43 -0
- data/db/seeds/chord_voicings/e-flat/eflatmadd9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/e-flat/eflatmadd9-piano.yml +43 -0
- data/db/seeds/chord_voicings/e-flat/eflatmaj7-guitar.yml +59 -0
- data/db/seeds/chord_voicings/e-flat/eflatmaj7-piano.yml +43 -0
- data/db/seeds/chord_voicings/e-flat/eflatmaj7sharp5-guitar.yml +23 -0
- data/db/seeds/chord_voicings/e-flat/eflatmaj7sharp5-piano.yml +43 -0
- data/db/seeds/chord_voicings/e-flat/eflatsus2-guitar.yml +23 -0
- data/db/seeds/chord_voicings/e-flat/eflatsus2-piano.yml +32 -0
- data/db/seeds/chord_voicings/e-flat/eflatsus4-guitar.yml +35 -0
- data/db/seeds/chord_voicings/e-flat/eflatsus4-piano.yml +32 -0
- data/db/seeds/chord_voicings/f/f-guitar.yml +59 -0
- data/db/seeds/chord_voicings/f/f-piano.yml +32 -0
- data/db/seeds/chord_voicings/f/f11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f/f11-piano.yml +71 -0
- data/db/seeds/chord_voicings/f/f13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f/f13-piano.yml +71 -0
- data/db/seeds/chord_voicings/f/f13flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f/f13flat9-piano.yml +71 -0
- data/db/seeds/chord_voicings/f/f13sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f/f13sharp11-piano.yml +83 -0
- data/db/seeds/chord_voicings/f/f13sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f/f13sharp9-piano.yml +71 -0
- data/db/seeds/chord_voicings/f/f13sus4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f/f13sus4-piano.yml +71 -0
- data/db/seeds/chord_voicings/f/f5-guitar.yml +23 -0
- data/db/seeds/chord_voicings/f/f5-piano.yml +21 -0
- data/db/seeds/chord_voicings/f/f6-guitar.yml +59 -0
- data/db/seeds/chord_voicings/f/f6-piano.yml +43 -0
- data/db/seeds/chord_voicings/f/f7-guitar.yml +59 -0
- data/db/seeds/chord_voicings/f/f7-piano.yml +43 -0
- data/db/seeds/chord_voicings/f/f7flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f/f7flat13-piano.yml +54 -0
- data/db/seeds/chord_voicings/f/f7flat5-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f/f7flat5-piano.yml +43 -0
- data/db/seeds/chord_voicings/f/f7flat5flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f/f7flat5flat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/f/f7flat5sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f/f7flat5sharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/f/f7flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f/f7flat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/f/f7flat9flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f/f7flat9flat13-piano.yml +65 -0
- data/db/seeds/chord_voicings/f/f7flat9sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f/f7flat9sharp11-piano.yml +65 -0
- data/db/seeds/chord_voicings/f/f7sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f/f7sharp11-piano.yml +54 -0
- data/db/seeds/chord_voicings/f/f7sharp5-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f/f7sharp5-piano.yml +43 -0
- data/db/seeds/chord_voicings/f/f7sharp5flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f/f7sharp5flat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/f/f7sharp5sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f/f7sharp5sharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/f/f7sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f/f7sharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/f/f7sharp9flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f/f7sharp9flat13-piano.yml +65 -0
- data/db/seeds/chord_voicings/f/f7sus2-guitar.yml +23 -0
- data/db/seeds/chord_voicings/f/f7sus2-piano.yml +43 -0
- data/db/seeds/chord_voicings/f/f7sus4-guitar.yml +35 -0
- data/db/seeds/chord_voicings/f/f7sus4-piano.yml +43 -0
- data/db/seeds/chord_voicings/f/f9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f/f9-piano.yml +54 -0
- data/db/seeds/chord_voicings/f/f9flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f/f9flat13-piano.yml +65 -0
- data/db/seeds/chord_voicings/f/f9sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f/f9sharp11-piano.yml +65 -0
- data/db/seeds/chord_voicings/f/f9sus4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f/f9sus4-piano.yml +54 -0
- data/db/seeds/chord_voicings/f/fadd11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f/fadd11-piano.yml +43 -0
- data/db/seeds/chord_voicings/f/fadd13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f/fadd13-piano.yml +43 -0
- data/db/seeds/chord_voicings/f/fadd2-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f/fadd2-piano.yml +43 -0
- data/db/seeds/chord_voicings/f/fadd4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f/fadd4-piano.yml +43 -0
- data/db/seeds/chord_voicings/f/fadd9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f/fadd9-piano.yml +43 -0
- data/db/seeds/chord_voicings/f/faug-guitar.yml +23 -0
- data/db/seeds/chord_voicings/f/faug-piano.yml +32 -0
- data/db/seeds/chord_voicings/f/fdim-guitar.yml +23 -0
- data/db/seeds/chord_voicings/f/fdim-piano.yml +32 -0
- data/db/seeds/chord_voicings/f/fdim7-guitar.yml +23 -0
- data/db/seeds/chord_voicings/f/fdim7-piano.yml +43 -0
- data/db/seeds/chord_voicings/f/fm-guitar.yml +35 -0
- data/db/seeds/chord_voicings/f/fm-maj7-guitar.yml +35 -0
- data/db/seeds/chord_voicings/f/fm-maj7-piano.yml +43 -0
- data/db/seeds/chord_voicings/f/fm-piano.yml +32 -0
- data/db/seeds/chord_voicings/f/fm11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f/fm11-piano.yml +71 -0
- data/db/seeds/chord_voicings/f/fm13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f/fm13-piano.yml +71 -0
- data/db/seeds/chord_voicings/f/fm6-guitar.yml +35 -0
- data/db/seeds/chord_voicings/f/fm6-piano.yml +43 -0
- data/db/seeds/chord_voicings/f/fm7-guitar.yml +35 -0
- data/db/seeds/chord_voicings/f/fm7-piano.yml +43 -0
- data/db/seeds/chord_voicings/f/fm7add11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f/fm7add11-piano.yml +54 -0
- data/db/seeds/chord_voicings/f/fm7flat5-guitar.yml +23 -0
- data/db/seeds/chord_voicings/f/fm7flat5-piano.yml +43 -0
- data/db/seeds/chord_voicings/f/fm9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f/fm9-piano.yml +54 -0
- data/db/seeds/chord_voicings/f/fmadd11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f/fmadd11-piano.yml +43 -0
- data/db/seeds/chord_voicings/f/fmadd13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f/fmadd13-piano.yml +43 -0
- data/db/seeds/chord_voicings/f/fmadd2-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f/fmadd2-piano.yml +43 -0
- data/db/seeds/chord_voicings/f/fmadd4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f/fmadd4-piano.yml +43 -0
- data/db/seeds/chord_voicings/f/fmadd9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f/fmadd9-piano.yml +43 -0
- data/db/seeds/chord_voicings/f/fmaj7-guitar.yml +59 -0
- data/db/seeds/chord_voicings/f/fmaj7-piano.yml +43 -0
- data/db/seeds/chord_voicings/f/fmaj7sharp5-guitar.yml +23 -0
- data/db/seeds/chord_voicings/f/fmaj7sharp5-piano.yml +43 -0
- data/db/seeds/chord_voicings/f/fsus2-guitar.yml +23 -0
- data/db/seeds/chord_voicings/f/fsus2-piano.yml +32 -0
- data/db/seeds/chord_voicings/f/fsus4-guitar.yml +35 -0
- data/db/seeds/chord_voicings/f/fsus4-piano.yml +32 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp-guitar.yml +59 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp-piano.yml +32 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp11-piano.yml +71 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp13-piano.yml +71 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp13flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp13flat9-piano.yml +71 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp13sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp13sharp11-piano.yml +83 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp13sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp13sharp9-piano.yml +71 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp13sus4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp13sus4-piano.yml +71 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp5-guitar.yml +23 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp5-piano.yml +21 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp6-guitar.yml +59 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp6-piano.yml +43 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp7-guitar.yml +59 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp7-piano.yml +43 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp7flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp7flat13-piano.yml +54 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp7flat5-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp7flat5-piano.yml +43 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp7flat5flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp7flat5flat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp7flat5sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp7flat5sharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp7flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp7flat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp7flat9flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp7flat9flat13-piano.yml +65 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp7flat9sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp7flat9sharp11-piano.yml +65 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp7sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp7sharp11-piano.yml +54 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp7sharp5-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp7sharp5-piano.yml +43 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp7sharp5flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp7sharp5flat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp7sharp5sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp7sharp5sharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp7sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp7sharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp7sharp9flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp7sharp9flat13-piano.yml +65 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp7sus2-guitar.yml +23 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp7sus2-piano.yml +43 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp7sus4-guitar.yml +35 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp7sus4-piano.yml +43 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp9flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp9flat13-piano.yml +65 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp9sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp9sharp11-piano.yml +65 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp9sus4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f-sharp/fsharp9sus4-piano.yml +54 -0
- data/db/seeds/chord_voicings/f-sharp/fsharpadd11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f-sharp/fsharpadd11-piano.yml +43 -0
- data/db/seeds/chord_voicings/f-sharp/fsharpadd13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f-sharp/fsharpadd13-piano.yml +43 -0
- data/db/seeds/chord_voicings/f-sharp/fsharpadd2-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f-sharp/fsharpadd2-piano.yml +43 -0
- data/db/seeds/chord_voicings/f-sharp/fsharpadd4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f-sharp/fsharpadd4-piano.yml +43 -0
- data/db/seeds/chord_voicings/f-sharp/fsharpadd9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f-sharp/fsharpadd9-piano.yml +43 -0
- data/db/seeds/chord_voicings/f-sharp/fsharpaug-guitar.yml +23 -0
- data/db/seeds/chord_voicings/f-sharp/fsharpaug-piano.yml +32 -0
- data/db/seeds/chord_voicings/f-sharp/fsharpdim-guitar.yml +23 -0
- data/db/seeds/chord_voicings/f-sharp/fsharpdim-piano.yml +32 -0
- data/db/seeds/chord_voicings/f-sharp/fsharpdim7-guitar.yml +23 -0
- data/db/seeds/chord_voicings/f-sharp/fsharpdim7-piano.yml +43 -0
- data/db/seeds/chord_voicings/f-sharp/fsharpm-guitar.yml +35 -0
- data/db/seeds/chord_voicings/f-sharp/fsharpm-maj7-guitar.yml +35 -0
- data/db/seeds/chord_voicings/f-sharp/fsharpm-maj7-piano.yml +43 -0
- data/db/seeds/chord_voicings/f-sharp/fsharpm-piano.yml +32 -0
- data/db/seeds/chord_voicings/f-sharp/fsharpm11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f-sharp/fsharpm11-piano.yml +71 -0
- data/db/seeds/chord_voicings/f-sharp/fsharpm13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f-sharp/fsharpm13-piano.yml +71 -0
- data/db/seeds/chord_voicings/f-sharp/fsharpm6-guitar.yml +35 -0
- data/db/seeds/chord_voicings/f-sharp/fsharpm6-piano.yml +43 -0
- data/db/seeds/chord_voicings/f-sharp/fsharpm7-guitar.yml +35 -0
- data/db/seeds/chord_voicings/f-sharp/fsharpm7-piano.yml +43 -0
- data/db/seeds/chord_voicings/f-sharp/fsharpm7add11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f-sharp/fsharpm7add11-piano.yml +54 -0
- data/db/seeds/chord_voicings/f-sharp/fsharpm7flat5-guitar.yml +23 -0
- data/db/seeds/chord_voicings/f-sharp/fsharpm7flat5-piano.yml +43 -0
- data/db/seeds/chord_voicings/f-sharp/fsharpm9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f-sharp/fsharpm9-piano.yml +54 -0
- data/db/seeds/chord_voicings/f-sharp/fsharpmadd11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f-sharp/fsharpmadd11-piano.yml +43 -0
- data/db/seeds/chord_voicings/f-sharp/fsharpmadd13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f-sharp/fsharpmadd13-piano.yml +43 -0
- data/db/seeds/chord_voicings/f-sharp/fsharpmadd2-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f-sharp/fsharpmadd2-piano.yml +43 -0
- data/db/seeds/chord_voicings/f-sharp/fsharpmadd4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f-sharp/fsharpmadd4-piano.yml +43 -0
- data/db/seeds/chord_voicings/f-sharp/fsharpmadd9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/f-sharp/fsharpmadd9-piano.yml +43 -0
- data/db/seeds/chord_voicings/f-sharp/fsharpmaj7-guitar.yml +59 -0
- data/db/seeds/chord_voicings/f-sharp/fsharpmaj7-piano.yml +43 -0
- data/db/seeds/chord_voicings/f-sharp/fsharpmaj7sharp5-guitar.yml +23 -0
- data/db/seeds/chord_voicings/f-sharp/fsharpmaj7sharp5-piano.yml +43 -0
- data/db/seeds/chord_voicings/f-sharp/fsharpsus2-guitar.yml +23 -0
- data/db/seeds/chord_voicings/f-sharp/fsharpsus2-piano.yml +32 -0
- data/db/seeds/chord_voicings/f-sharp/fsharpsus4-guitar.yml +35 -0
- data/db/seeds/chord_voicings/f-sharp/fsharpsus4-piano.yml +32 -0
- data/db/seeds/chord_voicings/g/g-guitar.yml +59 -0
- data/db/seeds/chord_voicings/g/g-piano.yml +32 -0
- data/db/seeds/chord_voicings/g/g11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g/g11-piano.yml +71 -0
- data/db/seeds/chord_voicings/g/g13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g/g13-piano.yml +71 -0
- data/db/seeds/chord_voicings/g/g13flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g/g13flat9-piano.yml +71 -0
- data/db/seeds/chord_voicings/g/g13sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g/g13sharp11-piano.yml +83 -0
- data/db/seeds/chord_voicings/g/g13sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g/g13sharp9-piano.yml +71 -0
- data/db/seeds/chord_voicings/g/g13sus4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g/g13sus4-piano.yml +71 -0
- data/db/seeds/chord_voicings/g/g5-guitar.yml +23 -0
- data/db/seeds/chord_voicings/g/g5-piano.yml +21 -0
- data/db/seeds/chord_voicings/g/g6-guitar.yml +59 -0
- data/db/seeds/chord_voicings/g/g6-piano.yml +43 -0
- data/db/seeds/chord_voicings/g/g7-guitar.yml +59 -0
- data/db/seeds/chord_voicings/g/g7-piano.yml +43 -0
- data/db/seeds/chord_voicings/g/g7flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g/g7flat13-piano.yml +54 -0
- data/db/seeds/chord_voicings/g/g7flat5-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g/g7flat5-piano.yml +43 -0
- data/db/seeds/chord_voicings/g/g7flat5flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g/g7flat5flat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/g/g7flat5sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g/g7flat5sharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/g/g7flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g/g7flat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/g/g7flat9flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g/g7flat9flat13-piano.yml +65 -0
- data/db/seeds/chord_voicings/g/g7flat9sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g/g7flat9sharp11-piano.yml +65 -0
- data/db/seeds/chord_voicings/g/g7sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g/g7sharp11-piano.yml +54 -0
- data/db/seeds/chord_voicings/g/g7sharp5-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g/g7sharp5-piano.yml +43 -0
- data/db/seeds/chord_voicings/g/g7sharp5flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g/g7sharp5flat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/g/g7sharp5sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g/g7sharp5sharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/g/g7sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g/g7sharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/g/g7sharp9flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g/g7sharp9flat13-piano.yml +65 -0
- data/db/seeds/chord_voicings/g/g7sus2-guitar.yml +23 -0
- data/db/seeds/chord_voicings/g/g7sus2-piano.yml +43 -0
- data/db/seeds/chord_voicings/g/g7sus4-guitar.yml +35 -0
- data/db/seeds/chord_voicings/g/g7sus4-piano.yml +43 -0
- data/db/seeds/chord_voicings/g/g9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g/g9-piano.yml +54 -0
- data/db/seeds/chord_voicings/g/g9flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g/g9flat13-piano.yml +65 -0
- data/db/seeds/chord_voicings/g/g9sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g/g9sharp11-piano.yml +65 -0
- data/db/seeds/chord_voicings/g/g9sus4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g/g9sus4-piano.yml +54 -0
- data/db/seeds/chord_voicings/g/gadd11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g/gadd11-piano.yml +43 -0
- data/db/seeds/chord_voicings/g/gadd13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g/gadd13-piano.yml +43 -0
- data/db/seeds/chord_voicings/g/gadd2-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g/gadd2-piano.yml +43 -0
- data/db/seeds/chord_voicings/g/gadd4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g/gadd4-piano.yml +43 -0
- data/db/seeds/chord_voicings/g/gadd9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g/gadd9-piano.yml +43 -0
- data/db/seeds/chord_voicings/g/gaug-guitar.yml +23 -0
- data/db/seeds/chord_voicings/g/gaug-piano.yml +32 -0
- data/db/seeds/chord_voicings/g/gdim-guitar.yml +23 -0
- data/db/seeds/chord_voicings/g/gdim-piano.yml +32 -0
- data/db/seeds/chord_voicings/g/gdim7-guitar.yml +23 -0
- data/db/seeds/chord_voicings/g/gdim7-piano.yml +43 -0
- data/db/seeds/chord_voicings/g/gm-guitar.yml +35 -0
- data/db/seeds/chord_voicings/g/gm-maj7-guitar.yml +35 -0
- data/db/seeds/chord_voicings/g/gm-maj7-piano.yml +43 -0
- data/db/seeds/chord_voicings/g/gm-piano.yml +32 -0
- data/db/seeds/chord_voicings/g/gm11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g/gm11-piano.yml +71 -0
- data/db/seeds/chord_voicings/g/gm13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g/gm13-piano.yml +71 -0
- data/db/seeds/chord_voicings/g/gm6-guitar.yml +35 -0
- data/db/seeds/chord_voicings/g/gm6-piano.yml +43 -0
- data/db/seeds/chord_voicings/g/gm7-guitar.yml +35 -0
- data/db/seeds/chord_voicings/g/gm7-piano.yml +43 -0
- data/db/seeds/chord_voicings/g/gm7add11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g/gm7add11-piano.yml +54 -0
- data/db/seeds/chord_voicings/g/gm7flat5-guitar.yml +23 -0
- data/db/seeds/chord_voicings/g/gm7flat5-piano.yml +43 -0
- data/db/seeds/chord_voicings/g/gm9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g/gm9-piano.yml +54 -0
- data/db/seeds/chord_voicings/g/gmadd11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g/gmadd11-piano.yml +43 -0
- data/db/seeds/chord_voicings/g/gmadd13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g/gmadd13-piano.yml +43 -0
- data/db/seeds/chord_voicings/g/gmadd2-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g/gmadd2-piano.yml +43 -0
- data/db/seeds/chord_voicings/g/gmadd4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g/gmadd4-piano.yml +43 -0
- data/db/seeds/chord_voicings/g/gmadd9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g/gmadd9-piano.yml +43 -0
- data/db/seeds/chord_voicings/g/gmaj7-guitar.yml +59 -0
- data/db/seeds/chord_voicings/g/gmaj7-piano.yml +43 -0
- data/db/seeds/chord_voicings/g/gmaj7sharp5-guitar.yml +23 -0
- data/db/seeds/chord_voicings/g/gmaj7sharp5-piano.yml +43 -0
- data/db/seeds/chord_voicings/g/gsus2-guitar.yml +23 -0
- data/db/seeds/chord_voicings/g/gsus2-piano.yml +32 -0
- data/db/seeds/chord_voicings/g/gsus4-guitar.yml +35 -0
- data/db/seeds/chord_voicings/g/gsus4-piano.yml +32 -0
- data/db/seeds/chord_voicings/g-flat/gflat-guitar.yml +59 -0
- data/db/seeds/chord_voicings/g-flat/gflat-piano.yml +32 -0
- data/db/seeds/chord_voicings/g-flat/gflat11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-flat/gflat11-piano.yml +71 -0
- data/db/seeds/chord_voicings/g-flat/gflat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-flat/gflat13-piano.yml +71 -0
- data/db/seeds/chord_voicings/g-flat/gflat13flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-flat/gflat13flat9-piano.yml +71 -0
- data/db/seeds/chord_voicings/g-flat/gflat13sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-flat/gflat13sharp11-piano.yml +83 -0
- data/db/seeds/chord_voicings/g-flat/gflat13sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-flat/gflat13sharp9-piano.yml +71 -0
- data/db/seeds/chord_voicings/g-flat/gflat13sus4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-flat/gflat13sus4-piano.yml +71 -0
- data/db/seeds/chord_voicings/g-flat/gflat5-guitar.yml +23 -0
- data/db/seeds/chord_voicings/g-flat/gflat5-piano.yml +21 -0
- data/db/seeds/chord_voicings/g-flat/gflat6-guitar.yml +59 -0
- data/db/seeds/chord_voicings/g-flat/gflat6-piano.yml +43 -0
- data/db/seeds/chord_voicings/g-flat/gflat7-guitar.yml +59 -0
- data/db/seeds/chord_voicings/g-flat/gflat7-piano.yml +43 -0
- data/db/seeds/chord_voicings/g-flat/gflat7flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-flat/gflat7flat13-piano.yml +54 -0
- data/db/seeds/chord_voicings/g-flat/gflat7flat5-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-flat/gflat7flat5-piano.yml +43 -0
- data/db/seeds/chord_voicings/g-flat/gflat7flat5flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-flat/gflat7flat5flat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/g-flat/gflat7flat5sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-flat/gflat7flat5sharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/g-flat/gflat7flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-flat/gflat7flat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/g-flat/gflat7flat9flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-flat/gflat7flat9flat13-piano.yml +65 -0
- data/db/seeds/chord_voicings/g-flat/gflat7flat9sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-flat/gflat7flat9sharp11-piano.yml +65 -0
- data/db/seeds/chord_voicings/g-flat/gflat7sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-flat/gflat7sharp11-piano.yml +54 -0
- data/db/seeds/chord_voicings/g-flat/gflat7sharp5-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-flat/gflat7sharp5-piano.yml +43 -0
- data/db/seeds/chord_voicings/g-flat/gflat7sharp5flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-flat/gflat7sharp5flat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/g-flat/gflat7sharp5sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-flat/gflat7sharp5sharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/g-flat/gflat7sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-flat/gflat7sharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/g-flat/gflat7sharp9flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-flat/gflat7sharp9flat13-piano.yml +65 -0
- data/db/seeds/chord_voicings/g-flat/gflat7sus2-guitar.yml +23 -0
- data/db/seeds/chord_voicings/g-flat/gflat7sus2-piano.yml +43 -0
- data/db/seeds/chord_voicings/g-flat/gflat7sus4-guitar.yml +35 -0
- data/db/seeds/chord_voicings/g-flat/gflat7sus4-piano.yml +43 -0
- data/db/seeds/chord_voicings/g-flat/gflat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-flat/gflat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/g-flat/gflat9flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-flat/gflat9flat13-piano.yml +65 -0
- data/db/seeds/chord_voicings/g-flat/gflat9sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-flat/gflat9sharp11-piano.yml +65 -0
- data/db/seeds/chord_voicings/g-flat/gflat9sus4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-flat/gflat9sus4-piano.yml +54 -0
- data/db/seeds/chord_voicings/g-flat/gflatadd11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-flat/gflatadd11-piano.yml +43 -0
- data/db/seeds/chord_voicings/g-flat/gflatadd13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-flat/gflatadd13-piano.yml +43 -0
- data/db/seeds/chord_voicings/g-flat/gflatadd2-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-flat/gflatadd2-piano.yml +43 -0
- data/db/seeds/chord_voicings/g-flat/gflatadd4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-flat/gflatadd4-piano.yml +43 -0
- data/db/seeds/chord_voicings/g-flat/gflatadd9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-flat/gflatadd9-piano.yml +43 -0
- data/db/seeds/chord_voicings/g-flat/gflataug-guitar.yml +23 -0
- data/db/seeds/chord_voicings/g-flat/gflataug-piano.yml +32 -0
- data/db/seeds/chord_voicings/g-flat/gflatdim-guitar.yml +23 -0
- data/db/seeds/chord_voicings/g-flat/gflatdim-piano.yml +32 -0
- data/db/seeds/chord_voicings/g-flat/gflatdim7-guitar.yml +23 -0
- data/db/seeds/chord_voicings/g-flat/gflatdim7-piano.yml +43 -0
- data/db/seeds/chord_voicings/g-flat/gflatm-guitar.yml +35 -0
- data/db/seeds/chord_voicings/g-flat/gflatm-maj7-guitar.yml +35 -0
- data/db/seeds/chord_voicings/g-flat/gflatm-maj7-piano.yml +43 -0
- data/db/seeds/chord_voicings/g-flat/gflatm-piano.yml +32 -0
- data/db/seeds/chord_voicings/g-flat/gflatm11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-flat/gflatm11-piano.yml +71 -0
- data/db/seeds/chord_voicings/g-flat/gflatm13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-flat/gflatm13-piano.yml +71 -0
- data/db/seeds/chord_voicings/g-flat/gflatm6-guitar.yml +35 -0
- data/db/seeds/chord_voicings/g-flat/gflatm6-piano.yml +43 -0
- data/db/seeds/chord_voicings/g-flat/gflatm7-guitar.yml +35 -0
- data/db/seeds/chord_voicings/g-flat/gflatm7-piano.yml +43 -0
- data/db/seeds/chord_voicings/g-flat/gflatm7add11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-flat/gflatm7add11-piano.yml +54 -0
- data/db/seeds/chord_voicings/g-flat/gflatm7flat5-guitar.yml +23 -0
- data/db/seeds/chord_voicings/g-flat/gflatm7flat5-piano.yml +43 -0
- data/db/seeds/chord_voicings/g-flat/gflatm9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-flat/gflatm9-piano.yml +54 -0
- data/db/seeds/chord_voicings/g-flat/gflatmadd11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-flat/gflatmadd11-piano.yml +43 -0
- data/db/seeds/chord_voicings/g-flat/gflatmadd13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-flat/gflatmadd13-piano.yml +43 -0
- data/db/seeds/chord_voicings/g-flat/gflatmadd2-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-flat/gflatmadd2-piano.yml +43 -0
- data/db/seeds/chord_voicings/g-flat/gflatmadd4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-flat/gflatmadd4-piano.yml +43 -0
- data/db/seeds/chord_voicings/g-flat/gflatmadd9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-flat/gflatmadd9-piano.yml +43 -0
- data/db/seeds/chord_voicings/g-flat/gflatmaj7-guitar.yml +59 -0
- data/db/seeds/chord_voicings/g-flat/gflatmaj7-piano.yml +43 -0
- data/db/seeds/chord_voicings/g-flat/gflatmaj7sharp5-guitar.yml +23 -0
- data/db/seeds/chord_voicings/g-flat/gflatmaj7sharp5-piano.yml +43 -0
- data/db/seeds/chord_voicings/g-flat/gflatsus2-guitar.yml +23 -0
- data/db/seeds/chord_voicings/g-flat/gflatsus2-piano.yml +32 -0
- data/db/seeds/chord_voicings/g-flat/gflatsus4-guitar.yml +35 -0
- data/db/seeds/chord_voicings/g-flat/gflatsus4-piano.yml +32 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp-guitar.yml +59 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp-piano.yml +32 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp11-piano.yml +71 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp13-piano.yml +71 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp13flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp13flat9-piano.yml +71 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp13sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp13sharp11-piano.yml +83 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp13sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp13sharp9-piano.yml +71 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp13sus4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp13sus4-piano.yml +71 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp5-guitar.yml +23 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp5-piano.yml +21 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp6-guitar.yml +59 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp6-piano.yml +43 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp7-guitar.yml +59 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp7-piano.yml +43 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp7flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp7flat13-piano.yml +54 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp7flat5-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp7flat5-piano.yml +43 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp7flat5flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp7flat5flat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp7flat5sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp7flat5sharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp7flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp7flat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp7flat9flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp7flat9flat13-piano.yml +65 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp7flat9sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp7flat9sharp11-piano.yml +65 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp7sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp7sharp11-piano.yml +54 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp7sharp5-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp7sharp5-piano.yml +43 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp7sharp5flat9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp7sharp5flat9-piano.yml +54 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp7sharp5sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp7sharp5sharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp7sharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp7sharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp7sharp9flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp7sharp9flat13-piano.yml +65 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp7sus2-guitar.yml +23 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp7sus2-piano.yml +43 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp7sus4-guitar.yml +35 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp7sus4-piano.yml +43 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp9-piano.yml +54 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp9flat13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp9flat13-piano.yml +65 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp9sharp11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp9sharp11-piano.yml +65 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp9sus4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-sharp/gsharp9sus4-piano.yml +54 -0
- data/db/seeds/chord_voicings/g-sharp/gsharpadd11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-sharp/gsharpadd11-piano.yml +43 -0
- data/db/seeds/chord_voicings/g-sharp/gsharpadd13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-sharp/gsharpadd13-piano.yml +43 -0
- data/db/seeds/chord_voicings/g-sharp/gsharpadd2-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-sharp/gsharpadd2-piano.yml +43 -0
- data/db/seeds/chord_voicings/g-sharp/gsharpadd4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-sharp/gsharpadd4-piano.yml +43 -0
- data/db/seeds/chord_voicings/g-sharp/gsharpadd9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-sharp/gsharpadd9-piano.yml +43 -0
- data/db/seeds/chord_voicings/g-sharp/gsharpaug-guitar.yml +23 -0
- data/db/seeds/chord_voicings/g-sharp/gsharpaug-piano.yml +32 -0
- data/db/seeds/chord_voicings/g-sharp/gsharpdim-guitar.yml +23 -0
- data/db/seeds/chord_voicings/g-sharp/gsharpdim-piano.yml +32 -0
- data/db/seeds/chord_voicings/g-sharp/gsharpdim7-guitar.yml +23 -0
- data/db/seeds/chord_voicings/g-sharp/gsharpdim7-piano.yml +43 -0
- data/db/seeds/chord_voicings/g-sharp/gsharpm-guitar.yml +35 -0
- data/db/seeds/chord_voicings/g-sharp/gsharpm-maj7-guitar.yml +35 -0
- data/db/seeds/chord_voicings/g-sharp/gsharpm-maj7-piano.yml +43 -0
- data/db/seeds/chord_voicings/g-sharp/gsharpm-piano.yml +32 -0
- data/db/seeds/chord_voicings/g-sharp/gsharpm11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-sharp/gsharpm11-piano.yml +71 -0
- data/db/seeds/chord_voicings/g-sharp/gsharpm13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-sharp/gsharpm13-piano.yml +71 -0
- data/db/seeds/chord_voicings/g-sharp/gsharpm6-guitar.yml +35 -0
- data/db/seeds/chord_voicings/g-sharp/gsharpm6-piano.yml +43 -0
- data/db/seeds/chord_voicings/g-sharp/gsharpm7-guitar.yml +35 -0
- data/db/seeds/chord_voicings/g-sharp/gsharpm7-piano.yml +43 -0
- data/db/seeds/chord_voicings/g-sharp/gsharpm7add11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-sharp/gsharpm7add11-piano.yml +54 -0
- data/db/seeds/chord_voicings/g-sharp/gsharpm7flat5-guitar.yml +23 -0
- data/db/seeds/chord_voicings/g-sharp/gsharpm7flat5-piano.yml +43 -0
- data/db/seeds/chord_voicings/g-sharp/gsharpm9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-sharp/gsharpm9-piano.yml +54 -0
- data/db/seeds/chord_voicings/g-sharp/gsharpmadd11-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-sharp/gsharpmadd11-piano.yml +43 -0
- data/db/seeds/chord_voicings/g-sharp/gsharpmadd13-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-sharp/gsharpmadd13-piano.yml +43 -0
- data/db/seeds/chord_voicings/g-sharp/gsharpmadd2-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-sharp/gsharpmadd2-piano.yml +43 -0
- data/db/seeds/chord_voicings/g-sharp/gsharpmadd4-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-sharp/gsharpmadd4-piano.yml +43 -0
- data/db/seeds/chord_voicings/g-sharp/gsharpmadd9-guitar.yml +11 -0
- data/db/seeds/chord_voicings/g-sharp/gsharpmadd9-piano.yml +43 -0
- data/db/seeds/chord_voicings/g-sharp/gsharpmaj7-guitar.yml +59 -0
- data/db/seeds/chord_voicings/g-sharp/gsharpmaj7-piano.yml +43 -0
- data/db/seeds/chord_voicings/g-sharp/gsharpmaj7sharp5-guitar.yml +23 -0
- data/db/seeds/chord_voicings/g-sharp/gsharpmaj7sharp5-piano.yml +43 -0
- data/db/seeds/chord_voicings/g-sharp/gsharpsus2-guitar.yml +23 -0
- data/db/seeds/chord_voicings/g-sharp/gsharpsus2-piano.yml +32 -0
- data/db/seeds/chord_voicings/g-sharp/gsharpsus4-guitar.yml +35 -0
- data/db/seeds/chord_voicings/g-sharp/gsharpsus4-piano.yml +32 -0
- data/db/seeds/chords/a-flat.yml +451 -0
- data/db/seeds/chords/a-sharp.yml +451 -0
- data/db/seeds/chords/a.yml +451 -0
- data/db/seeds/chords/b-flat.yml +451 -0
- data/db/seeds/chords/b.yml +451 -0
- data/db/seeds/chords/c-sharp.yml +451 -0
- data/db/seeds/chords/c.yml +451 -0
- data/db/seeds/chords/d-flat.yml +451 -0
- data/db/seeds/chords/d-sharp.yml +451 -0
- data/db/seeds/chords/d.yml +451 -0
- data/db/seeds/chords/e-flat.yml +451 -0
- data/db/seeds/chords/e.yml +451 -0
- data/db/seeds/chords/f-sharp.yml +451 -0
- data/db/seeds/chords/f.yml +451 -0
- data/db/seeds/chords/g-flat.yml +451 -0
- data/db/seeds/chords/g-sharp.yml +451 -0
- data/db/seeds/chords/g.yml +451 -0
- data/db/seeds.rb +72 -0
- data/lib/outro_rails/chord_chart_attribute.rb +40 -0
- data/lib/outro_rails/engine.rb +20 -0
- data/lib/outro_rails/form_builder_extensions.rb +7 -0
- data/lib/outro_rails/generators/chord_seed_generator.rb +219 -0
- data/lib/outro_rails/generators/guitar_voicing_generator.rb +196 -0
- data/lib/outro_rails/generators/voicing_seed_entry.rb +42 -0
- data/lib/outro_rails/generators/voicing_seed_writer.rb +53 -0
- data/lib/outro_rails/generators/voicing_stub_generator.rb +176 -0
- data/lib/outro_rails/instruments/guitar/capo.rb +54 -0
- data/lib/outro_rails/instruments/guitar/chord_shapes.rb +243 -0
- data/lib/outro_rails/instruments/guitar/tunings.rb +109 -0
- data/lib/outro_rails/instruments/guitar.rb +120 -0
- data/lib/outro_rails/instruments/piano.rb +68 -0
- data/lib/outro_rails/instruments.rb +15 -0
- data/lib/outro_rails/theory/chord_vocabulary.rb +198 -0
- data/lib/outro_rails/theory/interval.rb +59 -0
- data/lib/outro_rails/theory/key.rb +249 -0
- data/lib/outro_rails/theory/nashville_number.rb +154 -0
- data/lib/outro_rails/theory/note_name.rb +224 -0
- data/lib/outro_rails/theory/pitch.rb +112 -0
- data/lib/outro_rails/theory/scale.rb +338 -0
- data/lib/outro_rails/theory/transposer.rb +248 -0
- data/lib/outro_rails/theory.rb +15 -0
- data/lib/outro_rails/version.rb +5 -0
- data/lib/outro_rails.rb +19 -0
- data/lib/tasks/outro_rails_tasks.rake +92 -0
- metadata +2070 -0
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module OutroRails
|
|
4
|
+
module Theory
|
|
5
|
+
# A spelled note name without an octave: a letter plus an accidental
|
|
6
|
+
# ('C', 'F#', 'Bbb'). Two NoteNames can share a pitch class but still be
|
|
7
|
+
# different notes (C# vs Db), which matters for keys, transposition and
|
|
8
|
+
# correct chord spelling.
|
|
9
|
+
class NoteName
|
|
10
|
+
include Comparable
|
|
11
|
+
|
|
12
|
+
LETTERS = %w[C D E F G A B].freeze
|
|
13
|
+
|
|
14
|
+
LETTERS_PER_OCTAVE = LETTERS.size
|
|
15
|
+
|
|
16
|
+
NATURAL_PITCH_CLASSES = {
|
|
17
|
+
"C" => 0,
|
|
18
|
+
"D" => 2,
|
|
19
|
+
"E" => 4,
|
|
20
|
+
"F" => 5,
|
|
21
|
+
"G" => 7,
|
|
22
|
+
"A" => 9,
|
|
23
|
+
"B" => 11
|
|
24
|
+
}.freeze
|
|
25
|
+
|
|
26
|
+
# Offset in semitones contributed by each accidental spelling.
|
|
27
|
+
ACCIDENTAL_OFFSETS = {
|
|
28
|
+
"bb" => -2,
|
|
29
|
+
"b" => -1,
|
|
30
|
+
"" => 0,
|
|
31
|
+
"#" => 1,
|
|
32
|
+
"##" => 2
|
|
33
|
+
}.freeze
|
|
34
|
+
|
|
35
|
+
ACCIDENTALS_BY_OFFSET = ACCIDENTAL_OFFSETS.invert.freeze
|
|
36
|
+
|
|
37
|
+
# The root names the app generates chords for - every pitch class,
|
|
38
|
+
# with both spellings where two are in common use.
|
|
39
|
+
CANONICAL_ROOTS = %w[C C# Db D D# Eb E F F# Gb G G# Ab A A# Bb B].freeze
|
|
40
|
+
|
|
41
|
+
# Preferred spelling of each pitch class in sharp and flat contexts.
|
|
42
|
+
SHARP_NAMES = %w[C C# D D# E F F# G G# A A# B].freeze
|
|
43
|
+
FLAT_NAMES = %w[C Db D Eb E F Gb G Ab A Bb B].freeze
|
|
44
|
+
|
|
45
|
+
# Shared regex fragments - Pitch and Transposer build their note
|
|
46
|
+
# patterns from these so the spelling grammar lives in one place.
|
|
47
|
+
ACCIDENTAL_PATTERN = /##|bb|[#b]/
|
|
48
|
+
NAME_PATTERN = /[A-G](?:#{ACCIDENTAL_PATTERN})?/
|
|
49
|
+
|
|
50
|
+
PARSE_PATTERN = /\A([A-Ga-g])(#{ACCIDENTAL_PATTERN})?\z/
|
|
51
|
+
|
|
52
|
+
attr_reader :letter, :accidental
|
|
53
|
+
|
|
54
|
+
# Accepts a NoteName or a string like 'C', 'f#', 'Ebb'.
|
|
55
|
+
def self.parse(value)
|
|
56
|
+
return value if value.is_a?(self)
|
|
57
|
+
|
|
58
|
+
match = value.to_s.strip.match(PARSE_PATTERN)
|
|
59
|
+
raise ArgumentError, "Invalid note name: #{value.inspect}" unless match
|
|
60
|
+
|
|
61
|
+
new(match[1].upcase, match[2].to_s)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
# Inverse of #path_slug: 'f-sharp' => F#, 'b-flat' => Bb, 'c' => C.
|
|
65
|
+
# Legacy underscore slugs ('f_sharp') are still accepted.
|
|
66
|
+
def self.from_slug(slug)
|
|
67
|
+
parse(slug.to_s
|
|
68
|
+
.strip
|
|
69
|
+
.downcase
|
|
70
|
+
.tr("_", "-")
|
|
71
|
+
.gsub("-sharp", "#")
|
|
72
|
+
.gsub("-flat", "b"))
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
# :sharps when any of the spelled names uses a sharp, else :flats -
|
|
76
|
+
# the spelling that matches a set of notes, for naming pitches the
|
|
77
|
+
# set itself doesn't spell (keyboard ranges, fretboard labels).
|
|
78
|
+
def self.preferred_accidentals(names)
|
|
79
|
+
names.any? { |name| name.to_s.include?("#") } ? :sharps : :flats
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
# Names a bare pitch class (0..11), preferring sharp or flat spelling.
|
|
83
|
+
def self.for_pitch_class(pitch_class, prefer: :sharps)
|
|
84
|
+
table = prefer == :flats ? FLAT_NAMES : SHARP_NAMES
|
|
85
|
+
parse(table[pitch_class % Interval::SEMITONES_PER_OCTAVE])
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def initialize(letter, accidental = "")
|
|
89
|
+
@letter = letter
|
|
90
|
+
@accidental = accidental
|
|
91
|
+
|
|
92
|
+
NATURAL_PITCH_CLASSES.fetch(letter) do
|
|
93
|
+
raise ArgumentError, "Unknown letter #{letter.inspect}"
|
|
94
|
+
end
|
|
95
|
+
ACCIDENTAL_OFFSETS.fetch(accidental) do
|
|
96
|
+
raise ArgumentError, "Unknown accidental #{accidental.inspect}"
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
freeze
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
def pitch_class
|
|
103
|
+
(NATURAL_PITCH_CLASSES.fetch(letter) +
|
|
104
|
+
ACCIDENTAL_OFFSETS.fetch(accidental)) % Interval::SEMITONES_PER_OCTAVE
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
def accidental_offset
|
|
108
|
+
ACCIDENTAL_OFFSETS.fetch(accidental)
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
# Semitones above the octave's C, accidental included and *not*
|
|
112
|
+
# wrapped: Cb => -1, B# => 12. Pitch relies on this so that the
|
|
113
|
+
# written octave follows the letter.
|
|
114
|
+
def letter_natural_midi_offset
|
|
115
|
+
NATURAL_PITCH_CLASSES.fetch(letter) + accidental_offset
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
def letter_index
|
|
119
|
+
LETTERS.index(letter)
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
# The correctly spelled note `semitones` above this one: the letter
|
|
123
|
+
# moves the number of scale-letter steps above the note that
|
|
124
|
+
# Interval defines for that many semitones, and the accidental is
|
|
125
|
+
# whatever makes the pitch come out right, e.g. E.at_interval(4) => G#,
|
|
126
|
+
# Db.at_interval(3) => Fb (not E).
|
|
127
|
+
# Double accidentals are respelled enharmonically (G## => A) to match
|
|
128
|
+
# how chord tones are conventionally written.
|
|
129
|
+
#
|
|
130
|
+
# Raises ArgumentError if Interval defines no letter step for
|
|
131
|
+
# `semitones` (an interval the app never spells, e.g. 1 or 12), or if
|
|
132
|
+
# the result would still need more than one accidental.
|
|
133
|
+
def at_interval(semitones)
|
|
134
|
+
step = Interval.letter_steps!(semitones)
|
|
135
|
+
|
|
136
|
+
index = (letter_index + step) % LETTERS.size
|
|
137
|
+
target = (pitch_class + semitones) % Interval::SEMITONES_PER_OCTAVE
|
|
138
|
+
diff = accidental_diff(target, index)
|
|
139
|
+
|
|
140
|
+
if diff.abs == 2
|
|
141
|
+
index = (index + (diff / 2)) % LETTERS.size
|
|
142
|
+
diff = accidental_diff(target, index)
|
|
143
|
+
end
|
|
144
|
+
if diff.abs > 1
|
|
145
|
+
raise ArgumentError,
|
|
146
|
+
"cannot spell interval #{semitones} above #{self}"
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
self.class.new(LETTERS[index], ACCIDENTALS_BY_OFFSET.fetch(diff))
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
# Spells the note `letter_steps` letters up whose pitch class is
|
|
153
|
+
# `pitch_class + semitones`. Unlike #at_interval this keeps double
|
|
154
|
+
# accidentals, which scale spelling needs (G# major contains F##).
|
|
155
|
+
def at_degree(semitones, letter_steps)
|
|
156
|
+
index = (letter_index + letter_steps) % LETTERS.size
|
|
157
|
+
target = (pitch_class + semitones) % Interval::SEMITONES_PER_OCTAVE
|
|
158
|
+
diff = accidental_diff(target, index)
|
|
159
|
+
|
|
160
|
+
accidental = ACCIDENTALS_BY_OFFSET.fetch(diff) do
|
|
161
|
+
raise ArgumentError,
|
|
162
|
+
"cannot spell #{semitones} semitones above #{self} on" \
|
|
163
|
+
"letter #{LETTERS[index]}"
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
self.class.new(LETTERS[index], accidental)
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
# Simple chromatic transposition; picks sharp or flat spelling for the
|
|
170
|
+
# result. Spelling-aware transposition should go through Key instead.
|
|
171
|
+
def transpose(semitones, prefer: :sharps)
|
|
172
|
+
self.class.for_pitch_class(pitch_class + semitones, prefer: prefer)
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
def to_s
|
|
176
|
+
"#{letter}#{accidental}"
|
|
177
|
+
end
|
|
178
|
+
alias name to_s
|
|
179
|
+
|
|
180
|
+
def inspect
|
|
181
|
+
"#<#{self.class.name} #{self}>"
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
# Used for URL segments, e.g. F# => 'f-sharp', Bb => 'b-flat'.
|
|
185
|
+
def path_slug
|
|
186
|
+
to_s.gsub("b", "-flat").gsub("#", "-sharp").downcase
|
|
187
|
+
end
|
|
188
|
+
|
|
189
|
+
def ==(other)
|
|
190
|
+
other.is_a?(self.class) &&
|
|
191
|
+
letter == other.letter &&
|
|
192
|
+
accidental == other.accidental
|
|
193
|
+
end
|
|
194
|
+
alias eql? ==
|
|
195
|
+
|
|
196
|
+
def hash
|
|
197
|
+
[ letter, accidental ].hash
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
def <=>(other)
|
|
201
|
+
[
|
|
202
|
+
letter_index,
|
|
203
|
+
accidental_offset
|
|
204
|
+
] <=> [
|
|
205
|
+
other.letter_index,
|
|
206
|
+
other.accidental_offset
|
|
207
|
+
]
|
|
208
|
+
end
|
|
209
|
+
|
|
210
|
+
private
|
|
211
|
+
|
|
212
|
+
# Semitone difference between a target pitch class and a letter's
|
|
213
|
+
# natural pitch class, folded into -6..6.
|
|
214
|
+
def accidental_diff(target_pitch_class, index)
|
|
215
|
+
diff =
|
|
216
|
+
(target_pitch_class -
|
|
217
|
+
NATURAL_PITCH_CLASSES.fetch(LETTERS[index])) %
|
|
218
|
+
Interval::SEMITONES_PER_OCTAVE
|
|
219
|
+
|
|
220
|
+
diff > 6 ? diff - Interval::SEMITONES_PER_OCTAVE : diff
|
|
221
|
+
end
|
|
222
|
+
end
|
|
223
|
+
end
|
|
224
|
+
end
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module OutroRails
|
|
4
|
+
module Theory
|
|
5
|
+
# A NoteName pinned to an octave - a concrete key you could play.
|
|
6
|
+
# MIDI convention C4 == 60.
|
|
7
|
+
#
|
|
8
|
+
# The written octave follows the letter, not the sounding pitch:
|
|
9
|
+
# Cb4 sounds as B3 (midi 59) and B#3 sounds as C4 (midi 60).
|
|
10
|
+
class Pitch
|
|
11
|
+
include Comparable
|
|
12
|
+
|
|
13
|
+
# The anchor of the octave numbering: middle C is midi 60 in octave 4.
|
|
14
|
+
MIDDLE_C_MIDI = 60
|
|
15
|
+
MIDDLE_C_OCTAVE = 4
|
|
16
|
+
|
|
17
|
+
# A letter with optional accidental followed by an octave, which may
|
|
18
|
+
# be negative: "C4", "F#3", "Bb-1".
|
|
19
|
+
PARSE_PATTERN =
|
|
20
|
+
/\A([A-Ga-g](?:#{NoteName::ACCIDENTAL_PATTERN})?)(-?\d+)\z/
|
|
21
|
+
|
|
22
|
+
# The spelled note and its written octave
|
|
23
|
+
attr_reader :note_name, :octave
|
|
24
|
+
|
|
25
|
+
# Accepts a Pitch or a string like 'C4', 'F#3', 'Bb-1'.
|
|
26
|
+
def self.parse(value)
|
|
27
|
+
return value if value.is_a?(self)
|
|
28
|
+
|
|
29
|
+
match = value.to_s.strip.match(PARSE_PATTERN)
|
|
30
|
+
unless match
|
|
31
|
+
raise ArgumentError,
|
|
32
|
+
"Invalid pitch: #{value.inspect} " \
|
|
33
|
+
'(expected e.g. "C3", "F#4")'
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
new(NoteName.parse(match[1]), Integer(match[2]))
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# 60 => C4. Prefer :sharps (default) or :flats for black keys.
|
|
40
|
+
def self.from_midi(midi, prefer: :sharps)
|
|
41
|
+
note = NoteName.for_pitch_class(midi, prefer: prefer)
|
|
42
|
+
new(note, (midi / Interval::SEMITONES_PER_OCTAVE) - 1)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# The pitch that *writes* as note_name and *sounds* at midi - the
|
|
46
|
+
# inverse of #midi for a chosen spelling. The written octave follows
|
|
47
|
+
# the letter, so Cb sounding at 59 is Cb4 (not B3), and B# sounding
|
|
48
|
+
# at 60 is B#3.
|
|
49
|
+
def self.sounding(note_name, midi)
|
|
50
|
+
note_name = NoteName.parse(note_name)
|
|
51
|
+
octave =
|
|
52
|
+
((midi - note_name.accidental_offset) /
|
|
53
|
+
Interval::SEMITONES_PER_OCTAVE) - 1
|
|
54
|
+
|
|
55
|
+
new(note_name, octave)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# Takes a NoteName (or anything it parses) and a written octave.
|
|
59
|
+
# Instances are immutable.
|
|
60
|
+
def initialize(note_name, octave)
|
|
61
|
+
@note_name = NoteName.parse(note_name)
|
|
62
|
+
@octave = Integer(octave)
|
|
63
|
+
freeze
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
# 'C4' => 60, 'F#3' => 54, 'Fb4' => 64, 'Cb4' => 59, 'B#3' => 60
|
|
67
|
+
def midi
|
|
68
|
+
(octave + 1) * Interval::SEMITONES_PER_OCTAVE +
|
|
69
|
+
note_name.letter_natural_midi_offset
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
# Sounding pitch class, 0-11, so Cb4 and B3 both give 11.
|
|
73
|
+
def pitch_class
|
|
74
|
+
midi % Interval::SEMITONES_PER_OCTAVE
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
# A new Pitch this many semitones away, respelled from midi - the
|
|
78
|
+
# original spelling is not preserved.
|
|
79
|
+
def transpose(semitones, prefer: :sharps)
|
|
80
|
+
self.class.from_midi(midi + semitones, prefer: prefer)
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
# As written, e.g. "F#3"
|
|
84
|
+
def to_s
|
|
85
|
+
"#{note_name}#{octave}"
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
# Shows both the spelling and what it sounds as
|
|
89
|
+
def inspect
|
|
90
|
+
"#<#{self.class.name} #{self} midi=#{midi}>"
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
# Equality is by spelling, not sound: Cb4 != B3.
|
|
94
|
+
def ==(other)
|
|
95
|
+
other.is_a?(self.class) &&
|
|
96
|
+
note_name == other.note_name &&
|
|
97
|
+
octave == other.octave
|
|
98
|
+
end
|
|
99
|
+
alias eql? ==
|
|
100
|
+
|
|
101
|
+
# Hashes on spelling too, to stay consistent with #eql?
|
|
102
|
+
def hash
|
|
103
|
+
[ note_name, octave ].hash
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
# Sounding-pitch comparison (Cb4 == B3).
|
|
107
|
+
def <=>(other)
|
|
108
|
+
midi <=> other.midi
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
end
|
|
@@ -0,0 +1,338 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module OutroRails
|
|
4
|
+
module Theory
|
|
5
|
+
# A scale: a root NoteName plus a named pattern. Not persisted - scales
|
|
6
|
+
# are generated on demand from the pattern table.
|
|
7
|
+
#
|
|
8
|
+
# Theory::Scale.new('A', :natural_minor).note_names.map(&:to_s)
|
|
9
|
+
# # => ['A', 'B', 'C', 'D', 'E', 'F', 'G']
|
|
10
|
+
class Scale
|
|
11
|
+
# Each degree is [semitones above root, letter steps above root].
|
|
12
|
+
# Carrying the letter step makes spelling unambiguous (F# major gets
|
|
13
|
+
# E#, not F; G# major gets F#).
|
|
14
|
+
PATTERNS = {
|
|
15
|
+
major: [ [ 0, 0 ], [ 2, 1 ], [ 4, 2 ], [ 5, 3 ], [ 7, 4 ], [ 9, 5 ], [ 11, 6 ] ],
|
|
16
|
+
natural_minor: [ [ 0, 0 ], [ 2, 1 ], [ 3, 2 ], [ 5, 3 ], [ 7, 4 ], [ 8, 5 ], [ 10, 6 ] ],
|
|
17
|
+
harmonic_minor: [ [ 0, 0 ], [ 2, 1 ], [ 3, 2 ], [ 5, 3 ], [ 7, 4 ], [ 8, 5 ], [ 11, 6 ] ],
|
|
18
|
+
melodic_minor: [ [ 0, 0 ], [ 2, 1 ], [ 3, 2 ], [ 5, 3 ], [ 7, 4 ], [ 9, 5 ], [ 11, 6 ] ],
|
|
19
|
+
major_pentatonic: [ [ 0, 0 ], [ 2, 1 ], [ 4, 2 ], [ 7, 4 ], [ 9, 5 ] ],
|
|
20
|
+
minor_pentatonic: [ [ 0, 0 ], [ 3, 2 ], [ 5, 3 ], [ 7, 4 ], [ 10, 6 ] ],
|
|
21
|
+
major_blues: [ [ 0, 0 ], [ 2, 1 ], [ 3, 2 ], [ 4, 2 ], [ 7, 4 ], [ 9, 5 ] ],
|
|
22
|
+
minor_blues: [ [ 0, 0 ], [ 3, 2 ], [ 5, 3 ], [ 6, 4 ], [ 7, 4 ], [ 10, 6 ] ],
|
|
23
|
+
# Modes of the major scale (ionian == major, aeolian == natural_minor).
|
|
24
|
+
dorian: [ [ 0, 0 ], [ 2, 1 ], [ 3, 2 ], [ 5, 3 ], [ 7, 4 ], [ 9, 5 ], [ 10, 6 ] ],
|
|
25
|
+
phrygian: [ [ 0, 0 ], [ 1, 1 ], [ 3, 2 ], [ 5, 3 ], [ 7, 4 ], [ 8, 5 ], [ 10, 6 ] ],
|
|
26
|
+
lydian: [ [ 0, 0 ], [ 2, 1 ], [ 4, 2 ], [ 6, 3 ], [ 7, 4 ], [ 9, 5 ], [ 11, 6 ] ],
|
|
27
|
+
mixolydian: [ [ 0, 0 ], [ 2, 1 ], [ 4, 2 ], [ 5, 3 ], [ 7, 4 ], [ 9, 5 ], [ 10, 6 ] ],
|
|
28
|
+
locrian: [ [ 0, 0 ], [ 1, 1 ], [ 3, 2 ], [ 5, 3 ], [ 6, 4 ], [ 8, 5 ], [ 10, 6 ] ]
|
|
29
|
+
}.freeze
|
|
30
|
+
|
|
31
|
+
# The minor-family patterns; all share the same relative major.
|
|
32
|
+
MINOR_PATTERNS = %i[natural_minor harmonic_minor melodic_minor].freeze
|
|
33
|
+
|
|
34
|
+
# Degree of the parent major scale each mode starts on (dorian is
|
|
35
|
+
# built on the 2nd degree, and so on).
|
|
36
|
+
MODE_PARENT_DEGREES = {
|
|
37
|
+
dorian: 2,
|
|
38
|
+
phrygian: 3,
|
|
39
|
+
lydian: 4,
|
|
40
|
+
mixolydian: 5,
|
|
41
|
+
locrian: 7
|
|
42
|
+
}.freeze
|
|
43
|
+
|
|
44
|
+
# A triad built on a scale degree, with its display forms.
|
|
45
|
+
DiatonicChord = Struct.new(:degree,
|
|
46
|
+
:root,
|
|
47
|
+
:quality,
|
|
48
|
+
keyword_init: true) do
|
|
49
|
+
# The chord symbol, e.g. "Dm"
|
|
50
|
+
def symbol
|
|
51
|
+
ChordVocabulary.symbol(root_name: root, quality: quality)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# URL slug matching Chord#slug in the chord library.
|
|
55
|
+
def slug
|
|
56
|
+
ChordVocabulary.slug(symbol)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# Whether the chord library has this root - the app only generates
|
|
60
|
+
# chords for NoteName::CANONICAL_ROOTS, so degrees spelled with
|
|
61
|
+
# double accidentals or E#/B#-style names (F# major's E#dim) have
|
|
62
|
+
# no library page to link to.
|
|
63
|
+
def in_library?
|
|
64
|
+
NoteName::CANONICAL_ROOTS.include?(root.to_s)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
# Key-agnostic arabic form, e.g. "2m"
|
|
68
|
+
def nashville
|
|
69
|
+
NashvilleNumber.format(degree: degree, quality: quality)
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
# Key-agnostic roman form, e.g. "ii"
|
|
73
|
+
def roman
|
|
74
|
+
NashvilleNumber.roman(degree: degree, quality: quality)
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
# The tonic NoteName and the pattern key it was built with
|
|
79
|
+
attr_reader :root, :pattern_name
|
|
80
|
+
|
|
81
|
+
# Whether a pattern by this name exists, for validating user input
|
|
82
|
+
def self.pattern?(name)
|
|
83
|
+
PATTERNS.key?(name.to_s.to_sym)
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
# Parses the root and validates the pattern name up front, so an
|
|
87
|
+
# unknown scale raises here rather than on first use.
|
|
88
|
+
def initialize(root, pattern_name = :major)
|
|
89
|
+
@root = NoteName.parse(root)
|
|
90
|
+
@pattern_name = pattern_name.to_sym
|
|
91
|
+
PATTERNS.fetch(@pattern_name) do
|
|
92
|
+
raise ArgumentError, "unknown scale #{pattern_name.inspect}"
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
# The [semitones, letter steps] pairs for this scale
|
|
97
|
+
def pattern
|
|
98
|
+
PATTERNS.fetch(pattern_name)
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
# URL segment for the pattern, e.g. :major_blues => 'major-blues'
|
|
102
|
+
def slug
|
|
103
|
+
pattern_name.to_s.tr("_", "-")
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
# Semitones above the root, one per degree
|
|
107
|
+
def intervals
|
|
108
|
+
pattern.map(&:first)
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
# Number of degrees - 7 for the diatonic patterns, fewer otherwise
|
|
112
|
+
def size
|
|
113
|
+
pattern.size
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
# Spelled notes, one per degree.
|
|
117
|
+
def note_names
|
|
118
|
+
pattern.map { |semitones, steps| root.at_degree(semitones, steps) }
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
# Sounding pitch classes, 0-11, ignoring spelling
|
|
122
|
+
def pitch_classes
|
|
123
|
+
intervals.map do |i|
|
|
124
|
+
(root.pitch_class + i) % Interval::SEMITONES_PER_OCTAVE
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
# Whether a note belongs to the scale, compared by sound so
|
|
129
|
+
# enharmonics match (Gb counts in a scale spelling F#).
|
|
130
|
+
def include?(note)
|
|
131
|
+
pitch_classes.include?(NoteName.parse(note).pitch_class)
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
# 1-based scale degree => NoteName ("what's the 5th of D major?").
|
|
135
|
+
def degree(number)
|
|
136
|
+
note_names.fetch(number - 1) do
|
|
137
|
+
message =
|
|
138
|
+
"degree #{number} out of range for " \
|
|
139
|
+
"#{pattern_name} (1..#{size})"
|
|
140
|
+
|
|
141
|
+
raise ArgumentError, message
|
|
142
|
+
end
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
# Net accidentals across the spelled scale; negative leans flat.
|
|
146
|
+
# (Not a key signature: A harmonic minor scores +1 for its G#, and
|
|
147
|
+
# pentatonic/blues scales have no key signature at all - Key#signature
|
|
148
|
+
# is the key-signature reading of this number.)
|
|
149
|
+
def net_accidentals
|
|
150
|
+
note_names.sum(&:accidental_offset)
|
|
151
|
+
end
|
|
152
|
+
alias signature net_accidentals
|
|
153
|
+
|
|
154
|
+
# :flats or :sharps - the spelling that matches this scale, for
|
|
155
|
+
# naming pitches the scale itself doesn't spell (display padding,
|
|
156
|
+
# fretboard labels).
|
|
157
|
+
def preferred_accidentals
|
|
158
|
+
net_accidentals.negative? ? :flats : :sharps
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
# True only for the major pattern itself, not its modes.
|
|
162
|
+
def major?
|
|
163
|
+
pattern_name == :major
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
# True for the minor-family patterns (natural, harmonic, melodic).
|
|
167
|
+
def minor?
|
|
168
|
+
MINOR_PATTERNS.include?(pattern_name)
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
# True for the named modes of the major scale (excluding major itself
|
|
172
|
+
# and natural minor, which the app treats as keys in their own right).
|
|
173
|
+
# Named to avoid colliding with Key#mode, which means major/minor
|
|
174
|
+
# tonality, not a church mode.
|
|
175
|
+
def church_mode?
|
|
176
|
+
MODE_PARENT_DEGREES.key?(pattern_name)
|
|
177
|
+
end
|
|
178
|
+
alias mode? church_mode?
|
|
179
|
+
|
|
180
|
+
# True when the scale supports stacked-third diatonic triads (any
|
|
181
|
+
# seven-note pattern; pentatonic and blues scales don't).
|
|
182
|
+
def diatonic_chords?
|
|
183
|
+
size == 7
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
# The natural minor sharing this major's notes - built on the 6th
|
|
187
|
+
# degree, so the spelling is inherited from the scale itself:
|
|
188
|
+
# Scale.new('C').relative_minor # => A natural minor
|
|
189
|
+
# Scale.new('Gb').relative_minor # => Eb natural minor
|
|
190
|
+
def relative_minor
|
|
191
|
+
unless major?
|
|
192
|
+
raise ArgumentError, "#{pattern_name} has no relative minor"
|
|
193
|
+
end
|
|
194
|
+
|
|
195
|
+
self.class.new(degree(6), :natural_minor)
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
# All three minor forms on the relative tonic (natural, harmonic,
|
|
199
|
+
# melodic) - the inverse of #relative_major.
|
|
200
|
+
def relative_minors
|
|
201
|
+
tonic = relative_minor.root
|
|
202
|
+
MINOR_PATTERNS.map { |pattern| self.class.new(tonic, pattern) }
|
|
203
|
+
end
|
|
204
|
+
|
|
205
|
+
# The major key sharing this minor's tonality - a minor third above
|
|
206
|
+
# the root, correctly spelled:
|
|
207
|
+
# Scale.new('A', :natural_minor).relative_major # => C major
|
|
208
|
+
# Scale.new('Eb', :harmonic_minor).relative_major # => Gb major
|
|
209
|
+
def relative_major
|
|
210
|
+
unless minor?
|
|
211
|
+
raise ArgumentError, "#{pattern_name} has no relative major"
|
|
212
|
+
end
|
|
213
|
+
|
|
214
|
+
self.class.new(root.at_degree(Interval::MINOR_THIRD, 2), :major)
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
# The major scale a mode is drawn from, correctly spelled:
|
|
218
|
+
# Scale.new('C', :dorian).parent_major # => Bb major
|
|
219
|
+
# Scale.new('F#', :lydian).parent_major # => C# major
|
|
220
|
+
def parent_major
|
|
221
|
+
degree = MODE_PARENT_DEGREES.fetch(pattern_name) do
|
|
222
|
+
raise ArgumentError,
|
|
223
|
+
"#{pattern_name} is not a mode of the major scale"
|
|
224
|
+
end
|
|
225
|
+
|
|
226
|
+
# The mode root sits `semitones`/`steps` above its parent tonic, so
|
|
227
|
+
# the tonic is the complementary degree *up* from the root.
|
|
228
|
+
semitones, steps = PATTERNS.fetch(:major)[degree - 1]
|
|
229
|
+
|
|
230
|
+
semitone_offset =
|
|
231
|
+
(Interval::SEMITONES_PER_OCTAVE - semitones) %
|
|
232
|
+
Interval::SEMITONES_PER_OCTAVE
|
|
233
|
+
|
|
234
|
+
step_offset =
|
|
235
|
+
(NoteName::LETTERS_PER_OCTAVE - steps) %
|
|
236
|
+
NoteName::LETTERS_PER_OCTAVE
|
|
237
|
+
|
|
238
|
+
tonic = root.at_degree(semitone_offset, step_offset)
|
|
239
|
+
|
|
240
|
+
self.class.new(tonic, :major)
|
|
241
|
+
end
|
|
242
|
+
|
|
243
|
+
# The named modes built on this major scale's degrees, in degree
|
|
244
|
+
# order (dorian on the 2nd, and so on) - the inverse of
|
|
245
|
+
# #parent_major:
|
|
246
|
+
# Scale.new('C').modes.map(&:to_s)
|
|
247
|
+
# # => ['D dorian', 'E phrygian', 'F lydian', 'G mixolydian',
|
|
248
|
+
# # 'B locrian']
|
|
249
|
+
def modes
|
|
250
|
+
unless major?
|
|
251
|
+
raise ArgumentError, "modes are derived from a major scale"
|
|
252
|
+
end
|
|
253
|
+
|
|
254
|
+
MODE_PARENT_DEGREES.map do |pattern, degree_number|
|
|
255
|
+
self.class.new(degree(degree_number), pattern)
|
|
256
|
+
end
|
|
257
|
+
end
|
|
258
|
+
|
|
259
|
+
# The triad on each degree, built by stacking alternate scale notes
|
|
260
|
+
# (1-3-5 within the scale). Works for any seven-note pattern, so
|
|
261
|
+
# modes and the altered minors get correct qualities (harmonic minor
|
|
262
|
+
# yields a major V and an augmented III):
|
|
263
|
+
# Scale.new('C').diatonic_chords.map(&:symbol)
|
|
264
|
+
# # => ['C', 'Dm', 'Em', 'F', 'G', 'Am', 'Bdim']
|
|
265
|
+
def diatonic_chords
|
|
266
|
+
unless diatonic_chords?
|
|
267
|
+
raise ArgumentError,
|
|
268
|
+
"no diatonic chords for #{pattern_name} " \
|
|
269
|
+
"(needs a seven-note scale)"
|
|
270
|
+
end
|
|
271
|
+
|
|
272
|
+
names = note_names
|
|
273
|
+
|
|
274
|
+
(1..size).map do |degree|
|
|
275
|
+
chord_root = names[degree - 1]
|
|
276
|
+
third = names[(degree + 1) % size]
|
|
277
|
+
fifth = names[(degree + 3) % size]
|
|
278
|
+
|
|
279
|
+
third_interval =
|
|
280
|
+
(third.pitch_class - chord_root.pitch_class) %
|
|
281
|
+
Interval::SEMITONES_PER_OCTAVE
|
|
282
|
+
|
|
283
|
+
fifth_interval =
|
|
284
|
+
(fifth.pitch_class - chord_root.pitch_class) %
|
|
285
|
+
Interval::SEMITONES_PER_OCTAVE
|
|
286
|
+
|
|
287
|
+
intervals = [
|
|
288
|
+
0,
|
|
289
|
+
third_interval,
|
|
290
|
+
fifth_interval
|
|
291
|
+
]
|
|
292
|
+
|
|
293
|
+
quality = ChordVocabulary::QUALITIES.key(intervals)
|
|
294
|
+
unless quality
|
|
295
|
+
raise ArgumentError,
|
|
296
|
+
"no triad quality for intervals #{intervals.inspect} on " \
|
|
297
|
+
"degree #{degree} of #{self}"
|
|
298
|
+
end
|
|
299
|
+
|
|
300
|
+
DiatonicChord.new(degree: degree, root: chord_root, quality: quality)
|
|
301
|
+
end
|
|
302
|
+
end
|
|
303
|
+
|
|
304
|
+
# Diatonic triad quality for a 1-based degree, derived from the
|
|
305
|
+
# stacked-third triads (any seven-note pattern).
|
|
306
|
+
def diatonic_quality(number)
|
|
307
|
+
diatonic_chords.fetch(number - 1) do
|
|
308
|
+
raise ArgumentError,
|
|
309
|
+
"degree #{number} out of range for #{pattern_name} (1..#{size})"
|
|
310
|
+
end.quality
|
|
311
|
+
end
|
|
312
|
+
|
|
313
|
+
# Pitches for rendering on a keyboard: the scale laid out
|
|
314
|
+
# ascending from the root, spanning `octaves` octaves plus the top
|
|
315
|
+
# root. Written octaves follow the letter (a Cb is written in the
|
|
316
|
+
# octave above the B it sounds as).
|
|
317
|
+
def pitched_notes(start_octave: 4, octaves: 1)
|
|
318
|
+
root_midi = Pitch.new(root, start_octave).midi
|
|
319
|
+
names = note_names
|
|
320
|
+
|
|
321
|
+
pitches = octaves.times.flat_map do |octave|
|
|
322
|
+
pattern.each_with_index.map do |(semitones, _), index|
|
|
323
|
+
Pitch.sounding(names[index],
|
|
324
|
+
root_midi + (octave * Interval::OCTAVE) + semitones)
|
|
325
|
+
end
|
|
326
|
+
end
|
|
327
|
+
|
|
328
|
+
pitches << Pitch.sounding(root,
|
|
329
|
+
root_midi + (octaves * Interval::OCTAVE))
|
|
330
|
+
end
|
|
331
|
+
|
|
332
|
+
# Display name, e.g. "A natural minor"
|
|
333
|
+
def to_s
|
|
334
|
+
"#{root} #{pattern_name.to_s.tr('_', ' ')}"
|
|
335
|
+
end
|
|
336
|
+
end
|
|
337
|
+
end
|
|
338
|
+
end
|