{
  "slug": "guitar-tab-to-midi",
  "name": "gizza-ai/guitar-tab-to-midi",
  "version": "0.1.0",
  "title": "Guitar Tab to MIDI Converter — gizza.ai",
  "description": "Paste ASCII guitar or bass tablature and download a real Standard MIDI File — tuning presets, capo, transpose, tempo, note length and GM instrument.",
  "tags": [
    "guitar tab to midi",
    "tab to midi converter",
    "ascii tablature",
    "bass tab to midi",
    "midi file generator",
    "tab converter"
  ],
  "category": "audio",
  "urls": {
    "page": "https://gizza.ai/tools/guitar-tab-to-midi/",
    "markdown": "https://gizza.ai/tools/guitar-tab-to-midi/index.md",
    "descriptor": "https://gizza.ai/tools/guitar-tab-to-midi/tool.json",
    "deep_link_example": "https://gizza.ai/tools/guitar-tab-to-midi/?tab=e%7C-------------%7C%0AB%7C-------------%7C%0AG%7C-------------%7C%0AD%7C--2--2--5--5-%7C%0AA%7C--2--2--5--5-%7C%0AE%7C--0--0--3--3-%7C&tuning=auto&custom_tuning=D2%2CA2%2CD3%2CG3%2CB3%2CE4&string_order=high-on-top&capo=0&transpose=0&tempo=120&note_duration=eighth&timing=columns&sustain=until-next&velocity=96&instrument=acoustic-guitar-steel&muted_notes=true"
  },
  "cli": "gizza tool guitar-tab-to-midi \"e|-------------|\nB|-------------|\nG|-------------|\nD|--2--2--5--5-|\nA|--2--2--5--5-|\nE|--0--0--3--3-|\"",
  "tool": {
    "description": "Convert ASCII guitar/bass tablature into a real Standard MIDI File (.mid) and return it as a download. `tab` is the pasted tablature, one line per string; a run of digits is a fret number (so `12` is one note, not two), `-` is a rest, a `|` column spanning every string is a bar line that takes no time, `h p b r s t / \\ ~ ^ * . ( )` are skipped as articulation marks, and `x`/`X` are muted strings. Every string with a fret in the same column sounds together as a chord, and multiple staves are concatenated in reading order. Pitch = open string + capo + fret + transpose, with the open strings coming from a `tuning` preset (auto-detected from the number of string lines: 4 → bass, 6 → guitar, 7/8 → extended range) or an explicit `custom_tuning` list, bottom tab line first. `string_order` handles tabs written low-string-on-top. `note_duration` sets how long one column lasts and `tempo` the BPM; `timing` picks whether every column or only note columns advance time; `sustain` picks whether a note rings until the string's next note or stops after one column. `velocity` and a General MIDI `instrument` are written into the file. Errors name the offending line and column. Pure compute — nothing is fetched, uploaded or stored.",
    "parameters": {
      "additionalProperties": false,
      "properties": {
        "capo": {
          "default": 0,
          "description": "Capo position in frets, added to every string (default 0, max 12). A capo on fret 2 with standard tuning sounds F#2 B2 E3 A3 C#4 F#4.",
          "maximum": 12,
          "minimum": 0,
          "type": "integer"
        },
        "custom_tuning": {
          "default": "",
          "description": "Explicit open-string pitches, overriding `tuning`. Comma- or space-separated, one per string line, BOTTOM tab line first, as scientific pitch names or MIDI numbers — e.g. `D2,A2,D3,G3,B3,E4` (drop D) or `38 45 50 55 59 64`. Empty (default) uses `tuning`.",
          "type": "string"
        },
        "instrument": {
          "default": "acoustic-guitar-steel",
          "description": "General MIDI instrument written as a program-change event (default 'acoustic-guitar-steel', GM program 26). Your player or DAW can always override it.",
          "enum": [
            "acoustic-guitar-nylon",
            "acoustic-guitar-steel",
            "electric-guitar-jazz",
            "electric-guitar-clean",
            "electric-guitar-muted",
            "overdriven-guitar",
            "distortion-guitar",
            "guitar-harmonics",
            "acoustic-bass",
            "electric-bass-finger",
            "electric-bass-pick",
            "fretless-bass",
            "acoustic-grand-piano"
          ],
          "type": "string"
        },
        "muted_notes": {
          "default": false,
          "description": "Render `x`/`X` dead/muted strings as short muted notes on the open string instead of skipping them (default false: mutes are silent).",
          "type": "boolean"
        },
        "note_duration": {
          "default": "eighth",
          "description": "Musical length of ONE tab column, which sets the whole rhythm (default 'eighth'). With eighth notes at 120 BPM each column lasts 0.25 s. Use 'sixteenth' for busy tabs and 'quarter' for sparse ones.",
          "enum": [
            "whole",
            "half",
            "quarter",
            "eighth",
            "sixteenth",
            "thirty-second"
          ],
          "type": "string"
        },
        "string_order": {
          "default": "high-on-top",
          "description": "Which string the FIRST line of the stave is. 'high-on-top' (default) is the usual layout — the top line is the thinnest/highest string (high E on a guitar). Use 'low-on-top' for tabs written the other way up, otherwise the file comes out pitch-inverted.",
          "enum": [
            "high-on-top",
            "low-on-top"
          ],
          "type": "string"
        },
        "sustain": {
          "default": "until-next",
          "description": "How long each note rings. 'until-next' (default) holds a string until its next note on that string (or the end of the tab), like a real guitar. 'step' makes every note exactly one column long, giving a detached, sequencer-like feel.",
          "enum": [
            "until-next",
            "step"
          ],
          "type": "string"
        },
        "tab": {
          "description": "The ASCII tablature, one line per string, e.g. `e|--0--3--|` … `E|--------|`. Fret numbers sound as notes (a run of digits is one fret, so `12` is the twelfth fret); `-` is a rest; a `|` column that spans every string is a bar line and takes no time; `h p b r s t / \\ ~ ^ * . ( )` are treated as articulation marks and skipped; `x`/`X` are muted strings (see `muted_notes`). Several staves separated by blank or prose lines are concatenated in reading order. At most 1 MiB of text and 20000 notes.",
          "type": "string"
        },
        "tempo": {
          "default": 120.0,
          "description": "Tempo in quarter-note beats per minute, written as a MIDI tempo event (default 120, range 20-400).",
          "maximum": 400,
          "minimum": 20,
          "type": "number"
        },
        "timing": {
          "default": "columns",
          "description": "How time advances. 'columns' (default) gives every character column one step, so the dash spacing in the tab IS the rhythm. 'events' only counts columns that contain a note, spacing the onsets evenly — use it when the tab's spacing is decorative rather than rhythmic.",
          "enum": [
            "columns",
            "events"
          ],
          "type": "string"
        },
        "transpose": {
          "default": 0,
          "description": "Extra transposition in semitones, applied after the capo (default 0, range -24 to +24). Use -12 to drop an octave, +12 to raise one.",
          "maximum": 24,
          "minimum": -24,
          "type": "integer"
        },
        "tuning": {
          "default": "auto",
          "description": "Open-string tuning. 'auto' (default) picks from the number of string lines: 4 → bass-standard (E1 A1 D2 G2), 5 → bass-5-string, 6 → standard (E2 A2 D3 G3 B3 E4), 7 → seven-string, 8 → eight-string. Named presets: standard, drop-d, half-step-down, full-step-down, drop-c, open-g, open-d, dadgad, seven-string, eight-string, bass-standard, bass-5-string, ukulele (gCEA). The preset must have as many strings as the tab has lines. Ignored when `custom_tuning` is set.",
          "enum": [
            "auto",
            "standard",
            "drop-d",
            "half-step-down",
            "full-step-down",
            "drop-c",
            "open-g",
            "open-d",
            "dadgad",
            "seven-string",
            "eight-string",
            "bass-standard",
            "bass-5-string",
            "ukulele"
          ],
          "type": "string"
        },
        "velocity": {
          "default": 96,
          "description": "MIDI note-on velocity (loudness) for every note, 1-127 (default 96).",
          "maximum": 127,
          "minimum": 1,
          "type": "integer"
        }
      },
      "required": [
        "tab"
      ],
      "type": "object"
    }
  }
}