Fade In / Fade Out Nyquist
LADSPAでFade In/Outは作ったのだが、Audacityのサンプル処理単位が20bitだったので、それ以上の範囲に適用すると、繰り返されてしまう問題があった。範囲を計測してから適用すればよいかもしれないが、LADSPAでどうやるかは不明。LADSPAは基本的に無限に流れてくる音を処理するためのエフェクトで、有限の範囲を処理するには向いてなさそう。
そこで簡単そうなNyquistでFadeInを作ることにした。 FadeOutはAudacity標準でNyquistのStudio Fade Outがあり、これはコサインカーブで変化する。これを改造してみるのが手っ取り早い。その中身を見ると以下のようにNyquistのosc関数を使ってエンベロープカーブを描いていることが判明。これと実信号を組み合わせて、FadeOutを実現していた。
(osc (hz-to-step (/ (* dur 2))) dur *table* 90)
またローパスフィルターも入っていた。今回はローパスは不要と思えたので、カーブの部分だけ下のように書きなおすことにした。
(osc (hz-to-step (/ (* dur 2) )) dur *table* -90)
つまり開始角度をずらしただけ。 Nyquistは、あらかじめいろいろな関数が用意されているので、Cで作るのに比べ圧倒的に簡単だが、プログラムの勉強にはなりそうもない。プログラミングするというよりは、Nyquistマニュアルから使えそうな関数を探す作業という感じだ。後は独特なLISPの構造でスクリプトを書く必要があるので、それを思い出さないと使えない・・・
出来たコードはこんな感じ。メニューから選択すると即実行するエフェクト。
結果は以下のようになる。30秒と長い選択範囲でもFadeInがちゃんと適用されるようになった。
ついでにフェードアウトも作成。
sound programming 目次
そこで簡単そうなNyquistでFadeInを作ることにした。 FadeOutはAudacity標準でNyquistのStudio Fade Outがあり、これはコサインカーブで変化する。これを改造してみるのが手っ取り早い。その中身を見ると以下のようにNyquistのosc関数を使ってエンベロープカーブを描いていることが判明。これと実信号を組み合わせて、FadeOutを実現していた。
(osc (hz-to-step (/ (* dur 2))) dur *table* 90)
またローパスフィルターも入っていた。今回はローパスは不要と思えたので、カーブの部分だけ下のように書きなおすことにした。
(osc (hz-to-step (/ (* dur 2) )) dur *table* -90)
つまり開始角度をずらしただけ。 Nyquistは、あらかじめいろいろな関数が用意されているので、Cで作るのに比べ圧倒的に簡単だが、プログラムの勉強にはなりそうもない。プログラミングするというよりは、Nyquistマニュアルから使えそうな関数を探す作業という感じだ。後は独特なLISPの構造でスクリプトを書く必要があるので、それを思い出さないと使えない・・・
出来たコードはこんな感じ。メニューから選択すると即実行するエフェクト。
Fade In ソースコード
|
結果は以下のようになる。30秒と長い選択範囲でもFadeInがちゃんと適用されるようになった。
ついでにフェードアウトも作成。
Fade Out ソースコード
|
sound programming 目次