音楽なんていう、もっとも主観がモノをいいそうな分野で、
客観的な評価というのは、なにか意味があるだろうか?
そんな思いも持ちつつも、なんですが・・・
少なくとも、音そのものは、物理的に表現できてしまうものですので、
3つのギターの音の減衰 みたいなことをやると、
音楽的素養のない私でも、ギターごとの音の良しあしが、
なんとなく分かった気になれるわけです。
で、5弦開放音(A)ばっかりやっててもなんだな、と思って、他の音階でもやってみたんですけど、
なんか、うまくいかない。なんでだろう?と、考えたんですが、
とりあえず、使ってるfft(高速フーリエ変換)のプログラムに問題がありそうということが分かりました。
いや、アルゴリズムそのものには問題はないんですが、
非常にプリミティブなfftなので、入力するデータをプログラム的にキリのいいところで
(データ個数が、概ね、256とか1024とかの倍数になるように)データでちょん切って、
頭とお尻をくっつけて無限ループを作って周波数解析をしてるわけです。
そうすると、いわゆる「
畳み込み」(あんまり理解してないが)ってのが起こって、たぶん、
スペクトルも描いてみた の時にも気になったように、ピークのクリアさがでない原因になる。
周波数解析もアナログ的に連続する周波数をみてるわけではないので、
どうしても、みてない周波数部分ができちゃう。
あんまりちゃんと計算したわけではないんだけど、結果からみると、
WAVEのサンプリング周波数って(標準的には44100Hz)、A音(110Hz)と相性いいみたいなんですね。
というわけで、fftプログラムへの入力部分に、データの前処理をいれて、
まずは、基音がどの周波数になるのかを精緻に検出できるようにしてみました。
(まあ、つまりは、いわゆるチューナーみたいなものを作ってみました)
で、基音が決まれば、それにあわせて、データを前処理その2をしてやって、
倍音成分も含めて、もうちょっと精度良く、減衰がどうなるのかってのを計算できるようにしてみました。
Windowsでも動くようにしてみたので、ちょっと怪しいけど、掲載しておきます。→
recession.lzh
解凍すると、(recessionというフォルダに?)recession.batというファイルができますので、
これをクリックして立ち上がるウインドウの上にWAVEファイルをドラッグ・ドロップすると動くはずです。
(プログラムの実体は、exeフォルダの中にあります。ソースが欲しい方はお気軽に連絡ください)
最後、グラフにするのにエクセルを使ってて、データを貼り付けるのに、マクロも利用してます。
データを貼り付けるだけですので、わざわざマクロを利用する必要もないと思いますので、
気になる方は、マクロは無効のまま、適当にお使いいただければと思います。
音の違いを目でみて、「なるほどぉ」と、基本的には自己満足に浸るためのプログラムです。
シビアな用途には向きませんので、あしからず。
readme.txtにも書きましたが、以下、転載します。
-------
○ソフトの目的:
ギターの音の周波数ごとの減衰特性を可視化する。
○動作環境:
MS-EXCELがインストールされており、.xlsと.csvがエクセルの拡張子として
登録されていること(普通はなってると思います)が必要です。
WindowsXP(SP3)で動きました。Vistaや7で動くかどうか分かりません。
プログラム自体は、たぶん、動くんじゃないかと思います。
○使い方:
0.解析するWAVEファイルを用意します。
(SoundEngineなどで音をサンプリングして、適当な部分を切り取り、保存してください。)
1. recession.batをダブルクリックして起動します。
2.現れたコマンドプロンプトウインドウ上にWAVEファイルをドラッグ・ドロップします。
3.コマンドプロンプトウインドウの黒い部分をクリックした後に、エンターを押します。
4.しばらく待つと、エクセルが立ち上がるはずです。
5.コントロールキー(Ctrl)を押しながら、「g」を押すと、グラフが現れるはずです。
(エクセルのマクロ機能を使っています)
6.エクセルの「ファイル」→「名前を付けて保存」を選択して保存します。
○エクセルのマクロを有効にしたくない場合:
計算結果は、xls\tmp.csv ですので、適当に手動で
xls\plots_recession.xlsのdataシートにコピペしてください。
「形式を選択して貼り付け」で値だけを貼り付けのが良いかと思います。
は読み取り専用になってますので
適当に名前を変えて保存するといいと思います。
○ファイル一覧:
recession.bat 実行用スクリプト
#以下の3つのexeをパイプで繋いでるだけです。
exe\dumpwave.exe WAVEファイルの内容をテキスト形式で出力する
#奥村晴彦氏作 dumpwave.cをgfortranでコンパイルしたものです。
#参照:http://oku.edu.mie-u.ac.jp/~okumura/wavefmt.html
exe\get_recession.exe 基音の周波数を解析した後、1~10倍音の減衰を解析します。
exe\conv_data.exe 出力されるデータを整形するプログラムです。
#計算結果は、xls\tmp.csv となって出力されます。
xls\plots_recession.xls 結果表示用エクセルファイル(グラフの雛形)
#マクロを使って、xls\tmp.csvからデータをコピーします。
○連絡先:
お問い合わせ・苦情等は、以下のブログのコメント欄などに頂ければ幸いです。
http://guc.blog.shinobi.jp/Entry/60/
2011.9.27 (ひ)
[1回]
[0回]
http://guc.blog.shinobi.jp/%E3%82%AE%E3%82%BF%E3%83%BC%E3%81%AE%E7%89%A9%E7%90%86/%E3%82%AE%E3%82%BF%E3%83%BC%E3%81%AE%E9%9F%B3%E3%81%AE%E5%AE%A2%E8%A6%B3%E7%9A%84%E8%A9%95%E4%BE%A1%EF%BC%88%E3%83%84%E3%83%BC%E3%83%AB%E5%85%AC%E9%96%8B%EF%BC%89ギターの音の客観的評価(ツール公開)