音声ループのクロスフェード時間を計算
このクロスフェード計算ツールは、トラックの長さと希望する重複時間から、実用的な2つの時間を求めます。終端が次の先頭へ溶け込み始める位置と、同じ位置が再び聞こえるまでの体感上のループ時間です。元音源の半分を超えるクロスフェードは受け付けません。音声のアップロード、デコード、解析、変更は行わず、エディター、サンプラー、ゲーム、展示設備、メディア処理で使える再現可能な時間情報だけを返します。
無料で実行
音源の終端に重複区間を配置します
ループのクロスフェードでは、トラックの最後の区間と、次の繰り返しの先頭区間を同時に再生します。トラック全体の長さと希望する重複時間を秒で入力してください。計算ツールは全体時間からクロスフェード時間を引き、開始位置を求めます。120秒のトラックに5秒の重複を設定した場合、終端側の領域は115秒から始まります。その位置から終端まで、末尾の音量を下げながら、先頭のコピーを上げます。結果では、この位置をcrossfade_start_secondsとして示しますので、マーカー、編集指示、サンプラー設定、レンダリング命令に利用できます。2つの値は、同じ音源タイムラインを秒で表している必要があります。このツールは、音楽的に適切な位置の選択、位相の検査、拍の検出、先頭と末尾の相性の判定は行いません。これらは制作上および信号上の判断です。重複時間を決めた後、その区間を正確に配置するための数値を提供します。
聞こえ方に基づくループ時間を把握します
クロスフェードでは、本来なら順番に再生される時間を重ねます。そのため、連続する2回の再生で同じ位置に達するまでに、音源全体の長さを体感するわけではありません。体感上のループ時間は、トラックの長さからクロスフェード時間を引いた値です。トラックが0秒から始まる場合、クロスフェード開始位置と同じ値になります。120秒の音源に5秒のクロスフェードを入れると、周期は115秒です。ある回の最後の5秒が流れている間に、次の回の最初の5秒がすでに鳴っています。この値を使うと、アニメーション、照明、ゲームイベント、再生マーカーなどを、元ファイルの長さではなく、実際に聞こえる周期へ同期できます。長さ0のクロスフェードも有効で、その場合は開始位置と体感時間の両方が元の長さになります。出力は小数の秒であり、サンプル数やタイムコードには変換しません。サンプル精度が必要な場合は、プロジェクトのサンプルレートと丸め規則で変換してください。
クロスフェードを有効な範囲に保ちます
重複時間には0を指定できますが、負の値やトラックの半分を超える値は指定できません。半分という上限により、先頭側と終端側の領域が中央を越えて同じ素材を奪い合う状態を防ぎます。したがって、30秒のトラックでは最大15秒まで使用でき、それより長い値は拒否されます。ちょうど半分は有効で、開始位置と体感周期はいずれも15秒になります。入力はどちらも有限の数値で、トラックの長さは0より大きくなければなりません。厳密な同期が必要なときは、丸められた表示値ではなく、測定した音源時間を使ってください。この機能が行うのは時間軸の計算だけです。リニアやイコールパワーのカーブ生成、遅延補正、無音の除去、トランジェントの整列、継ぎ目が聞こえないことの確認は行いません。配置後は実際に試聴し、音量、位相、リズム、残響、エンコード後の出力を確認してください。ブラウザーでは直接計算でき、自動化されたAPIリクエスト1回の料金は$0.002です。
活用例
エディターにループマーカーを設定
選んだ重複時間から、フェードカーブを適用する前に正確な終端マーカーと周期を求めます。
ゲームや展示設備を同期
重複するサウンドトラックの体感周期に、映像、イベント、照明の繰り返しを合わせます。
一括処理の指示書を作成
専用の音声処理系へ渡す前に、長さが既知の各トラックについて再現可能な区間を算出します。
よくある質問
クロスフェード開始位置の計算式は何ですか?
トラックの長さからクロスフェード時間を引きます。どちらも秒単位です。
体感上のループが元音源より短いのはなぜですか?
重複区間では終端と次の先頭が同時に鳴るため、その時間を1回だけ数えるからです。
トラックの半分をクロスフェードにできますか?
はい。ちょうど半分は有効であり、半分を超える場合だけ拒否されます。
音声ファイルを作成または処理しますか?
いいえ。時間位置だけを計算し、音声のアップロード、デコード、検査、変更は行いません。
最適なカーブやループ位置も選べますか?
いいえ。それらはエディターで選択して試聴し、この計算結果を指定した重複区間に使用してください。
APIでの計算料金はいくらですか?
APIリクエスト1回の料金は$0.002です。同じ決定的な計算をブラウザーで直接実行できます。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/audio/loop-point-crossfade-calc \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"track_duration_seconds":120,"crossfade_length_seconds":5}'const res = await fetch("https://api.kit.forhosting.com/audio/loop-point-crossfade-calc", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"track_duration_seconds": 120,
"crossfade_length_seconds": 5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/audio/loop-point-crossfade-calc",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"track_duration_seconds": 120,
"crossfade_length_seconds": 5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/audio/loop-point-crossfade-calc", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"track_duration_seconds":120,"crossfade_length_seconds":5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"track_duration_seconds":120,"crossfade_length_seconds":5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/audio/loop-point-crossfade-calc", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"track_duration_seconds": 120,
"crossfade_length_seconds": 5
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "audio.loop_point_crossfade_calc",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_mb | 200 |
max_minutes | 180 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |