The TuneStand Open Data
Two JSON files: 45 instrument tunings across 12 instruments, and all 108 notes from C0 to B8 with their frequencies and MIDI numbers. No key, no account, no rate limit, CORS open to every origin, CC BY 4.0.
| Endpoint | Contains | Records |
|---|---|---|
| /api/tunings.json | Instrument tunings with every string as note, MIDI number and Hz | 45 |
| /api/notes.json | Every note C0 to B8 with Hz, MIDI number and piano key | 108 |
Both files are generated at build time and served as static files. There is no server behind them, which is also why there is nothing to rate limit.
Fetch it
curl -s https://tunestand.com/api/tunings.json | jq '.tunings[] | select(.instrument=="guitar") | .tuningLabel'const res = await fetch("https://tunestand.com/api/tunings.json");
const { tunings } = await res.json();
const dadgad = tunings.find((t) => t.id === "guitar-dadgad");
console.log(dadgad.strings.map((s) => `${s.note} ${s.hz} Hz`));Schema
One record from the tunings file, in full:
{
"id": "guitar-dadgad",
"instrument": "guitar",
"instrumentLabel": "6-string guitar",
"tuningId": "dadgad",
"tuningLabel": "DADGAD",
"notation": "DADGAD",
"category": "modal",
"url": "https://tunestand.com/tuner/guitar/dadgad",
"strings": [
{ "position": 6, "label": "6th (lowest)", "note": "D2", "midi": 38, "hz": 73.42 }
],
"relativeToStandard": "Lower the 6th, 2nd and 1st strings a whole step from standard: E2 to D2, B3 to A3, E4 to D4.",
"commonIn": ["Celtic and Irish traditional", "folk", "fingerstyle", "modal playing"]
}idis stable across versions. Use it as a key, not the label.midiis the MIDI note number in scientific pitch notation, where middle C is C4 and MIDI 60.hzis rounded to two decimals below 1000 Hz and one above. Recompute frommidiif you need full precision:440 * 2 ** ((midi - 69) / 12).stringsis ordered the way players count, so the first entry is the highest-numbered string, which on a guitar is the lowest pitch and on a banjo is not.
Licence
CC BY 4.0 (Creative Commons Attribution 4.0). You may copy, adapt and redistribute the data, including commercially, as long as you give credit. The required attribution is exactly:
Data from TuneStand (https://tunestand.com)In a web page a link to tunestand.com satisfies that. In an app, a line in the credits or the about screen does.
How the numbers are produced
Not one frequency in either file is typed in by hand. A string is stored as a note name, parsed into a MIDI number, and turned into hertz with f = 440 * 2^((m - 69) / 12), twelve tone equal temperament with A4 at 440 Hz. A transcription error is therefore impossible: the only mistake the dataset can contain is a wrong note name, which anyone can spot by reading the notation string next to it.
What the dataset deliberately does not contain: string gauges, tensions and breaking strains. Those depend on scale length and string construction, none of which is modelled here, so publishing them would be guessing. See the methodology for the full statement, including where equal temperament differs from just intonation.
Standards this data follows:
- ISO 16:1975, Acoustics, Standard tuning frequency (A4 = 440 Hz)
- MIDI Association, MIDI octave and note numbering standard
- UNSW School of Physics, Note names, MIDI numbers and frequencies
Versions and changelog
Current version: 1.0.0. The full changelog is on the changelog page. Breaking changes to field names bump the major version; added tunings bump the minor version.
Where to go next
Frequencies on this page are computed at build time from twelve tone equal temperament with A4 = 440 Hz, using the twelfth root of two (about 1.059463) per semitone. Nothing is typed in by hand. See the full method and sources. Maintained by FusionStudios. Last reviewed: .