GITI
– Electric guitar music text format

Summary

This is a description/specification of GITI (variant E) – Guitar Instrument Text Interface (electric) – version 3.3: an electric guitar music notation text format.

GITI is concise, expressive, and readable and writeable by both humans and software. The format is in ASCII text (so also UTF-8). (File-name suffix could be: .giti or: .giti.txt)

Traditional musical notation is powerful and general, but rather complex and demanding. Guitar tabs are better focused, but with obvious weaknesses and still awkward to read and write. GITI follows the specialisation of tabs but dispenses with the quasi-graphic form, and adds a traditional kind of time information. The whole is somewhat inspired by the event-packet basic form of MIDI.

This version does not cover vibrato-bridge use or complex parallelism. The former seems an easy addition, but the latter would need more design and adjustment.

Contents

Piece

A whole Piece is a string of Sounds, Indicators, Annotations, and Comments. Sounds and indicators are blank-separated tokens, and annotations and comments are special lines.

A complete example:

# Black Sabbath ‘Black Sabbath’, main riff
@ giti:e-3.3  tuning:std  tempo:3.603
|4  13=25:2 ' 35 |
|   24r1:2-4-8e  s:24/10:8s |

The format also allows degrees of simplification: omitting chords, ornament, articulation, time, down to only pitch:

13=25:2  35  24r1:2-4-8e  s:24/10:8s
13:2  35  24:1
13  35  24

Grammar

SBNF:

(piece
   (* (| (, (* blank)
            (* (| sound indicator)
               (+ blank))
            (* blank)
            newline)
         annotation
         comment)))

Sound

A Sound has three parts:

  • Act – actuation related,
  • Pitch – frequency related,
  • Time – duration related,

separated by colons. For example: pluck : string 2, fret 4, vibrato : quarter-note:

p:24v:4

Or more complex, a doubled-bend, then slide:

p:414+2=512:4e  s:414/21
Simplification

Simplified uses can omit either or both act and time:

p:24:4
24:4
p:24
24

Grammar

SBNF:

(sound
   (| (, (? (, act ":")) pitch (? (, ":" time)))
      (, "-" (? (, ":" time)))
      (, "." (? (, ":" time)))))

Act

An act has two parts: basic and extra:

Basics (required), one of:

  • p – pluck (default if act is omitted))
  • d – damped/muted pluck
  • h – hammer-on
  • u – pull-off
  • w – sweep-pick
  • s – sustain from previous sound
  • t – tap
  • i – tremolo picking

Extras (optional):

  • $ – damp/mute
  • + – loud
  • - – quiet
  • < – volume increase
  • > – volume decrease

Grammar

SBNF:

(act
   (, (| "p" "d" "h" "u" "w" "s" "t" "i")
      (? "$")
      (? (| "+" "-"))
      (? (| "<" ">"))))

Pitch

A pitch has two parts: basic and extra:

Basics (required), one of:

  • * – same as previous sound
  • absolute:
    • 3 – first digit: string 1-8 (numbered low-freq to high-freq)
    • 10 – second digit and third if needed: fret 0-24
  • relative:
    • ^1<2 – first digit: move up a string, second digit: move down 2 frets
    • ,1>2 – first digit: move down a string, second digit: move up 2 frets

Extras (optional):

  • chord sounds separated with ‘=
  • +2 – bend up to 2 frets above
  • -1 – bend down from 1 frets above (i.e. pre-bend)
  • /15 – slide up, to fret 15
  • \8 – slide down, to fret 8
  • v – vibrato
  • r14 – trill, 1 fret above (- for below), with 4 sub-sounds (digits optional)
  • h – neck harmonic (touching over fret)
  • i – bridge harmonic (touching with picking thumb)

Chords have multiple pitchs separated by ‘=’:

p:13=25:4

Grammar

SBNF:

(pitch
   (+ (, (| "*"
            (, int1-8 int0-24)
            (, (| "^" ",") int0-8
               (| ">" "<") int0-24))
         (? (| (, "+" int1-5)
               (, "-" int1-5)
               (, "/" int0-24)
               (, "\\" int0-24)))
         (? (| "v"
               (, "r" (? (, (? "-") int1-9 (? int1-9))))))
         (? (| "h"
               "i")))
      "="))

