1j01 / guitar

🎸 Online guitar toy and tablature recorder/player
https://1j01.github.io/guitar/
MIT License
109 stars 18 forks source link
app editor guitar html5 javascript midi music scales synth synthesizer tablature tablature-parser tabs toy tuna web-app

Guitar

It's a virtual guitar record-a-synthesize-amatronic web application.

Demo animation

Try it out here.

You can copy and paste entire webpages containing guitar tabs and it'll try to load all it can.

Play back notes by pressing "almost any" key (at least on US keyboards), with the fretboard focused (or no control focused). You can rock back and forth between different fingers on different keys, or just pick one, whatever feels natural.

Record notes by clicking on the fretboard. Secondary click is a shortcut to an open string. You can do this easily in real life from any position, so it makes sense to be able to do it from any position on the virtual guitar too. Tertiary mouse button (middle mouse button) does a bend, although bends are not recorded yet. Timing is also not recorded yet. So it's not very useful for recording tabs, although you could certainly use it as an interactive chart at least.

You can choose any scale to highlight, a feature I first implemented in Tri-Chromatic Keyboard. It should be much more useful here, since you can learn how to play the guitar with it! (as opposed to an instrument that virtually no-one has, including me)


Uses tuna audio effects library. The guitar synthesis algorithm is from guitar-synth.

The tablature parser created for the app is available separately as a module here.

Development

npm install
npm run watch
npx live-server

The watch task compiles CoffeeScript when it changes.

live-server is a web server that reloads the page when files change. You can use any web server, alternatively.

Deployment

This app is deployed to GitHub Pages using the gh-pages module.

npm run build
npm run deploy

TODO