2015年8月15日土曜日

ソフトシンセの作り方(1) - 音程の性質

VGSのソフトシンセ(波形メモリ音源)の開発で得られた知見を元に、PCやスマートフォンで動くソフトシンセの作り方を解説していきます。一冊の本が書ける程度の分量なので、幾つかのパートに区切って解説していきます。このシリーズを一通り読めば、サウンドプログラミングについて全くの素人でも、PCやスマホなどのプラットフォームで動くオリジナルのソフトシンセが作れる程度になります(たぶん)

なお、このシリーズで扱うプログラミングの例題のビルドには、パソコンが必要です。OSは私が使っているMac OS X向けに解説を記述しますが、Linux(※ALSAに対応しているもの)やWindowsでも問題ありません。

当面は、基礎編ということで、音についての基本的なことについて書きます。
今回は音程の性質について。

【基礎編1】音程の性質

音には「高さ」という概念があります。 音の高さ(音程)は 音波が1秒間に何周期(何Hz)繰り返されるか で決まります。 1秒間に音波を繰り返す周期のことを 音程周波数 と呼びます。

音程周波数の性質

音程周波数と音程の関係は、次のようになっています。
  • 1秒間に440回繰り返す(440Hz) :
  • 1秒間に880回繰り返す(880Hz) : 1オクターブ上のラ
つまり、音程周波数には 2倍にすると1オクターブ上(1/2倍にすると1オクターブ下)の音程になる という性質があります。
ここで、周波数を表す Hz(ヘルツ = 繰り返す回数を表す単位)が出てきましたが、コンピュータに詳しい方の場合、サンプリング周波数のHz  音程周波数のHz を混同しがちなので、注意しましょう。サンプリング周波数 音程周波数 の間には密接な関係があるので、若干ややこしいです。 

サンプリング周波数

サンプリング周波数とは、1秒間に何回の量子化を行うか を表すものです。

量子化

音の正体は波(音波)ですが、現実世界の波(アナログ波) の全ての音を コンピュータの世界(デジタル波) で表現することは不可能です。そのため、コンピュータの世界の波(デジタル波)は、単位時間(1秒)を幾らかの値で区切り、その区切られた単位時間毎の波の位置をデータとして持ちます。
これを量子化と呼びます。
そして、この量子化の粒度が細かいほど、現実の音(アナログ波)に近くなります。 例えば、VGSの音声のサンプリング周波数は22050Hzですが、CD44100Hzなので、VGSの音声よりもCDの音声の方が、より現実の音に近いと言えます。
しかし、粒度が細かいほど、コンピュータが処理するデータ量が増え、データ消費量が増えると端末の電池消費量の増加や、発熱がし易くなるなどのデメリットが生じます。

量子化粒度と「音の良さ」の関係

現実世界に近い音の方が良い音かというと、これも必ずしも Yes ではありません。
実際、VGSの音声処理を改造して、サンプリング周波数を44100Hzにする改造(ハイレゾ化)をする実験を試みたことがあるのですが、それにより音が良くなったとは感じられない結果になりました。
また、東方BGM on VGSのレビューでも「音質が良い」という評価を頂くことがしばしばあります。仮に量子化の粒度と「音の良さ」の間に相関関係があったとすると、そのような評価が得られることは無い筈です。
圧縮技術の進化により、普段聴いているであろうmp3の音楽や動画の音声(aac)のサンプリング周波数は、44100Hzかそれ以上が一般的です。そのため、殆どの人は44100Hz(以上)のサンプリング周波数を基準にして「音の良さ」を判断している筈なので。
つまり、量子化の粒度というのは、グラフィックスの画素数 と同様かもしれません。例えば、画素数が荒いドット絵のゲームを、Retinaの画質に合わせた綺麗なハイレゾグラフィックにしてみると、「雰囲気が失われた」と不評を買うことがあります。
量子化の粒度についても、それと同じことが言えるのではないでしょうか。
また、ほとんどのデジタル音声が44100Hzのため、22050Hzの東方BGM on VGSの荒い音声が逆に新鮮に感じたのかもしれません。もちろん、ドット絵よりもハイレゾグラフィックが好きな人が居るのと同様、VGSよりもハイレゾな現実に近い音を好きな人も居る筈です。

サンプリング周波数と音程周波数の関係

サンプリング周波数 音程周波数 は、異なる概念です。しかし、プログラムで目的の音程周波数を求めようとすると、どうしても必要になるから少し厄介なのです。 サンプリング周波数と音程周波数の関係を手っ取り早く理解するには、実際にプログラムを書いてみるのが一番楽かと思います。

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。

合理的ではないものを作りたい

ここ最近、実機版の東方VGSの開発が忙しくて、東方VGSの曲追加が滞っています。 東方VGS(実機版)のデザインを作りながら検討中。基本レトロUIベースですがシークバーはモダンに倣おうかな…とか pic.twitter.com/YOYprlDsYD — SUZUKI PLAN (...