Time

A time has two parts: basic and extra:

Basics (required):

  • 4 – number: lower part of the fraction of bar length

(E.g.: whole note = 1, 1/4 note = 4, 1/3 note = 3 (grace note = 0).)

Extras (optional):

  • -8 – extend by number fraction (repeatable)
  • e – legato
  • s – staccato
  • - – continue to next sound

Continuation sounds have a ‘-’ and time, instead of act and pitch:

-:2

Rests have a ‘.’ and time, instead of act and pitch:

.:2

Sounds (including continuations and rests) that have the same time as the previous can omit the time.

Grammar

SBNF:

(time
   (| (, int0-999
         (* (, "-" int1-999))
         (? (| "e" "s"))
         (? "-"))
      "-"))

Indicator

Indicators are of three kinds: bar, segment, and tuplet. They are optional really: all timing information is in sounds, but indicators help human users.

Bars can be indicated with lines, and optional suffix numbers for time division:

|3   |
|    |
||   ||

Segments of a bar can be indicated by a quote (to give a sort-of ersatz beaming):

|4  11:4 ' 11:4 ' 11:8 12:8 ' 11:4 | 

Tuplets can be indicated with parentheses and suffix number:

|4  .:2-4 ' (3 35:6  33:12 ) |

Grammar

SBNF:

(indicator
   (| (, (+ "|") (? int1-9))
      (, (+ "(") (? int1-9))
      (+ ")")
      (+ "'")))

Annotation

An Annotation is a line starting with @, containing three possible kinds of data: version, tuning, and/or tempo.

Version (giti), followed by:

  • e-3.3 – variant E, version 3.3

Tuning, followed by one of:

  • std – standard: E2 A2 D3 G3 B3 E4 (assuming C4 = 261.6Hz) (default)
  • -2 – -/+ semitones
  • 1D2= ... – string, pitch (multiple separated by =)

Tempo, followed by either:

  • 3.603 – duration of a bar in seconds, to millisecs precision
  • 4=120 – fractional note having some BPM

For example:

@ giti:e-3.3  tuning:-2  tuning:1D2=2B2  tempo:1.824

Grammar

SBNF:

(annotation
   (, "@"
      (* blank)
      (* (| (, "giti:"
               (* non-blank))
            (, "tuning:"
               (| "std"
                  (, (| "-" "+") int0-12)
                  (+ (, int1-8
                        (| "C" "C#" "D" "Eb" "E"
                           "F" "F#"
                           "G" "G#" "A" "Bb" "B")
                        int0-8)
                     "=")))
            (, "tempo:"
               (| (, int0-99 "." int0-999)
                  (, int1-99 "=" int1-999))))
         (+ blank))
      newline))

Comment

A Comment is a line starting with #, containing arbitrary text.

Grammar

SBNF:

(comment
   (, "#" 
      (* non-newline)
      newline))

Appendix

Examples

N.I.B.

# "N.I.B" ; Black Sabbath ; 1970 .
# Main riff.

@ giti:e-3.3  tuning:std

|4 27=39:8  * ' 25=37  27=39 ' . 210=312   ' 29=311:4s |
|  27=39:8  * ' 25=37  27=39 ' . 414+2=512 ' *:4       |
|  27=39:8  * ' 25=37  27=39 ' . 210=312   ' 29=311:4s |
|  27=39:8  * ' 25=37  27=39 ' . 27=39\5   '
   27r24:8e  u:27:32e  h:29:16-32 |

Iron Man

# "Iron Man" ; Black Sabbath ; 1970 .
# Main riff.

@ giti:e-3.3  tuning:std

|4 17=29:2e ' 110=212:4 ' . |
|  110=212:4e ' s:110/12=212/14:4 ' 112v=214:2s |
|  115\14=217\16:4 ' 115\14=217\16:4 ' 115\10=217\12:4 '
   110=212:8 ' . |
|  110=212:4e ' s:110/12=212/14:4 ' 112v=214:2s |

Tyrant

