平均律の音階周波数計算
この平均律周波数計算機は、既知の基準周波数と符号付きの半音差から別の音の周波数を求めます。12半音上では周波数が2倍、12半音下では半分になり、途中の各段階には2の12乗根の比率を用います。音名が不要で、アプリケーション側ですでに音程を把握している場合に適しています。結果は決定論的で、適用した周波数比も含まれるため、ブラウザー、シンセサイザー、表計算、テスト、API処理で同じ値を再現できます。
無料で実行
基準周波数と符号付き半音差を入力します
最初に、正の基準周波数をHz単位で指定します。440 HzのコンサートA、音律表の中央C、測定した発振器の周波数、楽器独自の基準などを利用できます。次に、目的の音までの半音数を符号付き整数で入力します。正の値では音高が上がり、負の値では下がり、0では基準値を維持します。この機能は任意のcent単位のずれではなく、12平均律の音の位置を計算するため、半音差は整数でなければなりません。たとえば12は1オクターブ上、7は完全5度上、-12は1オクターブ下です。許容範囲は上下それぞれ20オクターブです。基準にはreference_hzまたはfrequency、半音差にはsemitone_offsetまたはstepsという別名も使用できます。すべての値は有限で、公開された範囲内に収めてください。
12平均律の計算式を理解します
12平均律では、1オクターブを対数的な尺度で等しい12段階に分割します。隣り合う音のHz差が一定なのではなく、上へ1段進むたびに周波数へ2の12分の1乗を掛けます。12段後の累積比は正確に2となり、1オクターブが完成します。計算式は f = reference_frequency * 2^(semitones / 12) です。負の半音差なら比率は自然に1未満になります。応答にはfrequency_ratioとfrequency_hz、検証済みの入力、方式を示す12-TETが含まれます。数値は不要な浮動小数点ノイズを抑えるため、有効数字15桁に整えます。欠落のある表、ネットワーク、時刻、乱数、外部状態は一切使用しません。そのため、同じJSON入力からは常に同じJSON結果が得られます。
楽器、音響、テストで結果を活用します
frequency_hzは発振器の目標値、フィルターの目印、調律表の値、演奏者向け表示として使用できます。frequency_ratioは、音高とともに別の量を拡大縮小したり、基準に依存せず音程を検査したりする場合に便利です。シンセサイザーでは鍵盤やMIDIマッピングから半音差を求め、プロジェクト固有の基準へ適用できます。音響作業では、測定した弦、管、共鳴器から周辺の理想値を計算できます。ブラウザーでの利用は無料で、成功したAPI項目は$0.002です。不正な入力には誤った周波数ではなくエラーを返します。このツールが扱うのは12-TETのみです。音名の特定、オクターブの推定、cent変換、ピアノのストレッチ調律、歴史的音律の再現は行いません。
活用例
発振器用の周波数表を作成
固定された音名表を管理せず、機器固有の基準から上下の12-TET周波数を生成できます。
音程計算を検証
授業、表計算、自動テストでオクターブ、完全5度、半音階の計算を確認できます。
実測した音響基準を展開
測定済みの共鳴や校正音を起点に、整数半音離れた目標周波数を計算できます。
よくある質問
どの計算式を使用しますか?
12平均律の標準式 f = reference_frequency * 2^(semitones / 12) を使用します。
12半音を指定するとどうなりますか?
比率は2となり、結果は基準より1オクターブ上で、周波数は正確に2倍になります。
半音差に負の値を指定できますか?
はい。負の整数では基準より下がり、たとえば-12では基準周波数の半分になります。
小数の半音やcentを入力できますか?
いいえ。整数の音階段階のみ対応します。微細な変更にはcent変換用の計算機をご利用ください。
API計算の料金はいくらですか?
正常に処理された1項目は$0.002です。同じ決定論的計算をブラウザーでは無料で実行できます。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
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)リクエスト例
{
"reference_frequency": 440,
"semitones": 12
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "optics.equal_temperament_frequency",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |