ADM BWFを普通のwavに分割する①
流れとしては
- ADM BWFを読み込んでデータ部分のバイト列を取得する
- ixml部分に(多分)書かれている情報に従ってデータのバイト列を分割する
- 分割したバイト列にファイルごとにヘッダ付けてwavとして書き出す
ということになるだろう。多分。
ADM BWFを読み込んでデータ部分のバイト列を取得する
C#
[C#] Wave波形を読み込むよ – Pelican Philosophy
RIFFについて
RIFFファイルについて – RIFFファイルの概要と読み込み | C++でVST作り
Wavについて
WAVEデータの作成と再生【Windowsプログラミング研究所】
wFormatTag はフォーマットです。PCM形式は WAVE_FORMAT_PCM です。
nChannels はチャンネル数です。1チャンネルならモノラル、2チャンネルならステレオです。
nSamplesPerSec は標本化周波数です。
nAvgBytesPerSec は1秒間のバイト数です。計算式は wfe.nSamplesPerSec * wfe.nBlockAlign です。
nBlockAlign はブロックアライメント(データの最小単位)です。計算式は wfe.nChannels * wfe.wBitsPerSample/8 です。
wBitsPerSample は量子化ビット数です。
cbSize は使いません。0 を指定して下さい。
こういう具体的な話はありがてえ
C, C++
こういうbyte列の処理はなんとなくCとかC++でやりたいけど、それはわきに置いておく。メモだけ残しておこう
謎のC言語ブログ: Broadcast Wave Format に対応した WAVE 音声の読み込み
その他
SoundPlayerという関数でwav再生ができるとのことだが、再生したいわけではない。メモだけ
あとMedi Control Interfaceというのも気になるな。これも再生などがメインのようだ。 MCI (Media Control Interface) を利用してWaveファイルを再生する : C# | iPentec
ixml部分に(多分)書かれている情報に従ってデータのバイト列を分割する
この前抽出したiXMLをここ見ながら分割する。これまでの情報によるとオブジェクトオーディオ以外に7.1.2chの各bedで再生されるwavも含まれているはず。それを狙う。
https://professionalsupport.dolby.com/s/article/Dolby-Atmos-ADM-Profile-specification?language=en_US
ただこの前試したlogicのサンプルプロジェクトは、オートメーション付きだからかiXMLだけで5MBとかあった。なので自分で簡易なサンプル曲を作らなければ。
まあ試すだけなら簡単にできそうだな。ステムミックスを作ってからプロジェクト設定の空間オーディオをオンにすればOKっぽい。