2013年10月23日水曜日

Octave 1行で作れるコンプレッサ

ある閾値 (threshold) より大きい振幅を、設定した比 (ratio) に基づいて圧縮するエフェクタであるコンプレッサ。

Octave (MATLAB) 上では、以下のように1行で書くことができる。

Sigout = (Sigin.*(Sigin<=thrd & Sigin>=(-thrd)) + ((Sigin-thrd).*ratio + thrd).*(Sigin>thrd) + ((Sigin+thrd).*ratio - thrd).*(Sigin<(-thrd) )) .* (1.0/(thrd+(1.0-thrd)*ratio))


ここで、Sigin, Sigout はそれぞれ入力、出力信号であり、thrd は閾値、ratio は圧縮する比率を表している。

今回は、コンプレッシング後に、与えた閾値と圧縮比から予想される最大の振幅値が 1.0 になるように規格化している。


参考: 「C言語ではじめる音のプログラミング」 (青木 直史 著)



0 件のコメント:

foobar2000でYouTubeの音楽を聞く

foo_youtube: Home インストール方法はこちら:  Foobar2000:How to install a component メリットとしては、 1) foobar 上で Youtube の音楽を聞ける(スペクトラムアナライザーやスペクトログラムを見た...