音声音楽スポンサーリンクIIRローパスフィルターについて概要を見てきました。ここでは係数の計算を整理して実装に入りたいと思います。前回の通り遮断する周波数をサンプルレートを加味して計算する方法は以下の式です。各係数は分数の形で計算されますがすべての係数で分母が同じためまずこれを計算します。Qはクオリティファクターです。4π2fc2以下のように係数を計算します。denomこれらの式の導き方についてはフィルターの設計関連の書籍を参考にしてください。実装まずフィルターの理論に関わる部分と変換処理を実装するクラスを作り、あとでこのクラスを使ってフィルタリングするようにします。一般的なクオリティファクターの値をstatic変数にしておきます。Math.sqrt(2.0);過去のサンプルのバッファーです。バッファーbは読み込んだ値、バッファーaは書き出した値です。buffer_a;係数coefficientのための変数配列です。coef_a;現在設定されている遮断周波数とクオリティファクターです。quality;メソッドコンストラクタ過去サンプルのバッファーには2履歴分保持するようにします。係数の配列の長さは3にします。係数aの0番目は使いません。updateメソッドで係数の計算をします。係数を計算するメソッドです。外から触ることはないのでprivateにしています。遮断周波数もしくはクオリティファクターが変更された場合には再計算が必要です。現在の値と違う場合だけ再計算するようにして処理を軽減しています。update();}フィルタリング実処理になります。与えられた入力値を元に出力値を計算していきます。入力値と出力値はそれぞれバッファに保持するようにします。return_value;}次回はこれを呼び出す側の処理を作ります。ミナ・ベルジェIIRローパスフィルタの作成(1)IIRローパスフィルタの作成(3)関連記事JavaとMIDI:曲の構造と表現の分離(1)前回の演奏部分のコードは4小節を演奏するだけのものであるのにコード量がまだ多いです。チェロ組曲第一番の前奏曲は同じようなフレーズがずっと続い...記事を読む調律の話(2)前回はピタゴラスの音律で音階を求めました。今回は平均律という音律を見ます。stereo「堅い」「しっかり確立された」という意味の言葉に由来しています。複数のス...記事を読むJavaとMIDI:トラックの編集ツールを作る(1)時間の管理ができるようになったところでMIDIメッセージをもっと簡単に設定できるようにしたいと思います。連想配列は通常の配列と同じように複数のインスタンスをまとめて管理できます。異なるのは通常の配列が順番によって管理しているのに対して連想配列は...記事を読むFM音源を利用した楽器の作成ここまでに作ったFM音源とエンベロープ・ジェネレーターを使って楽器を作りたいと思います。FM音源を使ったシンセサイザーのヤマハのDX-7のエ...記事を読むテキストファイルの読み込み今までターミナルまたはプロンプトと呼ばれる標準入出力を使って情報のやり取りをしました。今度はコンピューター上に置いたファイルから文字列を読ん...記事を読むJavaとMIDI:シーケンサーを終了させるシーケンサーを使ってシーケンスを演奏させるプログラムを書きましたが現在の実装では強制終了しない限り処理が終了しないままになってしまいます。こ...記事を読むJavaのプログラムでMacかWindowsかを見分けるJavaの利点の一つにOSを選ばずに実行できるという特徴があります。実行ファイルである拡張子がclassのファイルは実行されるときにjava...記事を読む楽器の音色を決める(1)前回では楽器のためのインタフェースを決めました。これを実装したクラスを作って音色のコントロールはこのクラスで行うようにします。コメントをキャンセルメールアドレスが公開されることはありません。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。コメントデータの処理方法の詳細はこちらをご覧ください。外国語としてのJavaと音楽%d人のブロガーが「いいね」をつけました。