Update() public abstract method

Called periodically on a thread.
public abstract Update ( Action ReadStream ) : void
ReadStream Action
return void
        /// <summary>
        ///
        /// </summary>
        public void Update()
        {
            PspAudioImpl.Update((MixedSamples) =>
            {
                var RequiredSamples          = MixedSamples.Length;
                fixed(short *MixedSamplesPtr = MixedSamples)
                {
                    var MixedSamplesDenormalized = stackalloc int[RequiredSamples];

                    foreach (var Channel in Channels)
                    {
                        var ChannelSamples = Channel.Read(RequiredSamples);

                        fixed(short *ChannelSamplesPtr = ChannelSamples)
                        {
                            for (int n = 0; n < ChannelSamples.Length; n++)
                            {
                                MixedSamplesDenormalized[n] += ChannelSamplesPtr[n];
                            }
                        }
                    }

                    for (int n = 0; n < RequiredSamples; n++)
                    {
                        MixedSamplesPtr[n] = StereoShortSoundSample.Clamp(MixedSamplesDenormalized[n]);
                    }
                }
            });
        }
Example #2
0
        /// <summary>
        ///
        /// </summary>
        public void Update()
        {
            PspAudioImpl.Update((RequiredSamples) =>
            {
                short[] MixedSamples           = new short[RequiredSamples];
                int[] MixedSamplesDenormalized = new int[RequiredSamples];
                int[] NumberOfChannels         = new int[RequiredSamples];
                foreach (var Channel in Channels)
                {
                    var ChannelSamples = Channel.Read(RequiredSamples);

                    for (int n = 0; n < ChannelSamples.Length; n++)
                    {
                        MixedSamplesDenormalized[n] += ChannelSamples[n];
                        NumberOfChannels[n]++;
                    }
                }

                for (int n = 0; n < RequiredSamples; n++)
                {
                    if (NumberOfChannels[n] != 0)
                    {
                        MixedSamples[n] = (short)(MixedSamplesDenormalized[n] / NumberOfChannels[n]);
                    }
                }

                return(MixedSamples);
            });
        }