2006/12/20 (2006年12月 のアーカイブ)
まあそんなわけで、ここしばらくはプログラム系のディープな話でも書いてみようかと思っている。
モジュラーシンセをソフトウェアで実現しようとした時にどんな構造にすれば良いのか、という所なのだが、C++のクラスにしようとすると、元々各機能のモジュールの組み合わせで出来ているものなので、そういう分割になるのだね。
で、クラス的に言うと、Module という基本クラスがあって、そこから派生してOSC / EG / VCA / VCF みたいなクラスを作るのだ。で各モジュールには入力端子と出力端子がそれぞれあるのだ。
class Module {
};
class Osc : Module {
public:
OutPin opinWaveOut;
InPin ipinCV;
InPin ipinGate;
};
class Eg : Module {
public:
OutPin opinEnvOut;
InPin ipinGate;
};
class Vca : Module {
public:
OutPin opinWaveOut;
InPin ipinWaveIn;
InPin ipinVol;
};
class Vcf : Module {
public:
OutPin ipinWaveOut;
InPin ipinWaveIn;
InPin ipinCutoff;
InPin ipinResonance;
};
イメージ的にはこんな感じ。これで、InPinとOutPinには相互に接続するメソドなんかがあったら、好きなようにモジュールをnew して好きなようにパッチで繋ぎ放題だよね。
Posted by g200kg : 2006/12/20 00:30:00