C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.88103 の関連記事表示

<< 0 >>
■88103  Re[7]: C#でのwaveファイルの波形表示
□投稿者/ 魔界の仮面弁士 -(2018/08/02(Thu) 17:34:53)
    No88093 (akaveco さん) に返信
    >> 上記 3 行のデータ末尾の 4 バイトに「5E,72,01,**」となので、
    >> 最初の音は 0x1725E すなわち「+94,814」かと思いますが、正しいでしょうか?
    > そうです。1725Eでした。
    
    ここが重要なところなので、再度確認。
    
    他のソフトで「正しい」波形を見た場合も、最初のデータは
    94,814 (0x1725E) 付近としてレンダリングされたということでしょうか?
    6,189,569 (0x5E7201) ではなく。
    
    
    > 符号あり、なしがあるんですね。
    
    変換元のデータが
     var data  = new byte[] { 0x9A, 0xBC, 0xDE, };
    の順で記録されていた場合、24bit整数型としては、
     リトルエンディアン(符号付き) = 0xDEBC9A = -2,179,942 (Int32  なら 0xFFDEBC9A 相当)
     リトルエンディアン(符号なし) = 0xDEBC9A = 14,597,274 (UInt32 なら 0x00DEBC9A 相当)
     ビッグエンディアン(符号付き) = 0x9ABCDE = -6,636,322 (Int32  なら 0xFF9ABCDE 相当)
     ビッグエンディアン(符号なし) = 0x9ABCDE = 10,140,894 (UInt32 なら 0x009ABCDE 相当)
    の 4 通りの意味がありえるかと思います。
    
    なお上記では、符号付の場合の負数表現を、2 の補数としています。(下記参照)
    https://ja.wikipedia.org/wiki/%E7%AC%A6%E5%8F%B7%E4%BB%98%E6%95%B0%E5%80%A4%E8%A1%A8%E7%8F%BE
    
    
    そして Windows では、バイト順をリトルエンディアンで扱いますが、
    16bit の PCM フォーマットもまた、リトルエンディアンらしいです。
    https://www.wdic.org/w/TECH/WAV
    
    そのため、24bit でも同じであろうと予想して、上記のケースでは
    9A,BC,DE = 0xDEBC9A = -2,179,942 と解釈してみました。
    
    
    しかし、ビデオDVD の 24bit リニア PCM では、ビッグエンディアンらしいです。
    (44.1kHz ではなく、48kHz と 96kHz らしいですが)
    https://wiki.multimedia.cx/index.php/PCM#24-Bit_PCM
    この場合には、9A,BC,DE = 0x9ABCDE = -6,636,322 と変換することになりそうです。
    
    
    >> data4[3] = (byte)((data[n + 2] > 0xF) ? 0xff : 0x00);
    > この部分は、符号ありに変換しているということでしょうか?
    
    そのつもりで書きました。ただしリトルエンディアンの場合ですけれども。
    24bit 値を Int32 に収めるために、不足する 1 バイト分を補っています。
    
    
    > だいぶ元の波形に近づいたように見えるのですが、
    
    グラフに描くサンプル数(データの個数)は 8054 個でしょうか。
    (再生時間としては 182.6 ミリ秒程度?)
    
    
    > なんだか最初のほうの値が負のほうに片寄っていて、おかしなことに…
    
    試しに、ビッグエンディアンとして読み取ってみたら、どうなりますか?
記事No.88011 のレス /過去ログ151より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -