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

わんくま同盟

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

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

■88138 / 9階層)  C#でのwaveファイルの波形表示
□投稿者/ 魔界の仮面弁士 (1763回)-(2018/08/04(Sat) 00:54:26)
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

編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←Re[8]: C#でのwaveファイルの波形表示 /akaveco →Re[10]: C#でのwaveファイルの波形表示 /akaveco
 
上記関連ツリー

C#でのwaveファイルの波形表示 / akaveco (18/07/30(Mon) 05:12) #88011
Re[1]: C#でのwaveファイルの波形表示 / 魔界の仮面弁士 (18/07/30(Mon) 11:33) #88020
  └ Re[2]: C#でのwaveファイルの波形表示 / akaveco (18/07/30(Mon) 12:41) #88027
    └ Re[3]: C#でのwaveファイルの波形表示 / 魔界の仮面弁士 (18/07/30(Mon) 17:24) #88041
      └ Re[4]: C#でのwaveファイルの波形表示 / akaveco (18/07/31(Tue) 11:34) #88055
        └ Re[5]: C#でのwaveファイルの波形表示 / 魔界の仮面弁士 (18/08/01(Wed) 17:38) #88083
          └ Re[6]: C#でのwaveファイルの波形表示 / akaveco (18/08/02(Thu) 12:00) #88093
            └ Re[7]: C#でのwaveファイルの波形表示 / 魔界の仮面弁士 (18/08/02(Thu) 17:34) #88103
              └ Re[8]: C#でのwaveファイルの波形表示 / akaveco (18/08/02(Thu) 21:19) #88104
                └ C#でのwaveファイルの波形表示 / 魔界の仮面弁士 (18/08/04(Sat) 00:54) #88138 ←Now
                  └ Re[10]: C#でのwaveファイルの波形表示 / akaveco (18/08/04(Sat) 16:38) #88141
                    └ Re[11]: C#でのwaveファイルの波形表示 / 魔界の仮面弁士 (18/08/05(Sun) 05:08) #88147
                      └ Re[12]: C#でのwaveファイルの波形表示 / akaveco (18/08/08(Wed) 09:50) #88179
                        └ Re[13]: C#でのwaveファイルの波形表示 / akaveco (18/08/08(Wed) 09:51) #88180 解決済み

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信