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 件のコメント:
コメントを投稿