This project came from my attempts to transcribe guitar songs as NES chiptunes in FamiStudio. For these guitar songs, I wanted to create arpeggios similar to MOON8. I wanted to be able to put the root in FamiStudio and have it play the arpeggio of the appropriate guitar chord. But figuring out the numbers for FamiStudio to play each chord took several minutes of actual work and could be wrong because I am very bad at math. Obviously, a problem such as this could only be addressed with a hyper-autistic ridiculously over-engineered solution!
I could have just made it a simple Python script and that would have been good enough just for me to use personally but making this for the web seemed like a good opportunity to learn a little bit about what counts as "modern" web development ("modern" for all of the next five minutes) and also I wanted it to work on my phone and tablet, including offline. So I made it into a progressive web app and hosted it for free on Github Pages. It is my first "modern" web app. -- Ben McLean (mclean.ben at the big mail of google)
Go to https://benmclean.github.io/Chord2Arpeggio/ and choose a chord, either by shape with the radio buttons or by name with the dropdowns. The numbers that this app outputs will play the appropriate chord in FamiStudio when they are used for an arpeggio played on the chord's root note.
- npm:
- ViteJS with the react-ts template from create-vite.
- vite-plugin-pwa to make it work offline.
- ViteJS with the react-ts template from create-vite.
- Guitar Chords finger positions Data Set which I converted directly to JSON for this. Doing that tripled the file size but whatever. WARNING: If you use that data set for anything, be aware that the
FINGER_POSITIONS
column tells you its creator's totally subjective personal opinion about which finger to use, not which fret makes the chord. SoFINGER_POSITIONS
actually is only good for telling you whether the string is closed or not. Fret numbers for played strings have to be converted from theNOTE_NAMES
column.