internal static Module AdsrPulseWave() { var freq = Proxy <float>(); // TODO 初期値はスタック管理のため外から見える必要がありそう var duty = Proxy(0.5f); var attack = Proxy(0.15f); var decay = Proxy(0.1f); var sustain = Proxy(0.8f); var release = Proxy(0.25f); var osc = Nodes.PulseOsc(freq, duty); var env = Nodes.AdsrEnv(attack, decay, sustain, release); var output = (osc * env).AsFloat(); return(new Module(freq, output, new Dictionary <string, ProxyController <float> >() { { "duty", duty }, { "attack", attack }, { "decay", decay }, { "sustain", sustain }, { "release", release }, }, new INotable[] { env })); }
internal static Module AdsrEnv() { var attack = Proxy(0.15f); var decay = Proxy(0.1f); var sustain = Proxy(0.8f); var release = Proxy(0.25f); var output = Nodes.AdsrEnv(attack, decay, sustain, release); return(new Module(Enumerable.Empty <ProxyController <float> >(), output, new Dictionary <string, ProxyController <float> >() { { "attack", attack }, { "decay", decay }, { "sustain", sustain }, { "release", release }, }, new INotable[] { output, })); }