シンセサイザー研究室

PCMとは

PCMとは「Pulse Code Modulation」の略で日本語では パルス符号変調。
連続的なアナログ信号を等間隔に分割して、 その飛び飛びの振幅値を取り出して標本化します。
アナログ信号をデジタル化するっていうのは 「音量を縦方向、時間を横方向にして碁盤の目みたいなグラフに 点を打つみたいなイメージ」です。

pcm1

CDの場合は、1秒間に44100回分割しています。(だから44.1KHz) これをサンプリングといいます。
※ この周波数はサンプリング周波数と言って実際の周波数ではなく、 1秒間に何回サンプリングするかっていう周波数です!

染野・シャノンの定理ってのがあって
「ある信号に対してすべての時刻の振幅が分からなくても、一定間隔で取り出した 振幅値から原信号が表現できる。
その時、取り出していく周波数は、原信号の周期の半分あれば十分である。」

なのだそうです。

振幅を測るのに最低限必要なポイントは最低値と最高値の2ヶ所。
2ヶ所を1セットとして計測するのでサンプリング周波数の半分の周波数が デジタルで表現出来る最大の周波数となります。

人の耳は大体20Hzから20kHzまで聴こえると言われています。 コウモリやイルカの喋ってる声が聴こえないのは20kHz以上の音だからです。
でも、実際はこれより高域の音も聞こえてて、感性や情緒に影響を与えるとか、 音の方向性を認識出来るなどということが判ってきたそうですが、 癒しの音を狙って作れるのであれば苦労はしません。

サンプリングの間隔は約22μs(μs=100万分の1秒)です。
普通にサンプリングしただけだと、飛び飛びなので「22μ秒分のデータは省略されている」 事になります。知覚できませんが。

サンプリングした振幅を数値で表すことを量子化といい、 CDだと16bit(2の16乗で65536段階)となります。
1bitで約6dBを表せるので16bitだと16倍で96dBまで振幅を表せる計算になります。
1bitは0か1しかないけど、コレだけで元の音量か元の音量の半分かの2通り表せます。
2bitだったら元の音量の1/4まで、3bitだったら1/8までって増やしていくと、 16bitで1/65536まで「元の音量と一番小さな音の音量の比率を 表現出来る」となるのです。

人間の耳のダイナミックレンジはおよそ100dB。 96dBもあれば十分という訳でCDは16bitなんです。

これで、元のアナログ信号の振幅を表現します。

で、録音する信号が48KHzとかだった場合、デジタル化するとどうなるかというと、 なんと!はみ出た部分が折り返してしまうというのです!
※ 「ナイキスト理論」と言います。

例えば32KHzの部分が折り返して12KHz付近の部分にノイズを作ってしまうといった 凄い事になるらしいのです。
これをエイリアシングと言います。

仮に「K_Take所長」という音があったとしましょう!
するとサンプリング周波数44.1KHzでサンプリング出来る限界は22.05KHz。 これを超えた部分は図のように折り返すらしいのです。

aliasing aliasing2

「e所長」辺りの周波数の音は普通の人間には聞こえません。 ところが折り返しちゃうものだから人間の可聴領域に影響を及ぼしてしまうのです。

こりゃ大変!という訳で実際にサンプリングする手前で22.05KHzを超える部分を削る 必要性が出てきました。
この部分を削る事をアンチエイリアシングと言います。

aliasing4

そこで昔の人は考えた!アナログローパスフィルタ使って滑らかに削ってしまおう!と。

aliasing3

で、フィルタ通して滑らかにした結果が青い線です。

pcm3

まぁ、マシになったかな・・・ と、昔の人はコレで満足してた訳です。

なんか特性の急峻なフィルタを使用した為、微妙に元の波形とずれてます。
この状態だと、今度はフィルタによる位相歪(高域にいくほど大きな遅延が 生ずることに起因する)が増え、音質は悪化しています。

そのうち、こんなのウソっぱちじゃねぇか! と文句を言う奴が現れました。

そこでまた考えた!44.1KHzのサンプリングでノイズが発生するなら、 コレの何倍もサンプリングすればイイジャン!と。
で、何をトチ狂ったか1秒間に44.1KHzの128倍の量 サンプリングしてしまうのでした!
44.1KHz x128 = 5644.8KHz = 5.6MHz!!
最近主流の96KHzに至っては96x128 = 12288KHz = 12.288MHz!!!
※ 横軸のメモリの細かさが128倍になるイメージです

コレを「オーバーサンプリング」と言います。 (128倍だったら128倍オーバーサンプリング)
よって22.05Khzより高い周波数の音も忠実にサンプリングされます。

aliasing aliasing5

2822.4KHz以上の音なんて絶対に入ってこないから エイリアスノイズは発生しない。
だったらアナログローパスフィルターなんか要らないだろう! って訳でアナログローパスフィルターを取っ払っちゃいました。
あとはデジタルフィルタで機械的に22.05KHzより上をスパーン!とチョン切れば、 いっちょあがりです。

aliasing4

最後に128倍だった物を平均化して1/128に戻してあげれば、 完璧な44.1KHzのデータとなります。

