paulrosen / abcjs

javascript for rendering abc music notation

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Feature request: Ability to use tablature as another type of "staff".

abalter opened this issue · comments

Thank you for implementing/incorporating tablature! I would like to be able to have a staff of notation, say a melody, and a staff of guitar tablature below it for the accompaniment. Here is an example from a book on Celtic rhythm guitar by John Doyle.

image

That's interesting. You should be able to do it by leaving the first definition blank, but I see there is a bug where that isn't working at the moment. I'll have that fixed by v6.2.4. This is what should have worked:

        tablature: [
          { instrument: "" },
          {
              instrument: 'guitar',
              tuning: ['D,', 'A,', 'D', 'G', 'A', 'd'],
          }
        ]

In the meantime, a work around is to have tab on the top also, with:

        tablature: [
          { instrument: "violin" },
          {
              instrument: 'guitar',
              tuning: ['D,', 'A,', 'D', 'G', 'A', 'd'],
          }
        ]

I think it's a shame that tablature doesn't seem to be respected as a notation system. Maybe it is because it is too specific in the sense that standard notation is agnostic to the musical instrument, making the notated music itself somewhat more pure. I get that.

But perhaps it's a keyboard-centric view. On instruments where the player has freedom to produce a given note in different ways, that choice has musical implications, and that makes instrument-specific tablature more rich, even while being more prescriptive.

Wim Vree has proposed an ABC syntax for tablature as well as other extensions (more examples here). However, in that system, you input notes which are converted to tab. I suppose that is consistent with the idea of inputting a note and it being displayed on whichever staff is specified for that voice.

It really would be great to be able to have ABC markup for tablature that could be displayed as written. VexTab allows multiple methods (e.g. note/octave, fret/string, ...). AlphaTab uses fret.string.duration. The current ABC standard doesn't have a way to notate string bending, hammer-on, pull-off, etc.

I'm fairly surprised that my moderate web searching did not find more work in this area.