■No88104 (akaveco さん) に返信 > data4[3] = (byte)((data[n + 2] > 0xF) ? 0xff : 0x00); 原因判明!! 投稿時に盛大な転記ミスしてました。ごめんなさい。 正しくは data4[3] = (byte)((data[n + 2] > 0x7F) ? 0xff : 0x00); ですね…。 > 以下はデータを出力したものです。 > https://drive.google.com/file/d/1jQGRPR-jEBi0kYJlkTOKh4BmT_JnH4Kk/view?usp=sharing > 73 > value : FF2B68DF > 74 > value : FF7FFFFF > 75 > value : FF52600D ということで、符号処理でミスってました。申し訳ない。 3〜4文字目が 80〜FF の時は、1〜2 文字目が FF になり、 3〜4文字目が 00〜7F の時は、1〜2 文字目が 00 でなければなりません。 …ということで、上記は、 #73 が 0x002B68DF #74 が 0x007FFFFF #75 が 0x0052600D となるべきでした。#74 は24bit整数の最大値を指していますね。 > 他のソフトというのは、ただの音楽プレイヤーなので、おそらくデータの確認はできないと思います。 私自身も、Wave フォーマットに詳しいわけではないので、 ひとまず Sazanami というソフトをインストールして確認してみました。 下図は、最初から 90 サンプル(2.041ミリ秒弱)までを拡大表示してみたところです。 74 番目のサンプルが、最大値(1.0)を指していることがわかります。 http://www.vb-user.net/junk/replySamples/2018.08.04.00.51/90.png 前後の値も、最大値に対する割合で算出してみると、 #73 は 0x2B68DF で 0.3391379522249642 相当 #74 は 0x7FFFFF で 1.0000000000000000 相当 #75 は 0x52600D で 0.6435563139386551 相当 …ということになり、上記波形図と合致しますね。 > 0 > value : 1725E 0x1725E ÷ 0x7FFFFF = 94814 ÷ 8388607 ≒ 0.0113027109268559 波形の #0 も 0.113 付近だったので、大きくズレてはいなさそう。 http://www.vb-user.net/junk/replySamples/2018.08.04.00.51/0.png 次に確認するべきは負数領域。 これは冒頭の #1〜#3 のサンプルが使えます。 > 1 > value : FFFEA120 > 2 > value : FFFA2DA9 > 3 > value : FFFF2443 #1 は 0xFFFEA120 = -89824 で、約 -0.0107 #2 は 0xFFFA2DA9 = -381527 で、約 -0.0455 #3 は 0xFFFF2443 = -56253 で、約 -0.0067 これも正しいようです。 http://www.vb-user.net/junk/replySamples/2018.08.04.00.51/1_3.png http://www.vb-user.net/junk/replySamples/2018.08.04.00.51/2.png
- Child Tree -