/// <summary>
        /// 配置分析的参数
        /// </summary>
        /// <param name="refWaveform">参考波形</param>
        public void SetAnalyzeParam(MultiToneWaveform refWaveform)
        {
            analyzer.SetReferenceWaveform(refWaveform.GetRawWaveform() as ManagedAudioLibrary.MultiToneWaveform);
            this.refWaveform = refWaveform;
            this.RefWaveform = refWaveform;
//            analyzer.set
            IsAnalyzeParamSet = true;
        }
Exemple #2
0
        /// <summary>
        /// 多音色波形生成
        /// </summary>
        /// <param name="sampleRate">采样率</param>
        /// <param name="waveLength">波形长度</param>
        /// <param name="amplitude">波幅</param>
        /// <param name="frequencyMin">最低频率</param>
        /// <param name="frequencyMax">最高频率</param>
        /// <param name="frequencyPoints">频率个数</param>
        /// <param name="isLog">是否对数波形</param>
        /// <param name="optimizeCrestFactor">是否优化参数</param>
        /// <returns>波形数据</returns>
        public static double[] MultiToneWaveform(double sampleRate, uint waveLength, double amplitude,
                                                 double frequencyMin, double frequencyMax, ushort frequencyPoints, bool isLog = false,
                                                 bool optimizeCrestFactor = false)
        {
            MultiToneWaveform multiToneWaveform = new MultiToneWaveform();

            multiToneWaveform.CreateData(amplitude, frequencyMin, frequencyMax, frequencyPoints,
                                         waveLength, isLog, optimizeCrestFactor, sampleRate);
            double[] waveData = new double[multiToneWaveform.GetTotalPoints()];
            multiToneWaveform.GetCopyOfData(waveData);
            return(waveData);
        }
Exemple #3
0
        public void Start()
        {
            if (null == tableLayoutPanel_waveConfig.Controls[0])
            {
                return;
            }
            double    sampleRate    = (double)numericUpDown_sampleRate.Value;
            Generator waveGenerator = tableLayoutPanel_waveConfig.Controls[0] as Generator;

            AITask.AITask input  = _globalInfo.AITask;
            AOTask.AOTask output = _globalInfo.AOTask;
            output.SetUpdateRate(sampleRate);
            input.SetSampleRate(sampleRate);
            double channelRange = waveGenerator.GetAmplitude();

            output.AddChannel(comboBox_aoChannel.SelectedIndex, -1 * channelRange, channelRange);
            input.AddChannel(comboBox_testChannel.SelectedIndex, -1 * channelRange, channelRange);

            double[] outData = waveGenerator.Generate();

            output.SetSamplesToUpdate(outData.Length);
            double outTime = outData.Length / output.GetUpdateRate();

            input.SetSamplesToAcquire((int)(outTime * input.GetSampleRate() * GlobalInfo.ExtraReadTime));
            output.WriteData(outData, -1);

            input.Start();
            output.Start();

            _testData = new double[input.GetSamplesToAcquire()];
            input.ReadData(ref _testData, _testData.Length, GlobalInfo.ReadTimeOut);

//            easyChart_waveform.Plot(_testData);
            _globalInfo.Mainform.Invoke(new Action <double[], double, double>(easyChart_waveform.Plot), _testData, 0, 1);

            input.Stop();
            output.Stop();
            _refWaveform = waveGenerator.GetRefWaveform() as MultiToneWaveform;
//            double peakToPeak, acRms, dcRms, max, min, tdPlusN;
//            double[] acPart, powerSpectrum, phaseSpectrum;
//            SeeSharpTools.JY.Audio.AudioAnalyzer.AnalyzeMultiToneWaveform(readWaveform, _refWaveform, _globalInfo.AITask.GetSampleRate(),
//                out peakToPeak, out acRms, out dcRms, out max, out min, out tdPlusN, out acPart, out powerSpectrum, out phaseSpectrum);
            _analyzeSize = _refWaveform.GetTotalPoints();
        }