예제 #1
0
파일: DSP.cs 프로젝트: asophy/MyMusic
    public Vector4[] Read(AudioContext ac)
    {
        var data = new Vector4[ac.length];

        //float[] beatphase = beatPh.Read(ac.clock.BPM/60.0,ac);
        //float[] oscphase = oscPh.Read((double)freq, ac);



        for (int n = 0; n < data.Length; n += ac.channels)
        {
            //float[] barphase = phase;
            float loopphase = (float)Clock.Phase(ac.clock.BarPosition, 1.0);
            var   phase     = ac.clock.readCache(n);

            float beatphase = (float)Clock.Beat4th(phase);
            float envA      = (float)DSP.Env(0.001f, 0.99f, 1, beatphase, ac);
            float envP      = (float)DSP.Env(0.001f, 0.8f, 6, beatphase, ac);
            var   osc       = oscPh.read(0.5 * ac.baseFreq * envP, ac);
            // float s = Sine(oscPh.read(freq, ac), ac) * amp * sawsq;
            float o = DSP.Sine((float)osc, ac) * envA;

            for (int i = 0; i < ac.channels; i++)
            {
                data[n + i] = new Vector4(o, beatphase, envA, loopphase);
            }
        }
        return(data);
    }