dポイントプレゼントキャンペーン実施中!

バイナリ表示ソフトで中を覗いて、
3バイトずつ入っていることまで確認できたのですが、
実際10進数に直すとどうしても数値と波形が合いません。
一番左が符号だとすると正側に波形の山を波形ソフトで描き
データを見ると000000,84D30E,EF3D24,64A53A,000000
となっていて64A53Aだけ他の2つと符号が違うのですが
24ビットのWAVEデータを数値にするにはどうすればいいんでしょうか?
3バイトずつ読み取るのがそもそも間違ってるんでしょうか?

A 回答 (4件)

24bitのWaveデータと言うならば、今、巷に出回っているのは「Roland 24bit WAVE/MP3 RECORDER R-09HR」で使われている「96kHz リニアPCM 24bit モノラル(1チャンネル)」だろうと思われます。



本当であれば、サンプリング周波数の「96kHz」とチャンネル数の「1」は、Waveファイルのヘッダを見ないと決められないのですが「今、実際に多く使われているのは、96kHz リニアPCM 24bit モノラル(1チャンネル)だけと言っても過言ではない」ので、もう、そうだと仮定しちゃいます。

このデータは、1データ24ビットの1チャンネルですから、量子化データは
[[LowByte][MiddleByte][HighByte]][[LowByte][MiddleByte][HighByte]][[LowByte][MiddleByte][HighByte]]…………
と言うバイト並びで並んでいます。

バイト並びが
00 00 00 84 D3 0E EF 3D 24 64 A5 3A 00 00 00
であれば、実際の量子化データは
000000 0ED384 243DEF 3AA564 000000
です。

Low-Middle-Highで1セットなので注意して下さい。
    • good
    • 2
この回答へのお礼

そういうことだったんですか。
仕様がわからないとどうしようもないんですね。
ローランドで使われているというだけで、24bitというだけで
いくらでもフォーマットが変わってしまうんですね。
正負の中でも逆なことも教えていただきありがとうございました。
すっきりしました!

お礼日時:2009/01/09 13:49

因みに、最大振幅の波形データを作ると


+1 ------------------------ 7FFFFF
       +++              |
     ++   ++          +  |
    +      +        +  000000
 0 ------------------------
   +        +      +   FFFFFF
             ++  ++     |
               +++       |
-1 ------------------------ 800000
と言う感じになります。
    • good
    • 2

wave形式は単なるコンテナ定義なので中味の形式はヘッダを確認しないとわかりませんが?


ヘッダから得られたコーデック情報からコーデックに合わせたデータ取得をしないと意味のない物になりますが。

この回答への補足

コーデックはフォーマットの事なんでしょうか
RIFF,WAVE,fmt と、フォーマットタグが1のPCMであることは確認しました。
3バイトのべた並びだと考えるのが間違っているのでしょうか?

補足日時:2009/01/09 12:12
    • good
    • 0

一応確認: 「3バイトずつ入っている」ことはどうやって確認したんでしょうか? WAVヘッダにチャネル数とか 1サンプルのビット数な

どが書いてあるんだけど, そこは確認してますか?

この回答への補足

wFormatTag 1
nChannels 1
サンプル 44100
nBlockAlign 3
ビット24
となっていました。
Wavosaurという波形ソフトで点を移動させて山を作っただけなんです
もっと色々書いてみたんですが1点書くと3バイトずつバイナリエディタで変わっているのを確認し、
いくつか書くと符号が逆になっている部分ができるのを確認しました。
他の波形ソフトで見ても山になってました。
何も入力しないと、00で埋め尽くされるので、
値の範囲は-8388608~0~+8388608だと思うのですが、
最初に書いた3点の一つが符号が逆でどうしても理解できません
教えてください。お願いします。

補足日時:2009/01/09 12:08
    • good
    • 0

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