第十五回 量子オシレータ、、なぁんてね。。
(2005.11.14)

前回の更新から早や45日程度が過ぎてしまって、もうそろそろ更新しないとなぁ〜。 等と思っていたのですが、中々面白いネタが思いつかず(そうそう思いついたら凄いよ。。) どうしようかなぁ〜と思っていたわけです。
でも思いつくのを待っていても仕方ないので、とりあえず今自分ぼや〜っと考えていたことを文章にしてみたいと思います。

確率的な角速度

角速度というのは言ってしまえばピッチ(音高)です。単位時間当たりにオシレータの位相がどれぐらい進むのか、というのを速度として 言い表している分けです。
今回ふと思ったのは、「この角速度ってやつにランダムな値を使ったらどうなるんだろう??」ということでした。 ホワイトノイズを(0〜一定値)という範囲でノーマライズした値を使って、これを1サンプル毎にオシレータの位相としてどんどん足しこんでいったら。。。
ホワイトノイズ自体、めちゃくちゃノイジーなので、これを使って出力される波形もノイジーなのは容易に想像できそうなものですが、、、

で、物は試しとばかり、低音から高音までスウィープするサイン波をノイズで作ってみるプログラムを書いてみました。 すると、ちょっとだけ面白いことが分かりました。
そのちょっとだけ面白いこととは、、、「ピッチが低いほどノイズが小さく聴こえる」ということです。
いや、それが何なんだ?、と聞かれてしまうと元も子もないのですが、。。
この事実から言えることは、低いピッチほど、1周期当たりに足し込まれるノイズのサンプル数が増える。つまりは小さな値のノイズを時間をかけてたくさん加算している ことになるし、高いピッチはその逆となるのです。
とても鋭いあなたのことですから、既にお気づきかと思うのですが、ホワイトノイズのようなノイジーで予測不可能な波形であっても、サンプル数を増やして平均値を求めれば、一定の値に収束する分けです。 そして波長が長ければサンプル数も増えるわけなので、角速度は一定の値に近ずくため、ノイジーさは緩和されるという分けです。

じゃあ、もうちょっと試してみようと思い、オーバーサンプリングを使って、ノイズを足しこみをやってみましたところ、 やはりサンプリング周波数を上げれば上げるほどノイズは小さくなることが分かりました。低音ほどノイズが小さく、高音ほどノイズが大きいという原則はを維持したまま、 トータルの雑音量が減るような感じとなりました。

今回はこれでお終いです。。。。
最後に今回試したプログラムのソースコードと、サンプリング周波数44.1KHzでスウィープしてみた波形のスペクトラム表示の画像を載せます。
画像の中で黄色く書かれている文字はオーバーサンプリングの回数です。(とんでもない値が書かれているものもありますが、、、、)

ソースコードはコチラからどうぞ。。
 

追記!!(2005/11/15)

よくよく考えてみますと、定数とノイズの比率を変える(つまりは平均値を移動させる)だけで、ノイズっぽさはコントロールできましたね。。。 平均が0ならば完全にノイズだし、平均が大きくて(平均に比べて分散が小さければ)ノイズっぽさは緩和されるわけでした。。
あとは、ピッチに対するノイズ量の変化を上手く調整できれば、「ノイズっぽさ×ピッチ」をパラメータとするオシレータって感じのものが作れそうです。
そこで勘と度胸によりピッチとノイズっぽさは反比例すると考えて、それらしいプログラムを作って見ましたところ、 それほど極端なオーバーサンプリングをせずとも、中々いい感じのサウンドとなりましたので、改めてここで掲載させて頂きます。 (何か凄く普通にありそうな気もしますが、、)
ソースコード2はコチラからどうぞ。。
 
サウンドサンプルはコチラから。。
 

前の記事へ | 次の記事へ | 戻る