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.

Endpoints
EndpointContainsRecords
/api/tunings.jsonInstrument tunings with every string as note, MIDI number and Hz45
/api/notes.jsonEvery note C0 to B8 with Hz, MIDI number and piano key108

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"]
}

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:

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: .