ピタゴラス音律の音程比計算ツール
この計算ツールは、符号付きの純正五度の個数を正確な周波数比へ変換します。正の値では五度圏を上向きに、負の値では下向きに進みます。音高クラスを変えずに結果を1オクターブ内へ移し、正確な分数、十進比、オクターブ移動量、セント値を表示できます。音律理論の学習、音程表の確認、ピタゴラス音律における異名同音の比較を、基礎となる正確な算術を丸めずに行う際に役立ちます。
無料で実行
純正五度から音程を組み立てます
ピタゴラス音律は、周波数比が正確に3:2となる純正五度を基礎とします。五度を積み重ねるとは、上向きの1段ごとにこの比を掛けることです。そのため、7つの五度は(3/2)^7になります。負の個数では逆方向へ進み、各段で逆数の(2/3)を用います。0を入力するとユニゾン、1では純正五度、2ではオクターブ整理後のピタゴラス音律の長二度が得られます。また、指定範囲内の任意の符号付き整数を入力できます。このツールは十進値を繰り返し丸めるのではなく、整数による有理数演算を行います。そのため、分子と分母には理論上の正確な比が保たれます。多数の五度を重ねる場合、この違いが重要です。表示される十進値は測定には便利ですが近似値であり、分数は音程の構成を厳密に記録します。正負の個数を対称に処理するため、五度の連鎖を両方向にたどり、音程同士の逆関係も確認できます。
オクターブ正規化と移動量を理解します
複数の五度から作られる音程は、すぐに1オクターブを超えます。オクターブ正規化では、元の比に2の累乗を掛けるか割ることで、結果を1:1以上2:1未満の範囲へ移します。オクターブ違いの音は同じ音高クラスに属するため、この整理では音程のピタゴラス的な性質を保ちながら、一般的な音律表で使われる範囲に表示できます。`octave_shift`欄は処理内容を正確に示します。負の値は積み重ねた比をその数のオクターブで割ったことを表し、正の値は下降五度の後にオクターブを上げたことを表します。五度の積み重ね全体が作る複音程をそのまま求める場合は、正規化を無効にしてください。その場合、移動量は0となり、分数は(3/2)^nまたはその逆数のままです。正規化した結果と未処理の結果を比較すれば、物理的な周波数倍率と、通常の音程名が付くオクターブ等価な単音程を明確に区別できます。
正確な比、十進値、セント値を使い分けます
結果には同じ音程の複数の表現があり、それぞれ異なる用途に適しています。`ratio`、`numerator`、`denominator`は、正確な値を音律表へ転記する場合、関係を証明する場合、有理数演算で目標周波数を求める場合に使用します。`decimal_ratio`は、シンセサイザーのスクリプトや表計算で基準周波数を掛ける際に便利です。`cents`は、12平均律や別の音律と比較する際に使用します。セントは乗算的な周波数比を加算的な尺度へ変換するためです。たとえば、ピタゴラス音律の音高を計算し、最も近い100セント単位の平均律音程と比較して、その差を調律補正として解釈できます。このツールは音程を示しますが、音名は付けません。異名同音の綴りは、出発音と五度連鎖の方向に依存します。正確な分数は鍵盤上で同じように見える綴りでも曖昧にならず、丸めた音名では隠れるピタゴラスコンマなどの小さな差も明らかにします。
活用例
ピタゴラス音階を構成する
純正五度の連鎖に沿った各位置について、オクターブ整理済みの正確な比を生成します。
音律方式を比較する
セント値を用いて、ピタゴラス音律の音程と平均律の対応音程との差を測定します。
楽器やシンセサイザーを確認する
基準周波数に十進比を掛けるか、セント値を調律補正へ変換します。
よくある質問
純正五度とは何ですか?
周波数比が正確に3:2となる音程です。上側の周波数は下側の1.5倍になります。
五度の個数が負の場合は何を意味しますか?
任意のオクターブ正規化を行う前に、逆数の比2:3を用いて下降五度を積み重ねます。
オクターブ正規化では何が変わりますか?
2の正確な累乗によって音域だけを変え、音高クラスを保ったまま比を1:1以上2:1未満に収めます。
分子と分母が文字列なのはなぜですか?
大きな正確な整数はJavaScriptにおけるJSONの安全な数値範囲を超える場合があります。文字列なら全桁を保持できます。
音名も返されますか?
いいえ。音名には出発音と表記規則も必要です。このツールは五度の積み重ねから生じる音程を返します。
APIリクエストの料金はいくらですか?
APIリクエスト1回の料金は$0.002です。決定論的なブラウザー版は、このページ上でローカル実行もできます。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/hobby/music-pythagorean-ratio \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"fifths":7}'const res = await fetch("https://api.kit.forhosting.com/hobby/music-pythagorean-ratio", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"fifths": 7
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/hobby/music-pythagorean-ratio",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"fifths": 7
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/hobby/music-pythagorean-ratio", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"fifths":7}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"fifths":7}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/hobby/music-pythagorean-ratio", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"fifths": 7
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "hobby.music_pythagorean_ratio",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_fifths | 100 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |