A small tool to generate TAB from playing guitar

Hey all,

I wrote a small tool to gen tab from the guitar using your computer’s mic. It’s called Tabbyhack. It’s running at https://jzohrab.github.io/tabbyhack/

Demo:

Copying from that video’s description:

I don’t know about you, but I really don’t like writing TAB. I find it tedious – I’ve used some tabbing products, but all I wanted was to play and have the computer make tabs for me. Hence Tabbyhack – it’s not perfect, but it’s good enough for simple situations. It runs in your browser, and it’s free. I figure it might be useful for teachers or guitar hackers who need some quick TAB.

I’ve only run it using my acoustic guitar, no idea if it will work for electric. But if anyone is looking for something stupidly simple like this, I present to you my stupidly simple offering.

Cheers! z


Edit - I kind of lied – it doesn’t really generate TAB, but it gives you a good boost in getting it done.

3 Likes

Tabbyhack now generates tab and notation using Vexflow! I know everyone was asking about it and couldn’t wait for it. (Kidding, I think I’ve had about zero hits on the site that aren’t me).

Carry on, I just wanted to show it to someone. :stuck_out_tongue: Cheers! jz

1 Like

Hey, that’s pretty neat! I do find guitar pro and soundslice to be pretty intuitive tab-entering programs once you spend some time with them, but I like the programming angle for sure.

This past year I’ve been doing a lot of things with tab in google sheets, but some elaborate stuff with multiple pages of formula and data to references. I’ve been wanting to turn some of them into webapps like you’ve done here

Yep, this idea seemed like it would be relatively simple to implement – a stretch for me given new tools etc, but no big deal. I really wanted to do “play-and-draft-transcribe” :slight_smile: . Of course it took longer than expected, but what the hey. Cheers! z

This is really cool man. Thanks for sharing! I can’t imagine being able to make a program like this lol I am completely technologically inept - it’s why I play so much acoustic guitar :joy: really thankful there’s people out there with the ingenuity to create tools like this. I’m gonna give it a try! Would you be able to use this to create scores/sheet music as well? I imagine it might be more straightforward given you don’t really have to worry about fretting options. But like I said before I really don’t have the first clue about how this stuff works so I could be totally off base.

I can write tabs for single note stuff without a guitar in my hands quite reliably but I suck at writing out sheet music so something that works for that too would be amazing.

Perhaps, though it’s getting out of scope for this little project :slight_smile: . With the new vextab addition, you can generate the skeleton for a score, and then use the editor (the green box) to edit it with more vextab features like slurs, picking symbols, etc. Vextab has a lot of features, see their tutorial: VexTab Tutorial

But, that work might not be good for the general case of creating sheet music, because it “locks you in” to thinking in Vextab – and there are probably some great score creation tools out there already (let me know what you use!) If you’re already using and familiar with another tabbing tool, and that tool has some kind of “import” feature, probably the best thing to do would be for me to extend tabbyhack so that you can get data that’s importable by the thing you use. It would just export something basic (like strings and frets, no timing etc), and then you’d be able to edit it in that tool that you use.

I’d briefly considered writing something that outputs MusicXML (which apparently also supports frets and strings – Tablature | MusicXML 4.0). That would be easy to add. I see that Soundslice lets you import MusicXML (Importing notation files | Soundslice help | Soundslice), would that be the best choice?

(One of the keys of software dev is keeping scope small!)

Cheers! jz

1 Like

Yeah, Soundslice’s editor seems pretty good. I’ll try adding a MusicXML export, just because it’s fun. I’ll contact Soundslice too, maybe they can take what I’ve started and integrate it in their software. Who knows.


Small limitation with soundslice XML import … since tabbyhack doesn’t know about note time durations (and I don’t think I want to add that, too much complexity for such a simple thing), it just exports one giant measure of all notes. For musicxml, I could export everything as a quarter note, say. The Soundslice editor doesn’t handle such a thing very well … while it does let you change quarter notes to eights or whatever, it doesn’t re-adjust the measure lines, so you’d end up with several bars of just one beat, and it’s not smart enough to adjust the measures. I contacted their team and they want to add that as a feature, but that’s still in the future.

So, as a workaround, I can have it export musicxml with the notes as quarter notes, which can then be imported into musescore … but you still have to do some hacky things to get the note timing right in the score! It’s not the best experience, but it’s not the worst. Another option would be for users to actually work with the notes in the vexflow editor (in the vexflow tab), adding time information for the notes and seeing that the score renders correctly. They’d just need to understand how to add that timing information (":q", “:8”, “:16” for quarter, 8th, 16 notes, respectively). eg here’s the initial output from some quick playing, everything’s a quarter:

And I add a “:16” to change the notes to 16ths.

AAAAAAAAAAAAaaaaaaand I’m a-thinkin’ that all of this is waaaaaaaaay off topic for this forum. Cheers all! z

Have you heard of ‘abc notation’? Something I’ve been having some fun with lately. There are various ‘converters’ out there, and the format is very easy to set up with formulas and tables and stuff.

http://abcnotation.com/wiki/abc:standard:v2.1

Neat, thanks! But I can’t see how to get frets/strings in that format, at least not in a way that’s comfortably obvious. :slight_smile:

If you ever want to explore it, I have formulas/tables where you can input one type (tab/strings/frets) and get the other type (abc notation) and would be happy to share. Look at us, layering niches here haha.

I also made a crude tab to staff converter thing, for one rhythmic value, like a ‘string’ of pitches. But for 99.9% of practical contexts, simply using guitar pro or soundslice works better as you just type the tab and it puts the staff notation right there.

1 Like

so this thing will tab out n isolated track solo with bends and whatnot just by playing the track into a mic?

No. Well, you could try it out and see what happens, but I’m sure it will disappoint :-). It’s good for things like tabbing our licks for students. I’ve also used it to tab out some Bach violin partitas (played slowly on guitar). And it can’t handle bends or chords either. It’s sort of a toy, but a useful toy.

Something like that would be pretty hard to do reliably. Even if it could recognize pitch extremely accurately (the note frequencies only double or half in theory per octave, the real instrument, scale length, player etc. is much more temperamental) it wouldn’t necessarily be able to tell you where on the guitar the phrase is being played. Bends, slides, other noises, would likely just confuse it. You could probably build an algorithm to tell you the most logical positioning, but even then you would have to use your best judgement. At that point, just slowing down a piece and transcribing it may take just as much time, and you develop your ears.

Yeah TAB is hard enough which reminds me of that time I got into an argument with a drummer about guitarists sight reading sheet music…for those that don’t know sheet music for drums is alot easier to read than for guitar …:slight_smile: