hirax.net::Keywords::「ナイキスト」のブログ



1998-11-12[n年前へ]

無限音階を作ろう  share on Tumblr 

上昇し続けるって何ですか?

- 上昇し続けるって何ですか? -
(1998/11/12)

無限音階を作りたい

 無限音階というものがある。ド・レ・ミ・・・と音がどんどん高くなっていくように聞こえるのだが、いつまでたっても終わらず、ふと気づくとずっと前と同じような音の高さだというものである。Escherの無限階段の版画は有名だが、あれの音階版である。
 とにかく、無限音階を作ってみようというのが今回の目的である。参考までに、Eshcerのことに関しては藤原康司氏のWEBhttp://www.pluto.dti.ne.jp/~fwhd5468/に詳しい情報がある。 ちなみに、このような版画である。
Esherの無限上昇(下降)シリーズ
「上昇と下降」(左図、1960年作)

「滝」(右図、1961年作)

 本題をますます離れるが、飯沼 敏夫氏のWEBhttp://www2.gol.com/users/atoz/index.html は一見の価値がある。上の2枚の版画をQuickTimeVRで実感できる。素晴らしい。

無限音階の仕組み

 人間の聴力にはもちろん周波数特性がある。
ニコンの補聴器のWEBhttp://www.nikon.co.jp/main/jpn/society/hocyouki.htm
によれば20Hz-20kHzが通常聞こえる周波数の範囲であるという。例えば、CDのサンプリング周波数はが約40kHzであるのは、この20kHzの倍だからである。つまり、ナイキスト周波数による。
 もし、ある高さの「ド」の1オクターブ下、そのまた下、...それだけでなく、1オクターブ上、そのまた上...が一度になったら、人間の耳にはどう聞こえるだろうか。それは、やはり「ド」である。その時のスペクトルはこんな感じである。なお、横軸は2をベースにした変形の対数軸である。また、実際には「ド」ではない。
音の画像スペクトル(水色が人間の耳に聞こえる範囲)

それでは、そのような「レ」が鳴ったとしたら?もちろん、それも「レ」である。そのようにして、「ドレミファソラシド」とやるとどうだろう?最初の「ド」と最後の「ド」は全く同じになっている。しかし、人間の感覚としてはどんどん音の高さが上昇していくように感じる。これが無限音階の仕組みである。
 図で示すとこのようになる。なお、下の図中で水色は人間の耳に聞こえる周波数領域である。また、振幅はたんなる相対値である。

上昇していく音
最初の音
少し高くなった音
もっと高くなった音
もっと、もっと高くなった音
もっと、高くなると、元に戻っている
上昇し続けるように見えて、結局同じ所を回っているだけである。

作成した無限音階

 今回は12音の平均率音階を用いている。音階そのものについては「音階について考える」という別の話である。また、基本波形としては正弦波を用いている。20Hz以下の正弦波を基本波形として、その倍音を20kHz超まで均等に足しあわせたものをただ作っただけである。正弦波を用いたのは話を単純化するためである。
 ここに今回作成したMathematicaのNoteBookを置いておく。また、下が作成する途中のデータである。どこか間違っているような気もする。少し不安だ。
左図は基底となる周波数を示す。X軸が周波数、Y軸が何倍音かを示す。右図は平均率の音階。440HzのAから1オクターブ上のAまで。
作成した音声データの波形 (左が全波形、右はデータの最初の1000個)
 聞く際の注意だが、音声再生ソフトの設定を「自動繰り返し」にして欲しい。

 さて、これが作成した無限音階である。それっぽく聞こえるだろうか。

1999-01-03[n年前へ]

オシロスコープソフトを作る  share on Tumblr 

PCを2Ch高性能オシロスコープにしたい

 オシロスコープがあると便利だが、家で使うには敷居が高いし、値段も高い。まして、FFTアナライザーがついて周波数解析も行うことができるような機械になると、遊びで買うという値段ではなくなってしまう。そこで、PCを2Ch高性能オシロスコープにするソフトを作ってみたい。

 以前、音階を調べた時に、SoundBlaster互換I/Fを使ったLabViewのサウンド入出力のViを使用してみる。目標はとにかくオシロスコープと同じ使い勝手であること、使うのが簡単であること、そして、周波数解析などが簡単に行うことができること、である。入力として、音声入力を使用しているので、たいていのPCで使うことができるし、音声入力マイクが着いているPC(たいていのノートPCは着いているだろう)なら、マイク(あるいは入力端子)を用意する必要すらない。

 というわけで、下がそのアプリケーションの画面。

作ったアプリケーションの画面 (口笛を吹いて、周波数解析を行ったところ)
 22kHzで2Ch(ステレオ)サンプリングを行っている。また、リアルタイムで任意のウィンドー処理をかけた上で、FFTをかけて周波数解析を行い、ピーク周波数の検出、表示を行うことができる。オシロスコープの表地周りは通常のオシロスコープとほぼ同じであり、使うのも簡単である。

 20KHz(ナイキスト周波数で言えば正確には10KHzか)までしか、使うことはできないが、ちょっと使いたい時には便利だ。特に、音声を解析したいならば、必要十分である。上の画面では口笛を吹いて、その音声波形を表示させ、周波数解析を同時に行っている。周波数ピークが表示され、1120Hzであるという表示がされる。

 内蔵マイクを使用すると、ただアプリケーションを走らせれば、音声周波数解析が行える。もしも、比較的高性能なマイクがPCに着いているならば、リアルタイム振動解析すら行うことができる。もちろん、マイク入力端子に何らかの入力をすれば、どんな解析もできるわけだが、何の用意もせずにできるというのは便利である。例えば、うるさいデスクトップPCの近くへこのアプリケーションを走らせたノートPCを近づけると、デスクトップPCがなぜうるさいかを簡単に調べることができる。うるさいのは、ハードディスクの周波数なのか、ファンの周波数なのかすぐにわかる。
 
 今回、作成したアプリケーションはここにおいておく。動作させたら、レンジを調整することを忘れずに。
Ocilo.lzh LZH形式 1,259kB (打ち止めです。あしからず。)
LabViewのアプリケーションライセンス上、ダウンロード数は50回までで、その数近くになったら削除することにする。



■Powered by yagm.net