Topページ > 波形に変化を与える2
次は 波形に変化を与える3
|
波形に変化を与える(ウェーブシェーピング6:余談続きで…^^;)
前回「波形に変化を与える(ウェーブシェーピング5:ちょっと余談^^;)」の最後にlog関数の話があって、SynthEditの「Waveshaper2」では、x<0の範囲の値のない部分では、log(x)=0(不定になるのかな?)…として、0を出力しているということでしたが、xが正の値でも、0に限りなく近い場合、log(x)は限りなく小さいマイナスの値になっていくのですが、そこまでは追っかけないようで^^;、xが0.0196付近より小さい場合は、log(x)=0とするみたいですね。因みに、log(0.0196)の場合は、-3.933を出力するようです。
でも、それ以下の数値を出せないかというと、そうではなかったりして、グラフの表示は、-5≦y≦5の範囲だったりしますが、演算結果の範囲は「そこまで扱う事はなさそう」ってぐらいに、かなり広かったりします^^;。例えば、数式に「10000*x」等を使うと、ちゃんと演算結果を出してくれます(係数が大きすぎると誤差を生じるようですが…^^;)。先に書いたように、そこまで大きい値を使うことはあまりないと思いますが…。logの場合は、演算負荷が高くなってしまったりするんでしょうかね…?。よく分かりませんが^^;
一方で、xの範囲は、yとは対照的に、-5≦x≦5だったりします。この範囲外の数値を入力した時には、クリップがかかり、その範囲を超えることはないようです。SynthEditのオシレータでは、振幅を-5〜5の範囲にしているようですが、例えば、音量を大きくしてから「Waveshaper2」でのウェーブシェーピングを行うと、クリップのかかった信号で演算することになるので、正しい結果を得る事が出来なかったりします。
そういう時には、スケール・ダウン(?)するというか、「Waveshaper2」に入れる信号の値を小さくして、-5〜5の範囲に収まるようにするといいかもですね。そして、その入力値を「Waveshaper2」の中でスケール・アップするような演算にすれば、若干精度が悪くなるかもですけど、クリップを回避することは出来たりします^^;。例えば「Waveshaper2」に入る信号の振幅が-10〜10であった場合、入る前に掛け算モジュールに通し、0.5をかけ、スケール・ダウンすると、振幅が-5〜5となります。そして「Waveshaper2」での演算式が「5*sin(x/PI)」だとすると、xに2をかけた式に直して「5*sin((x*2)/PI)」としてやるんです。そうすると、振幅-10〜10でも、クリップされることなくウェーブシェーピングすることが出来たりします^^
Copyright (C) FlawTips All Rights Reserved.
|
|
|