SoundEffectの拡張

俺の趣味でSoundEffectクラスを拡張して、矩形波以外に三角波とサイン波とノコギリ波を出せるようにした。
ちょっといじってみたが、サイン波に周波数変調をかけると確かにFM音源ぽい音になる。
非常に面白い。
が、あまりに自由に周波数がいじれるから、逆に本物のFM音源みたいにオペレータのパラメータをいじって・・・って感じにはいかない。
うまいことアルゴリズムを作ればエミュレーションすることもできるのかもしれないが、あいにくと俺はそこまで詳しくない。
ひょっとして宝の持ち腐れというやつか?
でもこれはこれでやばいぐらい面白いから置いといて、StarRubyの透視変換みたいに、DXRubyの目玉機能にしよう。
まさか注目する人がいるとは思えないが、こんな機能を持ったゲーム用ライブラリなんぞ、Ruby用と言わず、世の中にほとんどあるまい。
っていうか無いだろ、常識的に考えて。


ついでにSoundEffectのメソッドにaddを追加した。
同じように作った波形を、元の波形に合成することができる。
これを使うと和音が作れる。
周波数変調を使いこなすのは難しいが、こっちは簡単で、変調してない音を重ねればファミコン+α程度の音が出せる。
あとは、MMLみたいなので音を指定するようなロジックが作れれば、PSG音源をはじめとするお好きな音源で音楽が作れてしまうわけだ。
波形を自由に設定できる機能も付ければ、PCM音源もいけるが、それをするならwavファイルを読めばいいだけだから、あんまり意味はないな。
いまんとこバッファの分割やストリーミング再生には対応してないから、あんまり長い音を作ると何が起こるかわからないという欠点(欠陥)はあるが、それは既知の不具合であり、仕様です。


あと、そのおかげでdxruby.soがずいぶん大きくなってしまった。
でも俺が面白いからいいのだ。