TOOLPIPO LAB CUE / FLAC
CUEファイルが再生できない・曲位置がずれる原因は?
音声ファイルはあるのに、CUEを開くとうまくいかない。まず調べたいのは、ファイル名と曲の開始位置です。6秒の合成音声で、どこが食い違うのか確かめました。
公開日・検証日:2026年9月30日
結論
FILEの音声参照とINDEX 01の曲位置は、それぞれ確認する必要があります。今回の検査は選択したファイルの整合性を調べるもので、プレーヤーでの再生を保証しません。
検証概要
- 検証日
- 検証条件
- 自作ファイル・条件・実測結果は本文に掲載
- 再現用ファイル
- 検証ファイルをダウンロード
ファイル名違いと、音声に合わない開始位置を検出した
FILEは音声の参照先、INDEX 01はその音声の中で曲が始まる位置です。
FILE名を変えると参照先不足、6秒の音声に8秒のINDEXを指定すると範囲外、同じFILEで4秒から3秒へ戻すと逆順として検出されました。
一方、別のFILEに移って0秒へ戻るCUEや、INDEX 00・PREGAPを含むCUEは、それだけでは異常になりませんでした。今回はファイルの構造を調べた結果です。全プレーヤーで同じ再生失敗が起きることを示す実験ではありません。
正常な例では、6秒の音声が2秒ずつに分かれた
CUEは音そのものではなく、どの音声をどこから使うかを書いたテキストです。今回は1つの音声に3つのTRACK(曲)を置きました。開始位置は0秒・2秒・4秒です。
FILE "album.wav" WAVE
TRACK 01 AUDIO
INDEX 01 00:00:00
TRACK 02 AUDIO
INDEX 01 00:02:00
TRACK 03 AUDIO
INDEX 01 00:04:00
| 曲 | INDEX 01 | フレーム数 | 秒換算 | 開始位置から次の境界まで |
|---|---|---|---|---|
| TRACK 01 | 00:00:00 | 0 | 0.000秒 | 0〜2秒(2.000秒) |
| TRACK 02 | 00:02:00 | 150 | 2.000秒 | 2〜4秒(2.000秒) |
| TRACK 03 | 00:04:00 | 300 | 4.000秒 | 4〜6秒(2.000秒) |
表の範囲は、隣のINDEX 01か音声の終端までを計算したものです。曲間部分をどちらの曲に含めるかなど、プレーヤーの扱いまで確定する値ではありません。
音声の作り方と測定方法
ToolPipoが検証用に生成したsynthetic fixture(合成ファイル)です。市販CDや実ユーザーの音源は使っていません。WAVは44,100Hz・16bit・モノラルで、2秒ごとに300Hz・600Hz・900Hzの合成音を入れました。6秒で264,600サンプルです。
同じ音声から、実データを持つFLACも生成しました。WAVのデータ量とFLACのSTREAMINFOから長さを読み、公開済みCUEチェッカーの解析と照合しました。さらにChromiumで音声をデコードし、16bit PCMに戻した全サンプルの一致を確認しています。CDの書き込み適合性やリッピング精度の試験ではありません。
時刻の最後の2桁は、1秒の75分の1
CUEの時刻はMM:SS:FFです。最後のFFは小数秒でもミリ秒でもなく、1/75秒単位のフレーム数です。GNUのINDEX解説にも、FILEの先頭を基準にした位置と説明されています。
00:02:00=150フレーム=2.000000秒。00:02:37=187フレーム=2+37/75=2.493333秒(小数点以下6桁へ丸め)。
00:02:00は正常なWAV版、00:02:37はFLAC版のTRACK 02に指定しました。どちらも配布したCUEから値を読み、自動検査しています。
FILE名が違うと、音声があっても参照先が見つからない
音声はalbum.wavのまま、CUEだけFILE "album-missing.wav" WAVEに変えました。CUEは解析できましたが、指定された音声名がなく、参照先不足を1件検出しました。
CUEと音声を一緒に移動した後、片方だけ名前を変えた場合に起こり得る食い違いです。プレーヤーによっては手動で音声を関連付け直せるため、「どの環境でも再生不能」とは言えません。
大文字・小文字だけの差も分けました。音声をAlbum.wav、CUEをalbum.wavにすると、完全一致ではなくcase候補として「要確認」になりました。今回はToolPipoの名前照合を試した結果で、OSやファイルシステムごとの再生比較ではありません。
6秒の音声に8秒を指定すると、範囲外になった
3曲目をINDEX 01 00:08:00へ変えました。開始位置は600フレーム、8.000秒。音声は6.000秒なので、終端より後ろを指しています。
範囲外のINDEX 01は1件でした。プレーヤーが停止するか、無視するか、補正するかは測定していません。
同じFILEで4秒から3秒へ戻ると、逆順になった
開始位置を0秒→4秒→3秒にしたCUEでは、同一FILE内の逆戻りを1件検出しました。TRACK 02から次のINDEX 01までを、正の長さとして計算できません。
この判定は同じFILE内の話です。次の音声ファイルに切り替わった後の0秒とは区別しています。
INDEX 00は音声内の位置、PREGAPは別のgap指定
INDEX 00は、FILE内にある曲前の領域の開始位置です。今回はTRACK 02にINDEX 00 00:01:50とINDEX 01 00:02:00を置きました。2つの位置の差は25フレーム、0.333333秒です。
その区間にも今回は合成音を入れました。INDEX 00があるだけで「ここは無音」とは判断できません。
別のCUEにはPREGAP 00:00:50を指定しました。これは50フレームのgapを指定するもので、元の音声内の位置を示すINDEX 00とは別です。GNUのPREGAP解説も、音声ファイル内にはないgapとして区別しています。
解析結果も別々です。INDEX 00のCUEはINDEX 00が1件、PREGAPのCUEはPREGAPが1件でした。再生時にgapをどう扱うかは今回の試験に含めていません。
FILEが変われば、開始位置が0秒へ戻っても正常
次は2秒の音声を3ファイル用意し、どれもINDEX 01 00:00:00にしました。各INDEXはそれぞれのFILEの先頭を指すので、同一FILE内の逆戻りにはなりません。照合済みFILEは3件、順序異常は0件でした。
9条件を比べると、問題の種類を分けられた
| 検証条件 | FILE照合 | INDEX 01の並び | 音声の長さ | ToolPipo解析結果 |
|---|---|---|---|---|
| 正常な1ファイル | exact | 00:00:00 → 00:02:00 → 00:04:00 | 6秒 | 整合:3区間とも2秒 |
| FILE名が違う | missing | 00:00:00 → 00:02:00 → 00:04:00 | 6秒 | 要確認:参照先不足を1件検出 |
| 音声の終端を超える | exact | 00:00:00 → 00:02:00 → 00:08:00 | 6秒 | 要確認:INDEX 01範囲外を1件検出 |
| 同じFILE内で逆戻り | exact | 00:00:00 → 00:04:00 → 00:03:00 | 6秒 | 要確認:INDEX逆戻りを1件検出 |
| INDEX 00を含む | exact | 00:00:00 → 00:02:00 → 00:04:00 | 6秒 | 整合:INDEX 00を1件として分離 |
| PREGAPを含む | exact | 00:00:00 → 00:02:00 → 00:04:00 | 6秒 | 整合:PREGAPを1件として分離 |
| 正常な3ファイル | exact / exact / exact | 00:00:00 → 00:00:00 → 00:00:00 | 2秒 / 2秒 / 2秒 | 整合:FILEごとに0秒へ戻る |
| 大文字・小文字だけ違う | case | 00:00:00 → 00:02:00 → 00:04:00 | 6秒 | 要確認:case候補として表示 |
| FLACをWAVE表記で参照 | exact | 00:00:00 → 00:02:37 → 00:04:00 | 6秒 | 整合:音声の中身もデコード可能 |
FLAC版はFILE "album.flac" WAVEのままで、ToolPipoの解析では「整合」でした。長さは6.000秒です。拡張子とWAVE表記の組み合わせだけで即エラーとは扱いません。libcueの解析実装でも、FILEの形式トークンとファイル名を分けて扱っています。ただし、今回確認したのはToolPipoの解析と音声デコードで、CUEを開く各プレーヤーの互換性ではありません。
「整合」は、確認した参照・時間位置に問題がなかったという意味です。音声ファイルが無傷であることや、どのプレーヤーでも再生できることの保証ではありません。
自分のファイルは、CUEと音声を一緒に確認する
- CUE・音声整合性チェックを開きます。
- 同じアルバムのCUE 1件と、それが参照するFLAC・WAVをまとめて選びます。
- FILEの不足や名前違い、INDEXの範囲外・順序異常を確認します。
音声自体がデコードできない、形式が未対応、ファイルが破損している、といった原因はCUEの不整合とは別です。このチェッカーは音声のヘッダー情報を読みますが、音声全体のデコードや破損検査はしません。今回も破損音声を使った実験はしていません。
同じ9条件を試せる検証用ZIP
ZIPを展開し、1条件のフォルダにあるalbum.cueと音声を一緒に選んでください。全フォルダをまとめて選ぶとCUEが複数になるため、1条件ずつ試します。条件一覧と注意点はZIP内のREADMEにも記載しました。
ファイルのサイズ・SHA-256と実測データ
ZIP:33,215バイト。SHA-256:b91e65c24a66f41db5b6451641453b24334fe9d5d99e2a3bf83354f612da60f4。
9条件の実測値・音声ごとのサイズとSHA-256(JSON)
正常なWAVは529,244バイト、FLACは529,957バイト。音声は短い合成信号のみで、実在の楽曲や個人情報は含みません。
検証条件と参考資料
検証日:2026年9月30日。9つのCUE条件を、公開済みToolPipo解析処理と独立した期待値で照合しました。図と掲載数値は配布ファイルから生成し、専用テストでも一致を確認しています。
実CD、ステレオCD書き込み、実機の再生、プレーヤー間の比較、音声破損、文字コードや複雑なフォルダ構成は今回の検証対象外です。GNU資料はCUEコマンドの説明、RFCとMicrosoft資料は音声形式の確認に使いました。今回のモノラル合成音声がCD作成に適合するという主張ではありません。
- GNU ccd2cue:FILE・TRACKとCUE形式
- RFC 9639:FLACのSTREAMINFO・音声フレーム
- Microsoft:WAVのRIFF構造
- Microsoft:WAVEFORMATEXのサンプルレート・ブロックサイズ
制作方針はコンテンツ制作・計算検証方針をご覧ください。