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

わんくま同盟

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

C# と VB.NET の入門サイト


■88083 / )  Re[5]: C#でのwaveファイルの波形表示
□投稿者/ 魔界の仮面弁士 (1757回)-(2018/08/01(Wed) 17:38:19)
No88055 (akaveco さん) に返信
> バイナリエディタで見てみたところ以下のようになっていました。
> 
> 52 49 46 46 86 5E 00 00 57 41 56 45 66 6D 74 20 
> 10 00 00 00 01 00 01 00 44 AC 00 00 CC 04 02 00 
> 03 00 18 00 64 61 74 61 62 5E 00 00 5E 72 01 20

上記 3 行のデータ末尾の 4 バイトに「5E,72,01,**」となので、
最初の音は 0x1725E すなわち「+94,814」かと思いますが、正しいでしょうか?


 [00000-00003] RIFF.ID       : 52,49,46,46 "RIFF"
 [00004-00007] RIFF.Size     : 00005E86 (24,198 Bytes)
 [00008-0000B] RIFF.FileType : 57,41,56,45 ("WAVE")

 [0000C-0000F] Chunk.ID      : 66,6D,74,20 ("fmt ")
 [00010-00013] Chunk.Size    : 00000010 (16 Bytes)
 [00014-00015] フォーマットID: 0001 (WAVE_FORMAT_PCM)
 [00016-00017] チャンネル数  : 0001 (モノラル)
 [00018-0001B] 標本化周波数  : 0000AC44 (44100 Hz = 44.1 kHz)
 [0001C-0001F] 秒間バイト数  : 000204CC (132,300)
 [00020-00021] ブロックサイズ: 0003 (3 Bytes = 24bit)
 [00022-00023] 量子化ビット数: 0018 (24bit)

 [00024-00027] Chunk.ID      : 64,61,74,61 ("data")
 [00028-0002B] Chunk.Size    : 00005E62 (24,162 Bytes)
 [0002C-05E89] 波形データ    : 5E,72,01,20 ……



> 提案いただいたやり方でやってみても、どうもうまくいきません。
あー。24bit の負数処理忘れて、符号なしになってますね

// data4[3] = 0;
data4[3] = (byte)((data[n + 2] > 0xF) ? 0xff : 0x00);

に訂正しておいてください。



符号付き 24bit 整数型の場合:
 0x000000 =  0
 0x000001 = +1
 0x000002 = +2
   :
 0x7FFFFD = +8,388,605
 0x7FFFFE = +8,388,606
 0x7FFFFF = +8,388,607
 0x800000 = -8,388,608
 0x800001 = -8,388,607
 0x800002 = -8,388,606
   :
 0xFFFFFD = -3
 0xFFFFFE = -2
 0xFFFFFF = -1


符号なし 24bit 整数型の場合:
 0x000000 =  0
 0x000001 = +1
 0x000002 = +2
   :
 0x7FFFFD = +8,388,605
 0x7FFFFE = +8,388,606
 0x7FFFFF = +8,388,607
 0x800000 = +8,388,608
 0x800001 = +8,388,609
 0x800002 = +8,388,610
   :
 0xFFFFFD = +16,777,213
 0xFFFFFE = +16,777,214
 0xFFFFFF = +16,777,215

返信 編集キー/


管理者用

- Child Tree -