.vocファイル
ナビゲーションに移動
検索に移動
.vocファイルとは、Creative Technologyの開発した音声データ向けのファイルフォーマットである。 1980年代末から1990年代初頭のSound Blasterにダミ声を喋らせるために考えられたものである。
当初は符号なしの8ビットPCMとADPCMデータに限定されていたが、後に16ビットのA-law圧縮とμ-law圧縮が扱えるように拡張された。
当然ながら最近のMP3(.mp3ファイル)などと比べると絶望的に音質は悪いし圧縮率もよくない。 昔の洋ゲーがよく採用していた。
データ構造
基本的にすべて整数値でリトルエンディアンとなっている。
メインヘッダー
- バイト0〜18 - 識別子文字列「Creative Voice File」
- バイト19 - 0x1A(EOF)。 間違ってvocファイルを印刷してもここで止まる親切設計
- バイト20-21 - このヘッダー部分の合計サイズ(通常0x001A)
- バイト22〜23 - バージョン番号(major << 8)| minor
- メジャーは通常0x01
- マイナーは通常0x0Aまたは0x14
- バイト24-25 - チェックサム( = 〜version + 0x1234)
データブロック
すべてのデータブロックは、プロックタイプとブロックサイズで始まる。
- バイト0 - ブロックタイプ
- バイト1〜3 - ブロックサイズ(これ以降続く可変長のデータ部分のサイズ)
ブロックタイプ
- ブロックタイプ 0x00:ターミネータ
ファイルの終わりを示す。必須ではない。
- ブロックタイプ 0x01:サウンドデータ(新規)
- バイト0 分周数
- バイト1 コーデックID
- バイト2..n オーディオデータ
サンプルレートは次のように定義される。
1000000 /(256 - frequency_divisor)
- ブロックタイプ0x02:サウンドデータ(継続)
- バイト2..n オーディオデータ
このブロックは前の「サウンドデータ(新規)」と同じコーデックパラメータを使用する。 2バイト節約。
- ブロックタイプ0x03:無音
- バイト0-1 - 無音の長さ-1(単位はサンプル)
- バイト2の周波数除数
サンプルレートは次のように定義される。
1000000 /(256 - frequency_divisor)
- ブロックタイプ0x04:マーカー
- バイト0-1 マーク値
これはアニメーションとサウンドを同期するために使用するためのもの。
- ブロックタイプ0x05:テキスト
- バイト0..nゼロ終了文字列
ここに独自のスクリプトを埋め込んであるシステムもよくある。
- ブロックタイプ0x06:繰り返し開始
- バイト0-1リピートカウント - 1
このブロック以降の次のリピート終了ブロックまでのサウンドデータは、カウント+ 1回繰り返されます。 count == 0xFFFFのとき、これは無限の繰り返しを意味します。
- ブロックタイプ0x07:繰り返し終了
リピートセクションを終了する空のブロック。
- ブロックタイプ0x08:追加情報
- バイト0〜1の周波数除数
- バイト2のコーデックID
- バイト3チャネル番号 - 1
サンプルレートは次のように定義される。
256000000 /(nb_channels *(65536 - frequency_divisor))
このブロックはサウンドブロックより前に出現する必要がある。 主にコーデックパラメータが記述されていることが多い。
- ブロックタイプ0x09:サウンドデータ(新しいフォーマット)
- バイト0-3 - サンプルレート
- バイト4 - 1サンプルあたりのバイト数
- バイト5 - チャネル番号
- バイト6-7 - codec_id
- バイト8-11 - 予約
- バイト12..n - オーディオデータ
このブロックタイプはおそらくバージョン1.20(0x0114)以上のファイルでのみ有効。