<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to SmallSignalAndResamplerJA</title><link>https://sourceforge.net/p/playpcmwin/wiki/SmallSignalAndResamplerJA/</link><description>Recent changes to SmallSignalAndResamplerJA</description><atom:link href="https://sourceforge.net/p/playpcmwin/wiki/SmallSignalAndResamplerJA/feed" rel="self"/><language>en</language><lastBuildDate>Mon, 24 Dec 2018 02:47:37 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/playpcmwin/wiki/SmallSignalAndResamplerJA/feed" rel="self" type="application/rss+xml"/><item><title>SmallSignalAndResamplerJA modified by yamamoto2002</title><link>https://sourceforge.net/p/playpcmwin/wiki/SmallSignalAndResamplerJA/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v61
+++ v62
@@ -25,7 +25,7 @@

 ![図1 44.1kHz 16bit PCM 8kHz -90dBFS 正弦波](https://sourceforge.net/p/playpcmwin/wiki/SmallSignalAndResamplerJA/attachment/4416_8kHzM90dB.png)
-図1 44.1kHz 16bit PCM 8kHz -90dBFS 正弦波
+図1 44.1kHz 16bit PCM 8kHz -90dBFS 正弦波。グラフの横軸は時間。

 ![図2 44.1kHz 16bit PCM 8kHz -90dBFS 正弦波を192kHz 32bit float PCMに変換](https://sourceforge.net/p/playpcmwin/wiki/SmallSignalAndResamplerJA/attachment/19232_8kHzM90dB.png)
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">yamamoto2002</dc:creator><pubDate>Mon, 24 Dec 2018 02:47:37 -0000</pubDate><guid>https://sourceforge.net3c51ed1d4a095568e7e1a62350ec5ba10c02fc05</guid></item><item><title>SmallSignalAndResamplerJA modified by yamamoto2002</title><link>https://sourceforge.net/p/playpcmwin/wiki/SmallSignalAndResamplerJA/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v60
+++ v61
@@ -40,7 +40,7 @@
 図4  44.1kHz 16bit PCM 8kHz -90dBFS 正弦波を192kHz 32bit float PCMに変換し、量子化ビット数を16bitに削減したPCMデータの波形。

-![図5 44.1kHz 16bit PCM 1kHz -90dBFS 正弦波](https://sourceforge.net/p/playpcmwin/wiki/SmallSignalAndResamplerJA/attachment/4416_1kHzM90dB4.png)
+![図5 44.1kHz 16bit PCM 1kHz -90dBFS 正弦波](https://sourceforge.net/p/playpcmwin/wiki/SmallSignalAndResamplerJA/attachment/4416_1kHzM90dB5.png)
 図5 44.1kHz 16bit PCM 1kHz -90dBFS 正弦波

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">yamamoto2002</dc:creator><pubDate>Sun, 23 Dec 2018 17:46:42 -0000</pubDate><guid>https://sourceforge.netedc464a58fa56f533196088e803949638119a6be</guid></item><item><title>SmallSignalAndResamplerJA modified by yamamoto2002</title><link>https://sourceforge.net/p/playpcmwin/wiki/SmallSignalAndResamplerJA/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v59
+++ v60
@@ -40,7 +40,7 @@
 図4  44.1kHz 16bit PCM 8kHz -90dBFS 正弦波を192kHz 32bit float PCMに変換し、量子化ビット数を16bitに削減したPCMデータの波形。

-![図5 44.1kHz 16bit PCM 1kHz -90dBFS 正弦波](https://sourceforge.net/p/playpcmwin/wiki/SmallSignalAndResamplerJA/attachment/4416_1kHzM90dB3.png)
+![図5 44.1kHz 16bit PCM 1kHz -90dBFS 正弦波](https://sourceforge.net/p/playpcmwin/wiki/SmallSignalAndResamplerJA/attachment/4416_1kHzM90dB4.png)
 図5 44.1kHz 16bit PCM 1kHz -90dBFS 正弦波

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">yamamoto2002</dc:creator><pubDate>Sun, 23 Dec 2018 17:43:57 -0000</pubDate><guid>https://sourceforge.netbffcd52ba0f6867324744f6a42632d4cdeb7eb1d</guid></item><item><title>SmallSignalAndResamplerJA modified by yamamoto2002</title><link>https://sourceforge.net/p/playpcmwin/wiki/SmallSignalAndResamplerJA/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v58
+++ v59
@@ -40,7 +40,7 @@
 図4  44.1kHz 16bit PCM 8kHz -90dBFS 正弦波を192kHz 32bit float PCMに変換し、量子化ビット数を16bitに削減したPCMデータの波形。

-![図5 44.1kHz 16bit PCM 1kHz -90dBFS 正弦波](https://sourceforge.net/p/playpcmwin/wiki/SmallSignalAndResamplerJA/attachment/4416_1kHzM90dB2.png)
+![図5 44.1kHz 16bit PCM 1kHz -90dBFS 正弦波](https://sourceforge.net/p/playpcmwin/wiki/SmallSignalAndResamplerJA/attachment/4416_1kHzM90dB3.png)
 図5 44.1kHz 16bit PCM 1kHz -90dBFS 正弦波

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">yamamoto2002</dc:creator><pubDate>Sun, 23 Dec 2018 17:39:49 -0000</pubDate><guid>https://sourceforge.netba9ab52e5db4b1ee524638304656ab3e15c48da8</guid></item><item><title>SmallSignalAndResamplerJA modified by yamamoto2002</title><link>https://sourceforge.net/p/playpcmwin/wiki/SmallSignalAndResamplerJA/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v57
+++ v58
@@ -4,7 +4,7 @@

 たとえばWindowsのサウンドの設定で共有モードの既定の形式で192kHz 24ビットが選択されているときにPPWで44.1kHz 16bit PCM音声を再生しようとすると、PPWは再生開始前にResampler MFTを呼び出して192kHz 32bit floatのPCMデータを作ってから再生を開始します。共有モード再生時のWASAPIは32bit floatサンプルフォーマットのPCMのみ受け付けるためPPWは32bit floatのPCMデータを用意します。このデータはWASAPIの共有モードミキサーとAPOを通って、最後に量子化ビット数が24ビット整数値になってDACに送り出されます。

-上記の具体例では、この変換処理によってオリジナルのサンプルフォーマットが16bit整数だったものが一時的に32bit Floatに増加します。このとき新しく生成された補間サンプル値がどこに置かれるかを観察します。
+上記の具体例では、この変換処理によってオリジナルのサンプルフォーマットが16bit整数だったものが一時的に32bit Floatに増加します。このとき新しく生成された補間サンプル値がどこに置かれるかを観察しましょう。

 最初に、一見すると良い変換波形のように見えるケースから紹介します。図1はWaveGeneで生成した8kHz -90dBFS正弦波を含む44.1kHz 16bit PCMデータです。16bit PCMは-90dBFSの信号を綺麗に記録することは出来ません。サンプル値の縦軸は飛び飛びの値しか取ることが出来ず、-1,0,+1の3つの値のうちどれかの値になります。Adobe Auditionで観察すると(図1)悪条件下でありながらも偶然が味方し8kHz正弦波のように見えるアナログ音声波形がリコンストラクションされています。図2および図3はResampler MFTでこのPCMデータを読み込んでQuality=60で192kHzにアップサンプルしたものです。Resampler MFTの出力量子化ビット数は32ビットfloatに設定しました。Resampler MFTは内部の演算を32bit floatで行っているのでしょう。補間によって作り出されたサンプル値(図3参照)は16bitよりも「高精度」な位置に置かれています。しかし元々のサンプル位置の精度が荒いのにもかかわらず全て正確な位置であると仮定して計算しているので、実際の高さ方向の精度は16bitよりも良くなっているわけではなく、オリジナルデータを作るときの16bit量子化によって発生した量子化雑音はそのまま保持されております(後述)。この192kHz 32bit floatサンプル値に対して16ビット精度に減らす量子化処理を行うと、その16bit量子化による量子化雑音が加算されます(図4)。楽音に対して上記手順で44.1kHz 16bit PCM→192kHz 16bit PCM変換を行うと-90dB前後の音量の白色雑音が加算されるでしょう。

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">yamamoto2002</dc:creator><pubDate>Sun, 23 Dec 2018 17:33:29 -0000</pubDate><guid>https://sourceforge.net2df1ffdb91a7ae0e72cb0448f5d4860fd295c66b</guid></item><item><title>SmallSignalAndResamplerJA modified by yamamoto2002</title><link>https://sourceforge.net/p/playpcmwin/wiki/SmallSignalAndResamplerJA/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v56
+++ v57
@@ -2,7 +2,7 @@

 PlayPcmWinは共有モード再生時にサンプリング周波数の増減が必要になったときWindows7で追加されたOSの機能であるResampler MFTを呼び出します。

-たとえばWindowsのサウンドの設定で共有モードの既定の形式で192kHz 24ビットが選択されているときにPPWで44.1kHz 16bit PCM音声を再生しようとすると、PPWは再生開始前にResampler MFTを呼び出して192kHz 32bit floatのPCMデータを作ってから再生を開始します。共有モード再生時のWASAPIは32bit FloatサンプルフォーマットのPCMのみ受け付けるためPPWは32bit floatのPCMデータを用意します。このデータはWASAPIの共有モードミキサーとAPOを通って、最後に量子化ビット数が24ビット整数値になってDACに送り出されます。
+たとえばWindowsのサウンドの設定で共有モードの既定の形式で192kHz 24ビットが選択されているときにPPWで44.1kHz 16bit PCM音声を再生しようとすると、PPWは再生開始前にResampler MFTを呼び出して192kHz 32bit floatのPCMデータを作ってから再生を開始します。共有モード再生時のWASAPIは32bit floatサンプルフォーマットのPCMのみ受け付けるためPPWは32bit floatのPCMデータを用意します。このデータはWASAPIの共有モードミキサーとAPOを通って、最後に量子化ビット数が24ビット整数値になってDACに送り出されます。

 上記の具体例では、この変換処理によってオリジナルのサンプルフォーマットが16bit整数だったものが一時的に32bit Floatに増加します。このとき新しく生成された補間サンプル値がどこに置かれるかを観察します。

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">yamamoto2002</dc:creator><pubDate>Sun, 23 Dec 2018 17:32:31 -0000</pubDate><guid>https://sourceforge.netc71d9b56b152ee3c408cb40482e2ed5ca1cab818</guid></item><item><title>SmallSignalAndResamplerJA modified by yamamoto2002</title><link>https://sourceforge.net/p/playpcmwin/wiki/SmallSignalAndResamplerJA/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v55
+++ v56
@@ -2,7 +2,7 @@

 PlayPcmWinは共有モード再生時にサンプリング周波数の増減が必要になったときWindows7で追加されたOSの機能であるResampler MFTを呼び出します。

-たとえばWindowsのサウンドの設定で共有モードの既定の形式で192kHz 24ビットが選択されているときにPPWで44.1kHz 16bit PCM音声を再生しようとすると、再生開始前にResampler MFTを呼び出して192kHz 32bit floatのPCMデータを作ってから再生を開始します。共有モード再生時のWASAPIは32bit FloatサンプルフォーマットのPCMのみ受け付けるためPPWは32bit floatのPCMデータを用意します。このデータはWASAPIの共有モードミキサーとAPOを通って、最後に量子化ビット数が24ビット整数値になってDACに送り出されます。
+たとえばWindowsのサウンドの設定で共有モードの既定の形式で192kHz 24ビットが選択されているときにPPWで44.1kHz 16bit PCM音声を再生しようとすると、PPWは再生開始前にResampler MFTを呼び出して192kHz 32bit floatのPCMデータを作ってから再生を開始します。共有モード再生時のWASAPIは32bit FloatサンプルフォーマットのPCMのみ受け付けるためPPWは32bit floatのPCMデータを用意します。このデータはWASAPIの共有モードミキサーとAPOを通って、最後に量子化ビット数が24ビット整数値になってDACに送り出されます。

 上記の具体例では、この変換処理によってオリジナルのサンプルフォーマットが16bit整数だったものが一時的に32bit Floatに増加します。このとき新しく生成された補間サンプル値がどこに置かれるかを観察します。

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">yamamoto2002</dc:creator><pubDate>Sun, 23 Dec 2018 17:32:01 -0000</pubDate><guid>https://sourceforge.netbe04e92d3082454b1badcb6102ac3f81e0ad9b15</guid></item><item><title>SmallSignalAndResamplerJA modified by yamamoto2002</title><link>https://sourceforge.net/p/playpcmwin/wiki/SmallSignalAndResamplerJA/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v54
+++ v55
@@ -6,7 +6,7 @@

 上記の具体例では、この変換処理によってオリジナルのサンプルフォーマットが16bit整数だったものが一時的に32bit Floatに増加します。このとき新しく生成された補間サンプル値がどこに置かれるかを観察します。

-最初に、一見すると良い変換波形のように見えるケースから紹介します。図1はWaveGeneで生成した8kHz -90dBFS正弦波を含む44.1kHz 16bit PCMデータです。16bit PCMは-90dBFSの信号を綺麗に記録することは出来ません。サンプル値の縦軸は飛び飛びの値しか取ることが出来ず、-1,0,+1の3つの値のうちどれかの値になります。Adobe Auditionで観察すると(図1)悪条件下でありながらも偶然が味方し8kHz正弦波のように見えるアナログ音声波形がリコンストラクションされています。図2および図3はResampler MFTでこのPCMデータを読み込んでQuality=60で192kHzにアップサンプルしたものです。Resampler MFTの出力量子化ビット数は32ビットfloatに設定しました。Resampler MFTは内部の演算を32bit floatで行っているのでしょう。補間によって作り出されたサンプル値(図3参照)は16bitよりも「高精度」な位置に置かれています。しかし元々のサンプル位置の精度が荒いのにもかかわらず全て正確な位置であると仮定して計算しているので、実際の高さ方向の精度は16bitよりも良くなっているわけではなく、オリジナルデータを作るときの16bit量子化によって発生した量子化雑音はそのまま保持されております(後述)。もしもこの192kHz 32bit floatサンプル値に対して16ビット精度に減らす量子化処理を行うと、その16bit量子化による量子化雑音が加算されます(図4)。楽音に対して上記手順で44.1kHz 16bit PCM→192kHz 16bit PCM変換を行うと-90dB前後の音量の白色雑音が加算されるでしょう。
+最初に、一見すると良い変換波形のように見えるケースから紹介します。図1はWaveGeneで生成した8kHz -90dBFS正弦波を含む44.1kHz 16bit PCMデータです。16bit PCMは-90dBFSの信号を綺麗に記録することは出来ません。サンプル値の縦軸は飛び飛びの値しか取ることが出来ず、-1,0,+1の3つの値のうちどれかの値になります。Adobe Auditionで観察すると(図1)悪条件下でありながらも偶然が味方し8kHz正弦波のように見えるアナログ音声波形がリコンストラクションされています。図2および図3はResampler MFTでこのPCMデータを読み込んでQuality=60で192kHzにアップサンプルしたものです。Resampler MFTの出力量子化ビット数は32ビットfloatに設定しました。Resampler MFTは内部の演算を32bit floatで行っているのでしょう。補間によって作り出されたサンプル値(図3参照)は16bitよりも「高精度」な位置に置かれています。しかし元々のサンプル位置の精度が荒いのにもかかわらず全て正確な位置であると仮定して計算しているので、実際の高さ方向の精度は16bitよりも良くなっているわけではなく、オリジナルデータを作るときの16bit量子化によって発生した量子化雑音はそのまま保持されております(後述)。この192kHz 32bit floatサンプル値に対して16ビット精度に減らす量子化処理を行うと、その16bit量子化による量子化雑音が加算されます(図4)。楽音に対して上記手順で44.1kHz 16bit PCM→192kHz 16bit PCM変換を行うと-90dB前後の音量の白色雑音が加算されるでしょう。

 次に、16bit PCMデータを生成するときの量子化が荒すぎるために情報が失われ、満足な波形復元ができないケースを紹介します。図5はWaveGeneで生成した1kHz -90dBFS正弦波を含む44.1kHz 16bit PCMデータをAdobe Auditionで観察したものです。図1と同様に縦軸は3段階の高さのみ現れます。Adobe Auditionのアナログ波形表示は、正弦波のようには見えず階段状波形のように見えます。図6はResampler MFTでこのPCMデータを読み込んでQuality=60で192kHzにアップサンプルしたものです。図5のサンプル値の並び具合を見ると、図6の変換結果になる(階段状波形が出てくる)のは致し方ないように思えます。ADC時の量子化ビット数が不足しているのが原因で、オリジナル信号が正弦波であったという情報は量子化の段階で失われております。図7は、図6の192kHz 32bit float PCMデータを44.1kHz 32bit floatPCMに変換したものです。サンプル値が綺麗に元の高さに整列し、増えたビット数が有効に使われていないということがわかります。このことは、図6のデータはPCMデータの形式が192kHz 32bit float PCMになっていても、中に入っている情報は実質44.1kHz 16bit PCMであるということを意味します。44.1kHz 16bit PCMを192kHz 32bit float PCMに変換したときに量子化雑音がそのまま保持されると言い換えることもできます。

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">yamamoto2002</dc:creator><pubDate>Sun, 23 Dec 2018 17:26:10 -0000</pubDate><guid>https://sourceforge.net650b76f86bb04b2f22f80390e579706322242dfb</guid></item><item><title>SmallSignalAndResamplerJA modified by yamamoto2002</title><link>https://sourceforge.net/p/playpcmwin/wiki/SmallSignalAndResamplerJA/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v53
+++ v54
@@ -36,7 +36,7 @@
 図3  図2の横軸をクローズアップしたもの

-![図4 44.1kHz 16bit PCM 8kHz -90dBFS 正弦波を192kHz 16bit PCMに変換](https://sourceforge.net/p/playpcmwin/wiki/SmallSignalAndResamplerJA/attachment/4416_8kHzM90dB_19232_19216.png)
+![図4 44.1kHz 16bit PCM 8kHz -90dBFS 正弦波を192kHz 16bit PCMに変換](https://sourceforge.net/p/playpcmwin/wiki/SmallSignalAndResamplerJA/attachment/4416_8kHzM90dB_19232_19216b.png)
 図4  44.1kHz 16bit PCM 8kHz -90dBFS 正弦波を192kHz 32bit float PCMに変換し、量子化ビット数を16bitに削減したPCMデータの波形。

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">yamamoto2002</dc:creator><pubDate>Sun, 23 Dec 2018 17:24:58 -0000</pubDate><guid>https://sourceforge.net8927c31a4b8a91fe8132c0df92742eb55be7d2e3</guid></item><item><title>SmallSignalAndResamplerJA modified by yamamoto2002</title><link>https://sourceforge.net/p/playpcmwin/wiki/SmallSignalAndResamplerJA/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v52
+++ v53
@@ -6,11 +6,11 @@

 上記の具体例では、この変換処理によってオリジナルのサンプルフォーマットが16bit整数だったものが一時的に32bit Floatに増加します。このとき新しく生成された補間サンプル値がどこに置かれるかを観察します。

-最初に、一見すると良い変換波形のように見えるケースから紹介します。図1はWaveGeneで生成した8kHz -90dBFS正弦波を含む44.1kHz 16bit PCMデータです。16bit PCMは-90dBFSの信号を綺麗に記録することは出来ません。サンプル値の縦軸は飛び飛びの値しか取ることが出来ず、-1,0,+1の3つの値のうちどれかの値になります。Adobe Auditionで観察すると(図1)悪条件下でありながらも偶然が味方し8kHz正弦波のように見えるアナログ音声波形がリコンストラクションされています。図2および図3はResampler MFTでこのPCMデータを読み込んでQuality=60で192kHzにアップサンプルしたものです。Resampler MFTの出力量子化ビット数は32ビットfloatに設定しました。Resampler MFTは内部の演算を32bit floatで行っているのでしょう。補間によって作り出されたサンプル値(図3参照)は16bitよりも「高精度」な位置に置かれています。しかし元々のサンプル位置の精度が荒いのにもかかわらず全て正確な位置であると仮定して計算しているので、実際の高さ方向の精度は16bitよりも良くなっているわけではなく、オリジナルデータを作るときの16bit量子化によって発生した量子化雑音はそのまま保持されております(後述)。もしもこの192kHz 32bit floatサンプル値に対して16ビット精度に減らす量子化処理を行うと、その16bit量子化による量子化雑音が加算されます。楽音に対して上記手順で44.1kHz 16bit PCM→192kHz 16bit PCM変換を行うと-90dB前後の音量の白色雑音が加算されるでしょう。
+最初に、一見すると良い変換波形のように見えるケースから紹介します。図1はWaveGeneで生成した8kHz -90dBFS正弦波を含む44.1kHz 16bit PCMデータです。16bit PCMは-90dBFSの信号を綺麗に記録することは出来ません。サンプル値の縦軸は飛び飛びの値しか取ることが出来ず、-1,0,+1の3つの値のうちどれかの値になります。Adobe Auditionで観察すると(図1)悪条件下でありながらも偶然が味方し8kHz正弦波のように見えるアナログ音声波形がリコンストラクションされています。図2および図3はResampler MFTでこのPCMデータを読み込んでQuality=60で192kHzにアップサンプルしたものです。Resampler MFTの出力量子化ビット数は32ビットfloatに設定しました。Resampler MFTは内部の演算を32bit floatで行っているのでしょう。補間によって作り出されたサンプル値(図3参照)は16bitよりも「高精度」な位置に置かれています。しかし元々のサンプル位置の精度が荒いのにもかかわらず全て正確な位置であると仮定して計算しているので、実際の高さ方向の精度は16bitよりも良くなっているわけではなく、オリジナルデータを作るときの16bit量子化によって発生した量子化雑音はそのまま保持されております(後述)。もしもこの192kHz 32bit floatサンプル値に対して16ビット精度に減らす量子化処理を行うと、その16bit量子化による量子化雑音が加算されます(図4)。楽音に対して上記手順で44.1kHz 16bit PCM→192kHz 16bit PCM変換を行うと-90dB前後の音量の白色雑音が加算されるでしょう。

-次に、16bit PCMデータを生成するときの量子化が荒すぎるために情報が失われ、満足な波形復元ができないケースを紹介します。図4はWaveGeneで生成した1kHz -90dBFS正弦波を含む44.1kHz 16bit PCMデータをAdobe Auditionで観察したものです。図1と同様に縦軸は3段階の高さのみ現れます。Adobe Auditionのアナログ波形表示は、正弦波のようには見えず階段状波形のように見えます。図5はResampler MFTでこのPCMデータを読み込んでQuality=60で192kHzにアップサンプルしたものです。図4のサンプル値の並び具合を見ると、図5の変換結果になる(階段状波形が出てくる)のは致し方ないように思えます。ADC時の量子化ビット数が不足しているのが原因で、オリジナル信号が正弦波であったという情報は量子化の段階で失われております。図7は、図5の192kHz 32bit float PCMデータを44.1kHz 32bit floatPCMに変換したものです。サンプル値が綺麗に元の高さに整列し、増えたビット数が有効に使われていないということがわかります。このことは、図5のデータはPCMデータの形式が192kHz 32bit float PCMになっていても、中に入っている情報は実質44.1kHz 16bit PCMであるということを意味します。44.1kHz 16bit PCMを192kHz 32bit float PCMに変換したときに量子化雑音がそのまま保持されると言い換えることもできます。
+次に、16bit PCMデータを生成するときの量子化が荒すぎるために情報が失われ、満足な波形復元ができないケースを紹介します。図5はWaveGeneで生成した1kHz -90dBFS正弦波を含む44.1kHz 16bit PCMデータをAdobe Auditionで観察したものです。図1と同様に縦軸は3段階の高さのみ現れます。Adobe Auditionのアナログ波形表示は、正弦波のようには見えず階段状波形のように見えます。図6はResampler MFTでこのPCMデータを読み込んでQuality=60で192kHzにアップサンプルしたものです。図5のサンプル値の並び具合を見ると、図6の変換結果になる(階段状波形が出てくる)のは致し方ないように思えます。ADC時の量子化ビット数が不足しているのが原因で、オリジナル信号が正弦波であったという情報は量子化の段階で失われております。図7は、図6の192kHz 32bit float PCMデータを44.1kHz 32bit floatPCMに変換したものです。サンプル値が綺麗に元の高さに整列し、増えたビット数が有効に使われていないということがわかります。このことは、図6のデータはPCMデータの形式が192kHz 32bit float PCMになっていても、中に入っている情報は実質44.1kHz 16bit PCMであるということを意味します。44.1kHz 16bit PCMを192kHz 32bit float PCMに変換したときに量子化雑音がそのまま保持されると言い換えることもできます。

-以上2つのケースはどちらも、44.1kHz 16bitをResampler MFTで192kHz 32bitにリサンプルしたら音が良くなるということはなく、むしろ何も変わらないということを示唆します。図1のサンプルデータ(44.1kHz 16bit)をDACに送ると、DACの中でResampler MFTと同様のデジタル信号処理が行われます。DACのアナログ出力波形は図2とよく似た結果になるでしょう。図4のサンプルデータをDACに送ると、大多数のDACのアナログ出力からは図4のアナログ再現波形のような波形が出てくるでしょう。
+以上2つのケースはどちらも、44.1kHz 16bitをResampler MFTで192kHz 32bitにリサンプルしたら音が良くなるということはなく、むしろ何も変わらないということを示唆します。図1のサンプルデータ(44.1kHz 16bit)をDACに送ると、DACの中でResampler MFTと同様のデジタル信号処理が行われます。DACのアナログ出力波形は図2とよく似た結果になるでしょう。図5のサンプルデータをDACに送ると、大多数のDACのアナログ出力からは図5のアナログ再現波形のような波形が出てくるでしょう。

 # まとめ

@@ -36,20 +36,24 @@
 図3  図2の横軸をクローズアップしたもの

-![図4 44.1kHz 16bit PCM 1kHz -90dBFS 正弦波](https://sourceforge.net/p/playpcmwin/wiki/SmallSignalAndResamplerJA/attachment/4416_1kHzM90dB2.png)
-図4 44.1kHz 16bit PCM 1kHz -90dBFS 正弦波
+![図4 44.1kHz 16bit PCM 8kHz -90dBFS 正弦波を192kHz 16bit PCMに変換](https://sourceforge.net/p/playpcmwin/wiki/SmallSignalAndResamplerJA/attachment/4416_8kHzM90dB_19232_19216.png)
+図4  44.1kHz 16bit PCM 8kHz -90dBFS 正弦波を192kHz 32bit float PCMに変換し、量子化ビット数を16bitに削減したPCMデータの波形。

-![図5 44.1kHz 16bit PCM 1kHz -90dBFS 正弦波を192kHz 32bit float PCMに変換](https://sourceforge.net/p/playpcmwin/wiki/SmallSignalAndResamplerJA/attachment/19232_1kHzM90dB.png)
-図5 44.1kHz 16bit PCM 1kHz -90dBFS 正弦波を192kHz 32bit float PCMに変換
+![図5 44.1kHz 16bit PCM 1kHz -90dBFS 正弦波](https://sourceforge.net/p/playpcmwin/wiki/SmallSignalAndResamplerJA/attachment/4416_1kHzM90dB2.png)
+図5 44.1kHz 16bit PCM 1kHz -90dBFS 正弦波

-![図6 図5の横軸を拡大しサンプル値が見えるようにしたもの](https://sourceforge.net/p/playpcmwin/wiki/SmallSignalAndResamplerJA/attachment/19232_1kHzCloseup.png)
-図6 図5の横軸を拡大しサンプル値が見えるようにしたもの
+![図6 44.1kHz 16bit PCM 1kHz -90dBFS 正弦波を192kHz 32bit float PCMに変換](https://sourceforge.net/p/playpcmwin/wiki/SmallSignalAndResamplerJA/attachment/19232_1kHzM90dB.png)
+図6 44.1kHz 16bit PCM 1kHz -90dBFS 正弦波を192kHz 32bit float PCMに変換

-![図7 図5の192kHz 32bit float PCMデータをAdobe Audacityで44.1kHz 32bit float PCMに変換したもの](https://sourceforge.net/p/playpcmwin/wiki/SmallSignalAndResamplerJA/attachment/4416_1kHzM90dB_19232_4432.png)
-図7 図5の192kHz 32bit float PCMデータをAdobe Audacityで44.1kHz 32bit float PCMに変換したもの。形式的には量子化ビット数は32bitに増えているが、サンプル値の縦軸位置が3段階で実質16bit精度であることがわかる。
+![図7 図6の横軸を拡大しサンプル値が見えるようにしたもの](https://sourceforge.net/p/playpcmwin/wiki/SmallSignalAndResamplerJA/attachment/19232_1kHzCloseup.png)
+図7 図6の横軸を拡大しサンプル値が見えるようにしたもの
+
+
+![図7 図6の192kHz 32bit float PCMデータをAdobe Audacityで44.1kHz 32bit float PCMに変換したもの](https://sourceforge.net/p/playpcmwin/wiki/SmallSignalAndResamplerJA/attachment/4416_1kHzM90dB_19232_4432.png)
+図7 図6の192kHz 32bit float PCMデータをAdobe Audacityで44.1kHz 32bit float PCMに変換したもの。形式的には量子化ビット数は32bitに増えているが、サンプル値の縦軸位置が3段階で実質16bit精度であることがわかる。

 以下のページのFig.13に、44.1kHz 16bit PCM 1kHz -90dBFS 正弦波を入力したときの実際のDACのアナログ出力波形の例が載っております。このDACはFilter 1を選択すると教科書的なDA変換を行います。
 https://www.stereophile.com/content/dcs-vivaldi-digital-playback-system-measurements
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">yamamoto2002</dc:creator><pubDate>Sun, 23 Dec 2018 17:20:13 -0000</pubDate><guid>https://sourceforge.netb09c6700b113f7f9449ef91a8190691a32f6ecbe</guid></item></channel></rss>