This system generates all tab graphics as inline SVGs — no external image files needed. Every string line, fret number, bend arrow, slide indicator, and vibrato wave is drawn dynamically in the browser.
| e| | ||||||||||||||||
| B| | ||||||||||||||||
| G| | ||||||||||||||||
| D| | ||||||||||||||||
| A| | ||||||||||||||||
| E| |
e|0---3-----------|----------------|5-----------X---24------| B|--------5-------|----------------|5-----------X-----------| G|------------7---|----------------|5-----------X-------17--| D|----------------|9---10----------|----5-------X-----------| A|----------------|--------12------|----5-------X-----------| E|----------------|------------15--|----5---0---X-----------|
| e| | ||||||||||||||
| B| | ||||||||||||||
| G| | ||||||||||||||
| D| | ||||||||||||||
| A| | ||||||||||||||
| E| |
e|7b--9-----------|12b-10~---------|----------------| B|--------8b--10--|----------------|----------------| G|----------------|--------9~--7---|----------------| D|----------------|----------------|7b--5~----------| A|----------------|----------------|--------7b------| E|----------------|----------------|------------5~--|
| e| | ||||||||||||||||
| B| | ||||||||||||||||
| G| | ||||||||||||||||
| D| | ||||||||||||||||
| A| | ||||||||||||||||
| E| |
e|5/--7/--7\--5\--|----------------|------------------------| B|----------------|5h--7h--7p--5p--|------------------------| G|----------------|----------------|9/--12/-12h-14h-14p-12p-| D|----------------|----------------|------------------------| A|----------------|----------------|------------------------| E|----------------|----------------|------------------------|
| e| | ||||||||||||||||||
| B| | ||||||||||||||||||
| G| | ||||||||||||||||||
| D| | ||||||||||||||||||
| A| | ||||||||||||||||||
| E| |
e|----------------|--------------------3b----------|----------------| B|--------3p------|--------------------------------|----------------| G|----0b----------|0\--0\------0/--2/--------------|2b--------------| D|----------------|--------0---------------0b------|----2\--0\--0b--| A|2---------------|--------------------------------|----------------| E|------------3b--|----------------------------3p--|----------------|
Zero external images. The old system required hundreds of pre-rendered
PNG files — one for each fret number (tab-line5.png,
tab-line12.png), plus separate images for techniques
(bendflower.png, vibrato.png, etc.). Each one was an HTTP
request and a fixed-size raster graphic that couldn’t scale.
Inline SVGs replace all of them. Each tab cell is rendered by a
PHP function that returns a minimal inline <svg> string. String
lines connect seamlessly across cells. Fret numbers sit on the line with a dark
background mask. Techniques (bends, slides, vibrato, hammer-ons, pull-offs) are
drawn with SVG paths, arcs, and text labels — all scalable, all colored, all
zero-latency.
The rendering pipeline:
renderTab() iterates the data and builds an HTML <table>svgCell(), which delegates to the appropriate SVG renderer<img> tags, no file I/OBenefits: Zero HTTP requests for graphics. Resolution-independent (scales perfectly on retina displays). Technique colors are easily themed. The entire rendering system is ~400 lines of PHP with no dependencies.