| ■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 |