# "Tyrant" ; Judas Priest ; 1976 .
# Main riff.

@ giti:e-3.3  tuning:std  tempo:1.250

|4 10:8  h:12=24=34:4  12=24=34:4  d:10:8 ' 12=24=34:4- |
|  -:8  12=24=34:4  d:10:8 ' 22=34:4 ' 30=42=52:4 |
|  30=40:8e  h:32=42:4  20=32=42:4  d:20:8  22=34=44:4- |
|  -:8  22=34=44:4  d:22:8 ' 10:4 ' 24=36=46:4 |

Dissident Aggressor

# "Dissident Aggressor" ; Judas Priest ; 1977 .
# Main riff.

@ giti:e-3.3  tuning:std  tempo:1.644

|4 10=20:12e  h:10=22  d:10 ' *  *  *
   13+1       10=22    d:10 ' *  *  * |
|  10=20:12e  h:10=22  d:10 ' *  *  *
   13+1       10       13+1 ' 20=32:4 |

Black Sabbath

# "Black Sabbath" ; Black Sabbath ; 1970 .
# Solo.
# Previously transcribed and tabbed by Nick Didkovsky,
# http://www.didkovsky.com/tabs/blacksabbath.html

@ giti:e-3.3  tuning:std  tempo:1.714

|4 .:2-4 ' (3 35:6  33:12 ) | 35:2-4 ' (3 *i:6  *:12 ) |
|  33:2-6  *:12 ' 35:4 | 43:2-4 ' 45+2:4 |
|  45+2=53:2 ' *:4 ' 63 |
|  45+2=53:4 ' 48+2=56 ' 410+2=58 ' 412+2=510:4- |
|  - ' (3 417+2:12  515  615 ) ' 518+2:2s |
|  *:4 ' *:4-6  515:12 ' 618+2:4 |
|  *:2 ' (3 618:12  615  518 ) ' (3 618:12  615  518 ) |
|  618+2:4 ' (3 615:24e  h:618  u:615 )  615:8 '
   (3 518+1:12  615  615 ) ' 518+2:4 |
|  (3 615:12  518  515 ) ' (3 417+2:12  515  615 ) '
   (3 417+2:12  515  615 ) ' (3 417+2:12  515  615 ) |
|  (3 417+2:12  515  615 ) ' (3 417+2:12  515  615 ) '
   (3 417+2:12  515  615 ) ' (3 417+2:12  515  615 ) |
|  417+2:2 ' (3 417+2:12  515  615 ) ' (3 417+2:12  515  518 ) |
|  518-2:4 ' 415:6  518-2:12-4 ' 415:6  618+2:12 |
|  618:4  ' (3 618:12  615  515 ) '
   618+2:4 ' (3 615:24  h:618  u:615 )  615:8 |
|  (3 618:12  615  518 ) ' (3 618:12  615  518 ) '
   618r-36:4- ' - |
|  618r-36:4- ' - ' 618+2 ' 618+2 |
|  (3 618:12  615  518 ) ' 518+2=615:4 '
   (3 518:12  515  417 ) ' 415r14:6e  u:415:12 |
|  (3 417+2:12  515  615 ) ' (3 518:12  515  417 ) '
   415r14:6e  u:415:12 ' (3 317:12  315  317 ) |
|  (3 315:0  317:6  415:12 ) ' (3 417+2:12  515  615 ) '
   (3 417+2:12  515  615 ) ' (3 417+2:12  515  615 ) |
|  518+2:4 ' 518+2:6  518+2:12- ' -:2 |

Colophon

DC:`
   title:`GITI - Electric guitar music text format`
   creator:`Harrison Ainsworth / HXA7241`

   date:`2015-01-17`
   date:`2013-06-30`
   date:`2013-01-21`

   description:`Description/specification of GITI (variant E) version 3.3: an
      electric guitar music notation text format.`
   subject:`guitar, electric-guitar, music, notation, text, format`

   language:`en-GB`
   type:`technical article`
   relation:`http://www.hxa.name/`
   identifier:`http://www.hxa.name/giti/`
   rights:`Creative Commons BY-SA 3.0 License.`
`