あと、せっかくだから16bitじゃ物足りないんで20bitとか24bitにしようぜ! って訳でダイナミックレンジも増やしました。
1bit辺り約6dB増えるので20bitなら120dB、24bitなら144dB!! 段階にして元の音の1/16,777,216の小さな音も拾ってしまおうと言う訳です。
※ グラフの縦軸メモリが65536から16,777,216段階になるイメージです。 (実際は20bitだと105dB~110dB位らしい)

量子化すると、マスとマスの間の誤差が生じてそれがノイズになる 量子化ノイズが発生します。
しますが、ノイズの音量は元の音の1/16,777,216の大きさ。(24bitの場合) 普通の人間では知覚出来ません。
最近のシンセサイザやデジタルミキサーはこういう事を平気でやってのけるのですね。

緑の線はサンプリングした「点のかたまり」です。 グラフのメモリも大幅増!(もちろんイメージ画像です)

pcm4

でも!CDは16bitで44.1KHzな訳だからこのクオリティを落とさなきゃいけない!勿体無い。

で、24bitを16bitに削るのをディザリングって言います。 bitを減らすとどうしても量子化ノイズが発生します。
量子化ノイズっていうのは信号の無い無音時に出る「シャー」という残留雑音とは異なり、 信号がある時に出るのが特徴で、「プチプチ」っていう感じのノイズだそうです。 で、それを誤魔化すためにごく僅かなランダムノイズをオーディオ信号に少し 加えてやると人間に知覚出来ないレベルのホワイトノイズになってノイズが 軽減するんだそうです。そこら辺はメーカーを信じるしかないのです。

という訳で最終的には16bit44.1KHzのクオリティにして音は完成するのです。

まぁ、大容量HDDが手に入り、ネットワークはブロードバンドの時代ですから、 ネットワーク配信であればクォリティを落とさないで配信も可能でしょう。 音声圧縮にもロスレス圧縮という完全可逆圧縮も開発されていますし。

じゃあ、なんで内部32bitなんて必要かというと、ミックスしたりエフェクト掛けたり すると割り算かけ算が発生し、必ず端数が出るのだが、その端数をどこまで許すかで 計算の正確さが変わってくるからです。 bit数が多ければより細かく計算出来るので正確な値に近くなります。

デシベルとは

オーディオ機器やミキサーにある「dB」って奴です。

人間の聴覚は独特の特性を持っていて、非常に小さな音から非常に大きな音まで 聴けるように出来ています。人間の聞き取れる小さな音と大きな音の差は100万倍。 しかし、小さな音については少し大きくなっただけで違いは判るが、 大きい音に関しては多少音量が変わったところで、その違いを実感出来ないそうです。

「ウェーバー・フェヒナー」という人がこういう法則を見つけました。

「感覚量は刺激量の対数に比例する」

これは音量だけではなく、音程とか光の明るさにも当てはまります。

対数っていうのは「この関数では10の何乗するとその数になるか」という物。
例えば
 ・log100だったら10の2乗だから2
 ・log1000だったら10の3乗だから3
 ・log1000000だったら10の6乗だから6

デシベル(dB)というのは 「20logA」で表せる「比率」なのだそうです。 音の音量の単位じゃなくて「元の音の何倍の大きさか」を表す のですね。
例えば
 ・元の2倍の大きさの場合A=2とし、20log2 = 6 で6dB
 ・元の4倍の大きさの場合、20log4 = 12dB
 ・元の10倍の大きさの場合、20log10 = 20dB
 ・元の1000倍の大きさの場合、20log1000 = 60dB

元の音、つまり1倍の場合はどうなるかって言うと「20log1」で 「log1」はゼロなので20x0でゼロ。つまり元の音は「0dB」
ミキサーに「0dB」って書いてあるのは「元の音と同じ大きさですよ」 という意味です。

じゃあ、元の音を半分の1/2にした場合はどうかというと、
20log1/2 = -6dB
同様に
20log1/4 = -12dB
20log1/10 = -20dB
と、マイナスが付くのです。

対数を使うと掛け算は足し算、割り算は引き算として扱える そうです。だから、「音量を2倍して10倍する」は「6dB + 20dB = 26dB」となるのです。

ローパスフィルターで-12dBとか-24dBタイプってあるけど、アレは カットオフ周波数より上の周波数の音量を-12dBなら最大1/4に、 -24dBなら最大1/16にしますって意味です。
デシベルは足し算出来るからフィルタ直列に繋げると (-12dB) + (-24dB) = -36dBとなり、-36dB = 1/64まで削れるという事になります。
※ 実際は掛け算だから1/4 x 1/16 = 1/64

ミキサーのフェーダーに書いてあるデシベルも 6dB,0dB,-5dB,-10dB,-15dB,-20dB,-30dB・・・-∞ と書いてあるけど、要は元の音を「0dB」として何倍の音量なのか と書いてあるわけです。

雑音の度合いをS/N比なんて言ってるけどアレも単位はdBだから比率で、 実際の音とノイズの比率を表しています。
だからS/N比が-100dBっていうのは「ノイズが実際の音の1/100000しかありませんよ」 と言ってるのです。

他にデシベルで表せる物は「ダイナミックレンジ」 ってありますね。アレも比率でオーディオCDのダイナミックレンジ理論値は96dB。
ダイナミックレンジっていうのは一番小さい音量と 最もデカイ音量の比率の事。96dB = 65536倍まで表現出来ますよって意味です。
逆に一番小さい音は元の音の1/65536の大きさですよって事です。


Back | Next