Пример #1
0
        /// <summary>
        /// Process 16 bit sample
        /// </summary>
        /// <param name="wave"></param>
        /// <param name="hasHEader">true when wav has headers also</param>
        public void Process(ref byte[] wave, bool hasHeader)
        {
            if (wave == null)
            {
                _wave = null;
                return;
            }
            int len = (hasHeader ? wave.Length - AudioUtils.WavHeadSize : wave.Length);

            _wave = new double[len / 2];

            if (!_isTest)
            {
                // Split out channels from sample
                int h = 0;
                for (int i = 0; i < len; i += 2)
                {
                    _wave[h] = (double)BitConverter.ToInt16(wave, i);
                    h++;
                }
            }
            else
            {
                // Generate artificial sample for testing
                _signalGenerator = new SignalGenerator();
                _signalGenerator.SetWaveform("Sine");
                _signalGenerator.SetSamplingRate(44100);
                _signalGenerator.SetSamples(16384);
                _signalGenerator.SetFrequency(5000);
                _signalGenerator.SetAmplitude(32768);
                _wave = _signalGenerator.GenerateSignal();
            }
        }