Example #1
0
        public void FillBuffer(float[] data, int channels)
        {
            int samples = data.Length;

            if (channelSfxPointers[0] < 0)
            {
                return;
            }

            for (var i = 0; i < samples; i = i + channels)
            {
                channelSfxTime[0] += sampleDelta;
                double time = channelSfxTime[0] - channelSfxTime[0] % 1 / 22050d;
                data[i] = (float)(gain * (channelSfxNote[0].volume / 7d) * AudioProcessingUnit.Oscillate(channelSfxNote[0].waveform, time, channelSfxNote[0].hz));
                if (channelSfxTime[0] > channelSfxNoteLength[0])
                {
                    StepNodeForChannel(0);
                }
                if (channels == 2)
                {
                    data[i + 1] = data[i];
                }
            }
        }