Пример #1
0
        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 }));
        }
Пример #2
0
        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,
            }));
        }