Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Contribution offer: Chord diagrams for guitar #85

Open
thaen opened this issue Mar 30, 2023 · 1 comment
Open

Contribution offer: Chord diagrams for guitar #85

thaen opened this issue Mar 30, 2023 · 1 comment
Labels
discussion Topics for discussion

Comments

@thaen
Copy link

thaen commented Mar 30, 2023

I'm learning to play guitar and I now have a rather large number of chords to learn. I started writing a thing to randomly generate chords and show me the tab diagrams, but then I figured someone probably already did.

I found FlashChord and the only thing that would make it better is to add chord diagrams. There are a few JS libraries that will do this (I thought https://github.com/0xfe/vexchords looked good). Your About page says you'd prefer to collaborate before it's time for a pull request, so I figured I'd reach out here. I'd like to write the feature. I'm normally a Java and Python guy, so if you have a particular build and deployment workflow that works for you, I'd need to understand it.

@KCarlile
Copy link
Owner

KCarlile commented Apr 3, 2023

Hey, @thaen! Thanks for reaching out. vexchords looks interesting. I have a couple thoughts about this:

  1. I'm in the process (active off and on) of rearchitecting Flash Chord to make the code more modular and easier to follow. I'm juggling some other things, so it's not my focus right now, but I need to finish the rearchitecture before adding any new features.
  2. I have mixed feelings about adding chord diagrams for guitar for a couple of reasons. It's a cool idea, however...
    • I want Flash Chord to work for all instruments, not just guitar, so I don't want to make it too guitar-centric.
    • I don't want to be too prescriptive about how people should play along with the chords provided. That is, you wouldn't want to be playing a chord up the neck and then be suddenly directed to shift to a chord down by the nut. The player should determine which chord shape makes sense to play next.
      • If I'm playing a D13 up on the 10th fret, I wouldn't want the next Gmaj7 to be down by the nut, but rather the root-6 Gmaj7 on the 10th fret.

However, I certainly don't want to discourage learning and contribution, so I'd suggest that you fork the project and work on this in parallel. If you come up with some great design solutions for how to make chord shape suggestions unobtrusive for non-guitarists in a way that makes sense for neck position, I'd love to see it. Here are some points for acceptance criteria that I'd like to see:

Acceptance Criteria

  • Guitar chord diagrams are disabled by default (for non-guitar instruments) but can be enabled via the UI
  • Suggested chord shapes make sense for position on the neck*
  • Guitar chord shapes are available all of the chords suggested by Flash Chord*

Notes

*One option to make this a lot more simple is to limit the chord types and position for chord suggestions, such as chord diagrams only work for Major, Minor, Dominant 7, Major 7, Minor 7, Diminished, Diminished 7, Half-diminished (m7b5) chords in the first position. Another option might be to have a second parameter to specify the area of the neck (1-5 fret position, 5-10 fret position, 8-12 fret position, etc.).

I don't have a great build and deployment workflow right now, but I'm hoping to improve that with the rearchitecture. Don't worry about deployment for now. Just see if you can get this working in your fork and then we can see how it might fit into the v2 rearchitecture. If you want to use my local development Docker config that I've started using, I've just committed the files here: e04c141

Thanks again for your interest! :)

@KCarlile KCarlile added the discussion Topics for discussion label Apr 4, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
discussion Topics for discussion
Projects
None yet
Development

No branches or pull requests

2 participants