Skip to content

Commit

Permalink
Added README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
BenMcLean committed Apr 19, 2022
1 parent 98978f0 commit 228f13c
Showing 1 changed file with 11 additions and 0 deletions.
11 changes: 11 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# [Chord2Arpeggio](https://benmclean.github.io/Chord2Arpeggio/)
This project came from my attempts to transcribe guitar songs as [NES](https://en.wikipedia.org/wiki/Nintendo_Entertainment_System) [chiptunes](https://en.wikipedia.org/wiki/Chiptune) in [FamiStudio](https://famistudio.org/). For these guitar songs, I wanted to create [arpeggios](https://famistudio.org/doc/instruments/#editing-arpeggios) similar to [MOON8](http://rainwarrior.ca/music/moon8.html/). I wanted to be able to put the [root](https://en.wikipedia.org/wiki/Root_(chord)) in FamiStudio and have it play the arpeggio of the appropriate guitar chord. But figuring out each chord's numbers 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 (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](https://web.dev/learn/pwa/) and hosted it for free on [Github Pages](https://pages.github.com/). It is my first "modern" web app. -- Ben McLean (mclean.ben at the big mail of google)
## Usage
Go to [https://benmclean.github.io/Chord2Arpeggio/](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.
## Dependencies
* [npm](https://www.npmjs.com/):
* [ViteJS](https://vitejs.dev/) with the [react-ts template from create-vite](https://github.com/vitejs/vite/tree/main/packages/create-vite).
* [vite-plugin-pwa](https://vite-plugin-pwa.netlify.app/) to make it work offline.
* [Guitar Chords finger positions Data Set](https://archive.ics.uci.edu/ml/datasets/Guitar+Chords+finger+positions) 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 it's creator's totally subjective personal opinion about which finger to use, not which fret makes the chord. So `FINGER_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 the `NOTE_NAMES` column.

0 comments on commit 228f13c

Please sign in to comment.