parser

@tabkit/parser

Parse ASCII tablature and MusicXML into tabkit-compatible TabMeasure arrays.

ASCII Tab Parser

Paste or edit ASCII tablature below. The parser converts it in real-time. Supports techniques: h (hammer), p (pull), / (slide), b (bend), ~ (vibrato).

Tablature for guitar, 1 measure6-string guitar tablature. Measure 1: chord: string 1 fret 0, string 2 fret 1, string 3 fret 0, string 4 fret 2, string 5 fret 3, string 6 fret 0; chord: string 1 fret 1, string 2 fret 1, string 3 fret 2, string 4 fret 3, string 5 fret 3, string 6 fret 1; chord: string 1 fret 3, string 2 fret 0, string 3 fret 0, string 4 fret 0, string 5 fret 2, string 6 fret 3; chord: string 1 fret 1, string 2 fret 1, string 3 fret 2, string 4 fret 3, string 5 fret 3, string 6 fret 1; chord: string 1 fret 0, string 2 fret 1, string 3 fret 0, string 4 fret 2, string 5 fret 3, string 6 fret 0.EBGDAE010230112331300023112331010230
import { parseAsciiTab } from "@tabkit/parser";
import { TabRenderer } from "@tabkit/core";

const measures = parseAsciiTab(`
e|---0---1---3---1---0---|
B|---1---1---0---1---1---|
G|---0---2---0---2---0---|
D|---2---3---0---3---2---|
A|---3---3---2---3---3---|
E|---x---1---3---1---x---|`);

const svg = TabRenderer.svg({
  measures,
  instrument: "guitar",
  theme: "light",
  width: 900,
  showTuning: true,
});
View parsed JSON (1 measures)
[
  {
    "beats": [
      [
        {
          "string": 1,
          "fret": 0,
          "duration": "8n"
        },
        {
          "string": 2,
          "fret": 1,
          "duration": "8n"
        },
        {
          "string": 3,
          "fret": 0,
          "duration": "8n"
        },
        {
          "string": 4,
          "fret": 2,
          "duration": "8n"
        },
        {
          "string": 5,
          "fret": 3,
          "duration": "8n"
        },
        {
          "string": 6,
          "fret": 0,
          "duration": "8n",
          "technique": "mute"
        }
      ],
      [
        {
          "string": 1,
          "fret": 1,
          "duration": "8n"
        },
        {
          "string": 2,
          "fret": 1,
          "duration": "8n"
        },
        {
          "string": 3,
          "fret": 2,
          "duration": "8n"
        },
        {
          "string": 4,
          "fret": 3,
          "duration": "8n"
        },
        {
          "string": 5,
          "fret": 3,
          "duration": "8n"
        },
        {
          "string": 6,
          "fret": 1,
          "duration": "8n"
        }
      ],
      [
        {
          "string": 1,
          "fret": 3,
          "duration": "8n"
        },
        {
          "string": 2,
          "fret": 0,
          "duration": "8n"
        },
        {
          "string": 3,
          "fret": 0,
          "duration": "8n"
        },
        {
          "string": 4,
          "fret": 0,
          "duration": "8n"
        },
        {
          "string": 5,
          "fret": 2,
          "duration": "8n"
        },
        {
          "string": 6,
          "fret": 3,
          "duration": "8n"
        }
      ],
      [
        {
          "string": 1,
          "fret": 1,
          "duration": "8n"
        },
        {
          "string": 2,
          "fret": 1,
          "duration": "8n"
        },
        {
          "string": 3,
          "fret": 2,
          "duration": "8n"
        },
        {
          "string": 4,
          "fret": 3,
          "duration": "8n"
        },
        {
          "string": 5,
          "fret": 3,
          "duration": "8n"
        },
        {
          "string": 6,
          "fret": 1,
          "duration": "8n"
        }
      ],
      [
        {
          "string": 1,
          "fret": 0,
          "duration": "8n"
        },
        {
          "string": 2,
          "fret": 1,
          "duration": "8n"
        },
        {
          "string": 3,
          "fret": 0,
          "duration": "8n"
        },
        {
          "string": 4,
          "fret": 2,
          "duration": "8n"
        },
        {
          "string": 5,
          "fret": 3,
          "duration": "8n"
        },
        {
          "string": 6,
          "fret": 0,
          "duration": "8n",
          "technique": "mute"
        }
      ]
    ]
  }
]

API Quick Reference

NameDescription
parseAsciiTab(input, opts?)Parse ASCII tab string into measures
parseMusicXML(xml, opts?)Parse MusicXML string into measures
opts.defaultDurationDefault note duration (default: "8n")
opts.tuningCustom string tuning order
opts.maxMeasuresLimit parsed measures (MusicXML)