TOOLPIPO LAB CUE / FLAC

CUEファイルが再生できない・曲位置がずれる原因は?

音声ファイルはあるのに、CUEを開くとうまくいかない。まず調べたいのは、ファイル名と曲の開始位置です。6秒の合成音声で、どこが食い違うのか確かめました。

6秒のalbum.wav内でTRACK 01・02・03が0秒・2秒・4秒から始まる図

結論

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
正常な1ファイルの実測値
曲INDEX 01フレーム数秒換算開始位置から次の境界まで
TRACK 0100:00:0000.000秒0〜2秒(2.000秒)
TRACK 0200:02:001502.000秒2〜4秒(2.000秒)
TRACK 0300:04:003004.000秒4〜6秒(2.000秒)
6秒のalbum.wav内でTRACK 01・02・03が0秒・2秒・4秒から始まる図
図1。最後の曲は4秒から6秒まで。INDEX 01が4秒でも、曲の長さが4秒という意味ではありません。

表の範囲は、隣の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からINDEX 01までの音声内区間と、PREGAPで別に指定するgapの比較図
図2。INDEX 00の区間は元の音声に含まれます。PREGAPを書いても、配布WAVそのものに無音が追加されるわけではありません。

解析結果も別々です。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件でした。

1ファイルでは0秒・2秒・4秒、3ファイルでは各ファイルの0秒を参照する比較図
図3。1本の音声を分けるCUEと、曲ごとに音声が分かれたCUEでは、時間の基準が違います。

9条件を比べると、問題の種類を分けられた

配布ファイルから得た実測結果
検証条件FILE照合INDEX 01の並び音声の長さToolPipo解析結果
正常な1ファイルexact00:00:00 → 00:02:00 → 00:04:006秒整合:3区間とも2秒
FILE名が違うmissing00:00:00 → 00:02:00 → 00:04:006秒要確認:参照先不足を1件検出
音声の終端を超えるexact00:00:00 → 00:02:00 → 00:08:006秒要確認:INDEX 01範囲外を1件検出
同じFILE内で逆戻りexact00:00:00 → 00:04:00 → 00:03:006秒要確認:INDEX逆戻りを1件検出
INDEX 00を含むexact00:00:00 → 00:02:00 → 00:04:006秒整合:INDEX 00を1件として分離
PREGAPを含むexact00:00:00 → 00:02:00 → 00:04:006秒整合:PREGAPを1件として分離
正常な3ファイルexact / exact / exact00:00:00 → 00:00:00 → 00:00:002秒 / 2秒 / 2秒整合:FILEごとに0秒へ戻る
大文字・小文字だけ違うcase00:00:00 → 00:02:00 → 00:04:006秒要確認:case候補として表示
FLACをWAVE表記で参照exact00:00:00 → 00:02:37 → 00:04:006秒整合:音声の中身もデコード可能

FLAC版はFILE "album.flac" WAVEのままで、ToolPipoの解析では「整合」でした。長さは6.000秒です。拡張子とWAVE表記の組み合わせだけで即エラーとは扱いません。libcueの解析実装でも、FILEの形式トークンとファイル名を分けて扱っています。ただし、今回確認したのはToolPipoの解析と音声デコードで、CUEを開く各プレーヤーの互換性ではありません。

「整合」は、確認した参照・時間位置に問題がなかったという意味です。音声ファイルが無傷であることや、どのプレーヤーでも再生できることの保証ではありません。

自分のファイルは、CUEと音声を一緒に確認する

  1. CUE・音声整合性チェックを開きます。
  2. 同じアルバムのCUE 1件と、それが参照するFLAC・WAVをまとめて選びます。
  3. FILEの不足や名前違い、INDEXの範囲外・順序異常を確認します。

音声自体がデコードできない、形式が未対応、ファイルが破損している、といった原因はCUEの不整合とは別です。このチェッカーは音声のヘッダー情報を読みますが、音声全体のデコードや破損検査はしません。今回も破損音声を使った実験はしていません。

同じ9条件を試せる検証用ZIP

CUE・WAV・FLACの検証用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作成に適合するという主張ではありません。

制作方針はコンテンツ制作・計算検証方針をご覧ください。

自分のファイルで確認する

自分のファイルで確認する

関連する検証