Equal temperament note frequency calculator
This equal temperament note frequency calculator converts a known reference frequency and a signed semitone distance into the frequency of another note.
Run — free
It uses the standard twelve-tone equal-temperament ratio, so twelve semitones double the frequency, minus twelve semitones halve it, and every intermediate step follows the twelfth root of two. The calculator is useful when a note name is unnecessary or unavailable and your application already knows the interval as a number of semitones. Results are deterministic, include the applied frequency ratio, and can be reproduced in a browser, spreadsheet, synthesizer, test fixture, or API workflow.
Enter a reference frequency and a signed distance
Start with any positive reference frequency measured in hertz. This could be concert A at 440 Hz, middle C from a tuning table, an oscillator frequency measured in a lab, or a custom pitch used by an instrument. Then provide the signed number of semitones separating the desired note from that reference. A positive offset moves upward in pitch, while a negative offset moves downward. Zero returns the reference unchanged. The offset must be an integer because this capability computes note positions in twelve-tone equal temperament rather than arbitrary cent detuning. For example, an offset of twelve selects the note one octave above the reference, seven selects a perfect fifth above it, and minus twelve selects the note one octave below it. The accepted range spans twenty octaves in either direction, which is broad enough for musical, acoustic, and software-testing work while keeping inputs bounded. The reference may also be supplied through the documented reference_hz or frequency aliases, and the semitone distance through semitone_offset or steps, which helps clients adapt existing data without changing the underlying calculation. Values must remain finite, positive, and within the published field limits.
Understand the twelve-tone equal-temperament formula
Twelve-tone equal temperament divides every octave into twelve equal steps on a logarithmic frequency scale. Equal does not mean that adjacent notes differ by the same number of hertz. Instead, each upward step multiplies the current frequency by the same ratio: two raised to the power of one twelfth. After twelve multiplications the accumulated ratio is exactly two, producing the octave. The calculator applies the compact equation f equals reference frequency multiplied by two raised to semitones divided by twelve. Negative offsets naturally create a ratio below one, so a separate downward formula is unnecessary. The response reports frequency_ratio as well as frequency_hz, making the arithmetic easy to audit. It also echoes the validated reference and offset and identifies the temperament as 12-TET. Numeric output is normalized to fifteen significant digits to suppress insignificant floating-point noise while preserving far more precision than typical tuning or audio hardware can use. Because the computation is a closed-form power operation, it has no lookup-table gaps and works equally well from unusual references such as historical concert pitch, calibration tones, or measured resonances. Identical JSON inputs always produce identical JSON results because the algorithm uses no network, clock, random value, or external state.
Use the result in instruments, audio systems, and tests
Use frequency_hz as the oscillator target, filter marker, tuning-table value, or label displayed to a musician. The returned frequency_ratio is useful when another quantity must scale with pitch or when a test needs to verify the interval independently of the chosen reference. In a synthesizer, calculate offsets from a key or MIDI mapping and apply this endpoint to a project-specific reference. In instrument setup, begin with a measured string, pipe, or resonator frequency and calculate the ideal equal-tempered targets around it. In educational software, show how each semitone changes by a constant ratio even though the difference in hertz grows at higher pitches. For automated tests, the explicit formula string and echoed values make failures easier to diagnose. Browser use is free, while each successful API item costs $0.002; validation errors are returned as invalid input instead of producing a misleading frequency. Remember that this calculator models twelve-tone equal temperament only. It does not identify note names, infer octaves, convert cents, compensate for stretched piano tuning, model historical temperaments, or judge whether a physical instrument is in tune. Those jobs require additional musical context. Here, the deliberately small contract answers one question reliably: given this reference and this integer semitone displacement, what frequency follows from 12-TET?
What you can do with it
Build oscillator tuning tables
Generate exact 12-TET frequencies above and below a device-specific reference without maintaining a hard-coded note table.
Check musical interval calculations
Verify octave, fifth, and chromatic-step frequency calculations in lessons, spreadsheets, and automated software tests.
Scale from a measured acoustic reference
Use a measured resonance or calibration tone as the starting point and calculate equal-tempered targets at signed semitone offsets.
FAQ
What formula does the calculator use?
It uses f = reference_frequency × 2^(semitones / 12), the standard frequency relation for twelve-tone equal temperament.
What happens at twelve semitones?
Twelve semitones produce a ratio of 2, so the resulting frequency is exactly one octave above and twice the reference frequency.
Can the semitone offset be negative?
Yes. Negative integers move below the reference. For example, minus twelve returns half the reference frequency.
Can I enter fractional semitones or cents?
No. This capability accepts integer note steps. Convert cents separately or use a detuning calculator when fractional pitch movement is required.
How much does an API calculation cost?
A successful API item costs $0.002. The same deterministic calculation can be run free in the browser.
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/optics/equal-temperament-frequency \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"reference_frequency":440,"semitones":12}'const res = await fetch("https://api.kit.forhosting.com/optics/equal-temperament-frequency", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"reference_frequency": 440,
"semitones": 12
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/optics/equal-temperament-frequency",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"reference_frequency": 440,
"semitones": 12
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/optics/equal-temperament-frequency", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"reference_frequency":440,"semitones":12}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"reference_frequency":440,"semitones":12}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/optics/equal-temperament-frequency", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"reference_frequency": 440,
"semitones": 12
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "optics.equal_temperament_frequency",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |