自作デジタルエフェクターではLFOなど可聴域外の周波数を扱う事があります。そういった音声信号はWAVファイルへ出力しても耳で聞いて確認することができません。そのような場合は数値データをそのままファイルに落としてグラフ化ツールなどで可視化して確認します。 gnuplot gnuplotはフリーのグラフツールです。 gnuplot https://sourceforge.net/projects/gnuplot/files/gnuplot/ gnuplotにはコマンドライン版とウインドウ版の両方が入っています。どちらでも同じように使えますが、ここではウインドウ版を使います。 インストールの際にデスクトップ上にアイコンを作成するにチェックを入れておきます。 インストールが終わったら、デスクトップのショートカットを右クリックしてショートカットのプロパティを表示します。 ショートカットのプロパティで作業フォルダーの中を消して空にします。 グラフ表示してみる 作業の流れは、 ・wgnuplotショートカットを作業フォルダへコピーする。 ・コンソールで標準出力へデータを出力するプログラムを作る。 ・リダイレクトでデータファイルを生成する。 ・gnuplotで表示する。 ちょっと面倒ですけど、こんなものでしょう。ではちょっとやってみましょう。 まず、初めにデスクトップにあるwgnuplotのショーカットを作業フォルダへドラッグ&ドロップでコピーし、作業フォルダからwgnuplotを起動できるようにしておきます。これを作って置かないと起動の度に作業フォルダを指定しなければなりません。 次にサイン、コサインの数値を出力するプログラムを書いてみます。教科書通りの何の変哲もないコンソールに数値を出力するだけのプログラムです。 sine_cos.cpp #include <iostream> #include <math.h> main() { int fs = 44100; // サンプリングレート int freq = 1; // 周波数 int l
プログラムで音声フォーマットのWAVファイルが扱えるようになれば、それを読みこんで、エフェクト処理して、それを書き出す、自作のデジタルエフェクターではそれをリアルタイムで行うだけの違いでしかありません。PCでプログラムのひな形を作るのがサウンドエフェクトプログラミングの第一歩となります。 WAVライブラリ C言語ではじめる音のプログラミング http://floor13.sakura.ne.jp/book03/book03.html サウンドプログラミング入門 http://floor13.sakura.ne.jp/book06/book06.html 良本なのでぜひ両方ともお手元に置いてあげてください。 サンプル音源やソースコードも上記サイトで全公開されています。そのソースコードの中にWAVファイルを読み書きするCプログラムがあるのですが、Cではちょっとアレなので、それをC++で書き直してみました。 wave.hpp(C++) https://github.com/DIYFXWorld/Other オリジナルのソースコードではデータ圧縮もサポートしていますが、面倒なので非圧縮データのみの扱いとしました。 wavファイルの情報を表示する 手始めにwave.hppを使ってWAVファイルの情報を表示するプログラムを作ってみます。wave.hppを同じフォルダにコピーしておきます。プログラムファイル名はwav_info.cppとします。 wav_info.cpp #include "wave.hpp" main( int argc, char *argv[] ) { if( argc < 2 ) { printf( "usage : wav_info file_name.wav" ); return 0; } wav_info wi = get_wav_info( argv[ 1 ] ); puts( "" ); printf( "Sampling rate : %d Hz\r\n", wi.fs ); printf( &qu