Last active
September 21, 2024 23:01
-
-
Save traviskaufman/9c526d522dca63b92b0f109220fbec17 to your computer and use it in GitHub Desktop.
Guitar
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"$schema": "https://vega.github.io/schema/vega-lite/v5.json", | |
"title": "Guitar Fretboard", | |
"description": "See https://www.liutaiomottola.com/formulae/fret.htm for fret position calculations. Normalized and scaled manually to width of chart", | |
"data": { | |
"values": [ | |
{ | |
"string": 1, | |
"fret": 0 | |
}, | |
{ | |
"string": 1, | |
"fret": 1 | |
}, | |
{ | |
"string": 1, | |
"fret": 2 | |
}, | |
{ | |
"string": 1, | |
"fret": 3 | |
}, | |
{ | |
"string": 1, | |
"fret": 4 | |
}, | |
{ | |
"string": 1, | |
"fret": 5 | |
}, | |
{ | |
"string": 1, | |
"fret": 6 | |
}, | |
{ | |
"string": 1, | |
"fret": 7 | |
}, | |
{ | |
"string": 1, | |
"fret": 8 | |
}, | |
{ | |
"string": 1, | |
"fret": 9 | |
}, | |
{ | |
"string": 1, | |
"fret": 10 | |
}, | |
{ | |
"string": 1, | |
"fret": 11 | |
}, | |
{ | |
"string": 1, | |
"fret": 12 | |
}, | |
{ | |
"string": 1, | |
"fret": 13 | |
}, | |
{ | |
"string": 1, | |
"fret": 14 | |
}, | |
{ | |
"string": 1, | |
"fret": 15 | |
}, | |
{ | |
"string": 1, | |
"fret": 16 | |
}, | |
{ | |
"string": 1, | |
"fret": 17 | |
}, | |
{ | |
"string": 1, | |
"fret": 18 | |
}, | |
{ | |
"string": 1, | |
"fret": 19 | |
}, | |
{ | |
"string": 1, | |
"fret": 20 | |
}, | |
{ | |
"string": 1, | |
"fret": 21 | |
}, | |
{ | |
"string": 1, | |
"fret": 22 | |
}, | |
{ | |
"string": 1, | |
"fret": 23 | |
}, | |
{ | |
"string": 1, | |
"fret": 24 | |
}, | |
{ | |
"string": 2, | |
"fret": 0 | |
}, | |
{ | |
"string": 2, | |
"fret": 1 | |
}, | |
{ | |
"string": 2, | |
"fret": 2 | |
}, | |
{ | |
"string": 2, | |
"fret": 3 | |
}, | |
{ | |
"string": 2, | |
"fret": 4 | |
}, | |
{ | |
"string": 2, | |
"fret": 5 | |
}, | |
{ | |
"string": 2, | |
"fret": 6 | |
}, | |
{ | |
"string": 2, | |
"fret": 7 | |
}, | |
{ | |
"string": 2, | |
"fret": 8 | |
}, | |
{ | |
"string": 2, | |
"fret": 9 | |
}, | |
{ | |
"string": 2, | |
"fret": 10 | |
}, | |
{ | |
"string": 2, | |
"fret": 11 | |
}, | |
{ | |
"string": 2, | |
"fret": 12 | |
}, | |
{ | |
"string": 2, | |
"fret": 13 | |
}, | |
{ | |
"string": 2, | |
"fret": 14 | |
}, | |
{ | |
"string": 2, | |
"fret": 15 | |
}, | |
{ | |
"string": 2, | |
"fret": 16 | |
}, | |
{ | |
"string": 2, | |
"fret": 17 | |
}, | |
{ | |
"string": 2, | |
"fret": 18 | |
}, | |
{ | |
"string": 2, | |
"fret": 19 | |
}, | |
{ | |
"string": 2, | |
"fret": 20 | |
}, | |
{ | |
"string": 2, | |
"fret": 21 | |
}, | |
{ | |
"string": 2, | |
"fret": 22 | |
}, | |
{ | |
"string": 2, | |
"fret": 23 | |
}, | |
{ | |
"string": 2, | |
"fret": 24 | |
}, | |
{ | |
"string": 3, | |
"fret": 0 | |
}, | |
{ | |
"string": 3, | |
"fret": 1 | |
}, | |
{ | |
"string": 3, | |
"fret": 2 | |
}, | |
{ | |
"string": 3, | |
"fret": 3 | |
}, | |
{ | |
"string": 3, | |
"fret": 4 | |
}, | |
{ | |
"string": 3, | |
"fret": 5 | |
}, | |
{ | |
"string": 3, | |
"fret": 6 | |
}, | |
{ | |
"string": 3, | |
"fret": 7 | |
}, | |
{ | |
"string": 3, | |
"fret": 8 | |
}, | |
{ | |
"string": 3, | |
"fret": 9 | |
}, | |
{ | |
"string": 3, | |
"fret": 10 | |
}, | |
{ | |
"string": 3, | |
"fret": 11 | |
}, | |
{ | |
"string": 3, | |
"fret": 12 | |
}, | |
{ | |
"string": 3, | |
"fret": 13 | |
}, | |
{ | |
"string": 3, | |
"fret": 14 | |
}, | |
{ | |
"string": 3, | |
"fret": 15 | |
}, | |
{ | |
"string": 3, | |
"fret": 16 | |
}, | |
{ | |
"string": 3, | |
"fret": 17 | |
}, | |
{ | |
"string": 3, | |
"fret": 18 | |
}, | |
{ | |
"string": 3, | |
"fret": 19 | |
}, | |
{ | |
"string": 3, | |
"fret": 20 | |
}, | |
{ | |
"string": 3, | |
"fret": 21 | |
}, | |
{ | |
"string": 3, | |
"fret": 22 | |
}, | |
{ | |
"string": 3, | |
"fret": 23 | |
}, | |
{ | |
"string": 3, | |
"fret": 24 | |
}, | |
{ | |
"string": 4, | |
"fret": 0 | |
}, | |
{ | |
"string": 4, | |
"fret": 1 | |
}, | |
{ | |
"string": 4, | |
"fret": 2 | |
}, | |
{ | |
"string": 4, | |
"fret": 3 | |
}, | |
{ | |
"string": 4, | |
"fret": 4 | |
}, | |
{ | |
"string": 4, | |
"fret": 5 | |
}, | |
{ | |
"string": 4, | |
"fret": 6 | |
}, | |
{ | |
"string": 4, | |
"fret": 7 | |
}, | |
{ | |
"string": 4, | |
"fret": 8 | |
}, | |
{ | |
"string": 4, | |
"fret": 9 | |
}, | |
{ | |
"string": 4, | |
"fret": 10 | |
}, | |
{ | |
"string": 4, | |
"fret": 11 | |
}, | |
{ | |
"string": 4, | |
"fret": 12 | |
}, | |
{ | |
"string": 4, | |
"fret": 13 | |
}, | |
{ | |
"string": 4, | |
"fret": 14 | |
}, | |
{ | |
"string": 4, | |
"fret": 15 | |
}, | |
{ | |
"string": 4, | |
"fret": 16 | |
}, | |
{ | |
"string": 4, | |
"fret": 17 | |
}, | |
{ | |
"string": 4, | |
"fret": 18 | |
}, | |
{ | |
"string": 4, | |
"fret": 19 | |
}, | |
{ | |
"string": 4, | |
"fret": 20 | |
}, | |
{ | |
"string": 4, | |
"fret": 21 | |
}, | |
{ | |
"string": 4, | |
"fret": 22 | |
}, | |
{ | |
"string": 4, | |
"fret": 23 | |
}, | |
{ | |
"string": 4, | |
"fret": 24 | |
}, | |
{ | |
"string": 5, | |
"fret": 0 | |
}, | |
{ | |
"string": 5, | |
"fret": 1 | |
}, | |
{ | |
"string": 5, | |
"fret": 2 | |
}, | |
{ | |
"string": 5, | |
"fret": 3 | |
}, | |
{ | |
"string": 5, | |
"fret": 4 | |
}, | |
{ | |
"string": 5, | |
"fret": 5 | |
}, | |
{ | |
"string": 5, | |
"fret": 6 | |
}, | |
{ | |
"string": 5, | |
"fret": 7 | |
}, | |
{ | |
"string": 5, | |
"fret": 8 | |
}, | |
{ | |
"string": 5, | |
"fret": 9 | |
}, | |
{ | |
"string": 5, | |
"fret": 10 | |
}, | |
{ | |
"string": 5, | |
"fret": 11 | |
}, | |
{ | |
"string": 5, | |
"fret": 12 | |
}, | |
{ | |
"string": 5, | |
"fret": 13 | |
}, | |
{ | |
"string": 5, | |
"fret": 14 | |
}, | |
{ | |
"string": 5, | |
"fret": 15 | |
}, | |
{ | |
"string": 5, | |
"fret": 16 | |
}, | |
{ | |
"string": 5, | |
"fret": 17 | |
}, | |
{ | |
"string": 5, | |
"fret": 18 | |
}, | |
{ | |
"string": 5, | |
"fret": 19 | |
}, | |
{ | |
"string": 5, | |
"fret": 20 | |
}, | |
{ | |
"string": 5, | |
"fret": 21 | |
}, | |
{ | |
"string": 5, | |
"fret": 22 | |
}, | |
{ | |
"string": 5, | |
"fret": 23 | |
}, | |
{ | |
"string": 5, | |
"fret": 24 | |
}, | |
{ | |
"string": 6, | |
"fret": 0 | |
}, | |
{ | |
"string": 6, | |
"fret": 1 | |
}, | |
{ | |
"string": 6, | |
"fret": 2 | |
}, | |
{ | |
"string": 6, | |
"fret": 3 | |
}, | |
{ | |
"string": 6, | |
"fret": 4 | |
}, | |
{ | |
"string": 6, | |
"fret": 5 | |
}, | |
{ | |
"string": 6, | |
"fret": 6 | |
}, | |
{ | |
"string": 6, | |
"fret": 7 | |
}, | |
{ | |
"string": 6, | |
"fret": 8 | |
}, | |
{ | |
"string": 6, | |
"fret": 9 | |
}, | |
{ | |
"string": 6, | |
"fret": 10 | |
}, | |
{ | |
"string": 6, | |
"fret": 11 | |
}, | |
{ | |
"string": 6, | |
"fret": 12 | |
}, | |
{ | |
"string": 6, | |
"fret": 13 | |
}, | |
{ | |
"string": 6, | |
"fret": 14 | |
}, | |
{ | |
"string": 6, | |
"fret": 15 | |
}, | |
{ | |
"string": 6, | |
"fret": 16 | |
}, | |
{ | |
"string": 6, | |
"fret": 17 | |
}, | |
{ | |
"string": 6, | |
"fret": 18 | |
}, | |
{ | |
"string": 6, | |
"fret": 19 | |
}, | |
{ | |
"string": 6, | |
"fret": 20 | |
}, | |
{ | |
"string": 6, | |
"fret": 21 | |
}, | |
{ | |
"string": 6, | |
"fret": 22 | |
}, | |
{ | |
"string": 6, | |
"fret": 23 | |
}, | |
{ | |
"string": 6, | |
"fret": 24 | |
} | |
] | |
}, | |
"width": 800, | |
"height": 200, | |
"params": [ | |
{ | |
"name": "selected_string", | |
"value": 3 | |
}, | |
{ | |
"name": "selected_fret", | |
"value": 11 | |
} | |
], | |
"config": { | |
"title": { | |
"color": "white" | |
}, | |
"axis": { | |
"grid": true, | |
"title": null, | |
"ticks": false, | |
"gridColor": "#bbb", | |
"domainColor": "#ccc", | |
"labelColor": "white" | |
} | |
}, | |
"background": "#482029", | |
"layer": [ | |
{ | |
"name": "positions", | |
"mark": "circle", | |
"transform": [{ | |
"window": [{ | |
"op": "average", | |
"field": "fret", | |
"as": "fingerpos" | |
}], | |
"frame": [-1, 0], | |
"groupby": ["string"], | |
"sort": [{"field": "fret"}] | |
}], | |
"encoding": { | |
"fill": { | |
"value": "#fadadd" | |
}, | |
"size": { | |
"value": 400, | |
"condition": [ | |
{ | |
"test": "selected_fret > 20", | |
"value": 200 | |
}, | |
{ | |
"test": "selected_fret > 12", | |
"value": 300 | |
} | |
] | |
}, | |
"x": { | |
"field": "fingerpos", | |
"scale": { | |
"type": "linear", | |
"domain": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24], | |
"range": [ | |
0, | |
59.86739980619357, | |
116.37470065030473, | |
169.71049039603784, | |
220.052772283627, | |
267.5695589991032, | |
312.4194334010161, | |
354.7520777759817, | |
394.7087733894009, | |
432.4228719985489, | |
468.02024090166776, | |
501.61968300837583, | |
533.3333333333333, | |
563.26703323643, | |
591.5206836584857, | |
618.1885785313522, | |
643.3597194751469, | |
667.118112832885, | |
689.5430500338413, | |
710.7093722213242, | |
730.6877200280339, | |
749.5447693326078, | |
767.3434537841673, | |
784.1431748375212, | |
800 | |
] | |
} | |
}, | |
"y": { | |
"field": "string", | |
"type": "ordinal", | |
"axis": { | |
"labelExpr": "[null, 'e', 'B', 'G', 'D', 'A', 'E'][datum.value]" | |
}, | |
"scale": { | |
"padding": 0 | |
} | |
}, | |
"opacity": { | |
"value": 0, | |
"condition": [ | |
{ | |
"test": "datum.fret == selected_fret && datum.string == selected_string", | |
"value": 1 | |
} | |
] | |
} | |
} | |
} | |
] | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment