最近、アナログシンセっぽいソフトシンセをプログラムしてみようといろいろとやっていた。オシレータとか、エンベロープジェネレータ(アンプ)は結構簡単なのだけど、フィルターは一筋縄では行かなかった。デジタルフィルタ自体はそれほど難しくはないのだけど、アナログシンセに使われているあれがなかなか表現できないのだ。ちゃんと周波数は削れても、レゾナンス発振のうにょーんがいい感じに出ない、とか。
世の中にはそういう事を研究している人も居るようで、結局のところ回路をシミュレートしないとだめだよねということになってるようだ。実際Moogのフィルター回路を実装するという論文をよみながら組んでみたフィルタはそういう音がする。すごいものだ。ただし計算量が単純なものに比べて膨大になってしまうのだけど。
計算量を減らすべく、いろいろと近似演算で代替するのだけど、単純に代替しただけではかなり出音に変化が出てしまった。想像以上に繊細なもののようだ。フィルターはフィードバックでエラーがかなり積み上がっていってしまうらしい。
浮動小数点にしてもエラーは出るわけで、気にせずに普通に組んでしまったらやはりそういう事が音に影響を及ぼすわけだ。なんだか部品の善し悪しとかという問題が計算アルゴリズムとかという話に単純にシフトしてしまうようで想像するとにやにやしてしまう。
インテルの演算器は音が固くて高音域がざらつく、AMDはパンチのある音で低音が特に良い、VIAはよくいえば温かい悪く言えばなまっている音・・・なんていうことは・・・やっぱりないよね。