GithubHelp home page GithubHelp logo

jzohrab / tabbyhack Goto Github PK

View Code? Open in Web Editor NEW
8.0 3.0 0.0 1.88 MB

Work-in-progress/prototype - a hack transcriber to generate rough guitar tab from audio input

HTML 16.18% JavaScript 76.90% CSS 6.93%
guitar-tablature

tabbyhack's Introduction

Tabbyhack -- alpha release

Demo is running at https://jzohrab.github.io/tabbyhack/

A work-in-progress tool to generate guitar TAB from audio input. This could be useful for teachers and guitar hackers to get quick TAB snippets.

Visit its site and click start, allow mic access, and start playing -- slowly, and only a single note at a time (no chords). It will generate some candidate TAB, after which you can select the notes you really want, and export ascii TAB. It also generates simple tab notation using Vextab (https://github.com/0xfe/vextab)

Demos

Quick gif demo:

Sample output, generated by going to https://jzohrab.github.io/tabbyhack/, clicking 'Start', and playing some notes on the guitar:

README demo

Explanation:

  • I start the app, and play some notes on the guitar. Tabbyhack fills in candidate tab entries for the strings (e.g., the third note, E-flat, can be played on the 11th fret low E, 6th fret A, and 1st fret D string).
  • I stop the app, and use the cursor keys to select the notes that I actually want to use. As the cursor moves, it leaves a "trail" of green squares that indicate the notes I've selected.
  • When I'm done, I click "Write tab", and the tab gets written. I can verify and edit it using the keyboard again.
  • "Copy" copies the ascii tab to the clipboard.

Not shown in the demo:

  • Making chords (possible, but you have to play each note separately, and then indicate them when navigating with the keyboard)
  • Toggling the cursor to active/inactive state (useful for moving around the tab without changing anything)

Devs can also run the site locally, see "Development" below.

YouTube

See the not-super-slick video at https://youtu.be/K6aIzLHKdnU .

Future work (?)

This is a basic tool -- it's not a fully functional tab solution -- but it's still pretty useful. It will never be a full tabber, that's not the intent. Possible improvements:

  • add vexflow export (ref https://groups.google.com/g/vexflow/c/9di-x3ASLd0/m/XTB4l-_6AgAJ)
  • edit the tab, removing bad notes etc
  • low priority: output raw data in some other form so it can be imported into other software (?)
  • low priority for me, but maybe fun: styling & make it pretty
  • allow for different guitar tunings, tab for out-of-tune guitars, etc
  • this could be easily generalized to all fretted instruments (provided the mic can differentiate the sound)

Development

Overview

This project uses:

  • Parcel for bundling the Javascript
  • Tape for unit tests
  • Aubiojs for js audio processing

Requirements

node - v14.16.0 npm - 6.14.11

I haven't tried other versions, but the above worked for me on my Mac.

Getting started

git clone <this repo>
cd <repo path>
npm install

# Build and start the local Parcel server
npm start

# Then go to the local address it tells you

Running tests

npm run test

Misc dev notes

  • The vexflow library is included in deployment (in npm run copyassets). I'm using the div.dev.js release file, because Parcel didn't seem to like the minified div.prod.js (raised errors during build).

Contributing

Contributions would be super if it makes this more useful and interesting.

Fork; clone; make you changes and be sure to run npm run test; PR back to main.

Deployment

To github pages

After running tests, and checking the local site with npm start, we can deploy this automatically to a github pages repo by having everything deployed to docs. See ref https://www.sitepoint.com/parcel-hyperapp-github-pages/

npm run deploy builds, commits, and pushes. GH pages take a few moments to update.

Licensing

TODO - should be free and open. Have to set the licensing correctly to account for the open-source elements that are included (aubio)

tabbyhack's People

Contributors

jzohrab avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.