アプリ版:「スタンプのみでお礼する」機能のリリースについて

現在WAVEファイルをバイナリで読み込み、チャンネルごとの情報(16進数)を配列に分けて入れたいと思っています。

サンプリングレートやデータサイズを読み込んだときに
サンプリングレートなら44.1kHz ならば "44 AC 00 00"(16進数)
とヘッダではなっていますよね?
でも、実際は、44.1kHz = 44100Hz(10進数) = "00 00 AC 44"
と逆です、ではチャンネルでもそうなのでしょうか?
チャンネルはもしも3チャンネルだった場合(あまりないと思いますが。)
112233 112233…と並んでいるのでしょうか?
それとも1111 2222 3333?でしょうか。

現在手元にソースがなく詳細を書けないのですが、WAVEファイルの全体構造について詳細なサイトや書籍等をご存知でしたら教えていただけると助かります。
よろしくお願いいたします。

A 回答 (2件)

サンプリングレートについては「エンディアン」が影響してます. つまり x86 系だと複数バイトのデータは「下位バイトが先にくる」ことになっています. 従って「44 AC 00 00」というデータは「最下位バイトが 44, 下から 2番目のバイトが AC, ...」ということを意味していて, 結局普通の表現に直すと 0x0000AC44 = 44100 となります. 複数バイトで表されるものは全てこのようになっています.


で, 実際の音声データは各チャンネルのデータがインターリーブされます. 3チャンネルなら「112233 112233 ...」という並び方になります.

参考URL:http://www.kk.iij4u.or.jp/~kondo/wave/
    • good
    • 0

ここはどうでしょう?



参考URL:http://www.kk.iij4u.or.jp/~kondo/wave/#data
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!