周波数からMIDIノート番号への変換計算機
この周波数からMIDIノート番号への計算機は、正のヘルツ値を最も近い整数のMIDIノート番号へ変換します。A4を440ヘルツに固定した12平均律を使用するため、A4はMIDI 69となり、1オクターブごとに結果が12増減します。丸めた番号に加え、連続MIDI値、選択された音の正確な平均律周波数、セント差も表示します。計算は決定的でネットワークを必要とせず、通常のMIDI範囲である0から127を外れる値は受け付けません。
無料で実行
周波数とMIDIの関係をご理解いただくために
MIDIノート番号は、半音階の音高を分かりやすい整数の尺度に並べたものです。中央のCはMIDI 60、A4はMIDI 69で、1オクターブ上がると12が加算されます。ただし、音と音の間で周波数が一定のヘルツ数ずつ増えるわけではなく、幾何級数的に増えます。12平均律では1オクターブを等しい12個の周波数比に分け、半音上がるたびに周波数へ2の12乗根を掛けます。この計算機はその関係を逆にたどります。入力周波数を440で割り、底2の対数を求め、12を掛けて69を加えます。得られる連続値は、MIDI音高尺度上で入力がどこに位置するかを正確に示します。その値を最も近い整数へ丸めると、最寄りのMIDIノート番号になります。たとえば440ヘルツは正確に69となり、1オクターブ上の880ヘルツは81となります。応答には丸めた整数と小数点以下10桁の連続値を両方残しますので、鍵盤上の1キーだけでなく、測定値がキー間のどこにあるかも確認していただけます。基準はA4イコール440ヘルツに固定されています。任意の基準音で解釈が変わることがなく、すべての利用者が同じ入力から同じ答えを得られます。
最寄りの番号と音高差の読み方
frequencyフィールドへ、正の有限な周波数をヘルツ単位で入力してください。測定データとの連携に便利なfrequency_hzとhzという別名もご利用いただけます。主な結果のmidi_note_numberは0から127までの整数です。exact_midi_note_numberは丸める前の値、nearest_frequency_hzは440ヘルツ基準で選択されたMIDI整数が表す平均律周波数です。cents_differenceは残った音高差を示します。正の値なら入力周波数が選択音より高く、負の値なら低いことを意味します。100セントは平均律の1半音に相当するため、最寄りの音との差は通常およそマイナス50からプラス50セントに収まります。ちょうど中間の場合はJavaScriptの標準丸め規則を適用し、再現可能な実行を保ちます。応答ではreference_frequency_hzを440として再掲し、使用した平均律も明示します。そのため、後続ソフトウェアが歴史的調律や純正律の結果と取り違えることを防げます。未入力、ゼロ、負数、無限大、数値でない文字列、および丸めた結果が通常のMIDI範囲外になる周波数は無効として扱います。極端な値を黙って0または127へ制限すると測定を誤って表し、上流の単位ミスを隠すおそれがあるため、明示的な拒否のほうが安全です。
音声処理や測定作業での活用方法
この計算機は、あるシステムが周波数を測定または保存し、別の構成要素がMIDIノート番号を必要とする場面に適しています。音声解析スクリプトでは、検出したスペクトルピークを鍵盤番号へ変換してからチューナー画面に表示できます。シンセサイザーのテストでは、440ヘルツに設定した発振器がノート69へ対応することを確認し、複数のオクターブで同じ検証を行って調律表の誤りを見つけられます。実験や授業では、参照表に頼らず、対数、周波数比、MIDI番号の規則を関連付けられます。サンプル管理では、測定した基音から一貫したルートノート候補を得て、鍵盤へ割り当てる前に再調整が必要かをcents_differenceで判断できます。強い倍音は知覚される音高より高い別のMIDI番号に対応する場合があるため、任意のスペクトルピークではなく基音周波数をご使用ください。このツールは音声から音高を検出せず、音名や異名同音の表記も選びません。測定済み周波数を受け取り、番号を返します。ブラウザーでの対話的な利用は無料で、自動APIリクエストは$0.002です。どちらも外部サービス、乱数、時刻依存状態を使わず、同じ決定的な計算を行うため、再現可能なテスト、教材、メタデータ作成、検証処理にご利用いただけます。
活用例
音高検出器の出力変換
測定した基音周波数を、チューナー、可視化ツール、音楽アプリ向けの最寄りMIDI番号へ変換します。
サンプル用メタデータ
サンプルのMIDIルートノートを推定し、鍵盤割り当て前にセント差をご確認いただけます。
発振器のテスト
既知の平均律周波数が想定するMIDI整数へ対応するか、再現可能な検証を作成します。
よくある質問
周波数をMIDIノート番号へ変換する式は何ですか?
連続値は69 + 12 × log2(frequency / 440)です。この値を最も近い整数へ丸めたものがMIDIノート番号です。
440 HzのMIDIノート番号はいくつですか?
この計算機では440 HzをA4の基準としているため、正確にMIDI 69となります。
440 Hz以外の基準音を使用できますか?
いいえ。結果の解釈を常に一定に保つため、この機能は440 Hzへ意図的に固定されています。
応答にセント差が含まれるのはなぜですか?
入力が最寄りの平均律MIDI音よりどれだけ高いか低いかを示します。正なら高く、負なら低い値です。
APIでの計算料金はいくらですか?
APIリクエストごとに公開基本料金$0.002が適用されます。ブラウザーでの対話的な実行は無料です。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/optics/frequency-to-midi-note \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"frequency":440}'const res = await fetch("https://api.kit.forhosting.com/optics/frequency-to-midi-note", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"frequency": 440
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/optics/frequency-to-midi-note",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"frequency": 440
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/optics/frequency-to-midi-note", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"frequency":440}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"frequency":440}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/optics/frequency-to-midi-note", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"frequency": 440
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "optics.frequency_to_midi_note",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |