private void Start() { //jeden kanal wahwah = musicCube.GetComponent <WahWahFilter>(); wahwah.QValue = 1.5f; wahwah.CutOffFrequency = 300.0f; wahwah.FrequencyRange = 800.0f; lowpass = musicCube.GetComponent <LowPassFilter>(); lowpass.CutOffFrequency = 400.0f; lowpass.QValue = 0.5f; //drugi kanal envelope = musicCube.GetComponent <EnvelopGenerator>(); envelope.AttackRate = 0.15f * 44100.0f; envelope.DecayRate = 0.15f * 44100.0f; envelope.SustainLevel = 0.6f; envelope.ReleaseRate = 0.1f * 44100.0f; highpass = musicCube.GetComponent <HighPassFilter>(); highpass.QValue = 0.5f; highpass.CutOffFrequency = 300.0f; bandpass = musicCube.GetComponent <BandPassFilter>(); bandpass.centreFrequency = 350.0f; bandpass.q = 0.4f; bandpass.BandPassFilterConstantPeakGain(); vibrato = musicCube.GetComponent <VibratoFilter>(); vibrato.delay = 0.2f; vibrato.depth = 0.03f; vibrato.frequency = 0.8f; }
private void btnAddFilter_Click(object sender, RoutedEventArgs e) { Filter filter = null; switch ((sender as FrameworkElement).Name) { case "btnAddLPF": filter = new LowPassFilter(Filter.DefaultN, (double)globalSampleRate / 4); break; case "btnAddHPF": filter = new HighPassFilter(Filter.DefaultN, (double)globalSampleRate / 4); break; case "btnAddBPF": filter = new BandPassFilter(Filter.DefaultN, (double)globalSampleRate / 8, (double)globalSampleRate * 3 / 8); break; case "btnAddBSF": filter = new BandStopFilter(Filter.DefaultN, (double)globalSampleRate / 8, (double)globalSampleRate * 3 / 8); break; case "btnAddMF": filter = new AverageFilter(Filter.DefaultN); break; case "btnAddZPass": filter = new ZFilterPass(ZFilterPass.DefaultR, (double)globalSampleRate / 4); break; case "btnAddZPass1": filter = new ZFilterPass1(ZFilterPass1.DefaultR, (double)globalSampleRate / 4); break; case "btnAddNotch": filter = new NotchFilter(NotchFilter.DefaultR1, NotchFilter.DefaultR2, (double)globalSampleRate / 4); break; default: return; } filter.PropertyChanged += new PropertyChangedEventHandler(Filter_PropertyChanged); filters.Add(filter); filtersList.SelectedIndex = filters.IndexOf(filter); updateResult(); }
public ArticulatorLayer(Synthesizer synth) : base(synth) { bpf1 = new BandPassFilter(0, 0, synth.SampleRate, RES_F1, RES_F1); bpf2 = new BandPassFilter(0, 0, synth.SampleRate, RES_F2, RES_F2); bpf3 = new BandPassFilter(0, 0, synth.SampleRate, RES_F3, RES_F3); bpf4 = new BandPassFilter(0, 0, synth.SampleRate, RES_F4, RES_F4); bpf5 = new BandPassFilter(0, 0, synth.SampleRate, RES_F5, RES_F5); lpNoise = new ButterworthFilter(FREQ_LPNOISE, synth.SampleRate, PassFilterType.LowPass, RES_LPNOISE); hpOverlay = new ButterworthFilter(FREQ_HPO, synth.SampleRate, PassFilterType.HighPass, RES_HPO); lpOverlay = new ButterworthFilter(1, synth.SampleRate, PassFilterType.LowPass, RES_LPO); UpdateLowerBandwidths(); UpdateLowerFormants(); UpdateHigherFormants(); }
/// <summary> /// Method returns BiQuad bandpass overlapping filters based on given frequencies. /// </summary> /// <param name="fftSize">Assumed size of FFT</param> /// <param name="samplingRate">Assumed sampling rate of a signal</param> /// <param name="frequencies">Array of frequency tuples (left, center, right) for each filter</param> /// <returns>Array of BiQuad bandpass filters</returns> public static float[][] BiQuad(int fftSize, int samplingRate, Tuple <double, double, double>[] frequencies) { var center = frequencies.Select(f => f.Item2).ToArray(); var filterCount = frequencies.Length; var filterBank = new float[filterCount][]; for (var i = 0; i < filterCount; i++) { var freq = center[i] / samplingRate; var filter = new BandPassFilter(freq, 2.0); filterBank[i] = filter.FrequencyResponse(fftSize).Magnitude.ToFloats(); } return(filterBank); }
private void HandleFilterTypeChange(FilterChange message) { bpFilter = message.BPFilter; hpFilter = message.HPFilter; lpFilter = message.LPFilter; switch (message.FilterType) { case FilterType.None: Become(ProcessNone); break; case FilterType.HighPass: Become(ProcessHighPass); break; case FilterType.LowPass: Become(ProcessLowPass); break; case FilterType.BandPass: Become(ProcessBandPass); break; } }
private static async Task TestBrainDeviceManager() { var cfg = ClientConfig.GetConfig(); var lowFilter = new LowPassFilter() { LowPassRate = 10 }; var highFilter = new HighPassFilter() { HighPassRate = 10000 }; var bPassFilter = new BandPassFilter() { LowCutoffRate = 20, HighCutoffRate = 30 }; var bStopFilter = new BandStopFilter() { LowPassRate = 35, HighPassRate = 38 }; var mFilter = new MedianFilter() { HalfMedianWindowSize = 7 }; var bandFilter = new BandPassStopFilter { BandFilterList = new List <BandFilter> { lowFilter, highFilter, bPassFilter, bStopFilter } }; bandFilter.Disable = true; var allFilter = new FilterTypeList() { Filters = new List <FilterType> { bandFilter, mFilter } }; var filterParameters = new Dictionary <string, string> { { FilterTypeList.FIRhalfOrderOptionName, 10.ToString() } }; cfg.FilterLst = allFilter; IOnlineFilter filter = null; WaveletReconstruction waveletRec = null; cfg.WaveletRecCfg = new WaveletReconstructionConfig { AvgLevel = 8, ConvolutionMode = ConvolutionModeEnum.Normal, ExtensionMode = SignalExtension.ExtensionMode.SymmetricHalfPoint, Level = 8, MotherWaveletName = "db5", WindowSize = 15 }; cfg.WriteToFile(ClientConfig.DefaultConfigFileName); BrainDeviceManager.Init(); var sender = await BrainDeviceManager.Connnect("127.0.0.1", 9211); BrainDevState currentState = default(BrainDevState); //保证设备参数正常才继续跑逻辑 BrainDeviceManager.BrainDeviceState.Subscribe(ss => { currentState = ss; filterParameters.Update( FilterTypeList.SampleRateOptionName, BrainDevState.SampleCountPer1Sec(ss.SampleRate).ToString() ); //AppLogger.Debug($"Brain Device State Changed Detected: {ss}"); }, () => { AppLogger.Debug("device stop detected"); }); int totalReceived = 0; var medianFilter = OnlineFirFilter.CreateDenoise(7); var fastMedianFilter = new OnlineFastMedianFilter(3); BrainDeviceManager.SampleDataStream.Subscribe(tuple => { var(order, datas, arr) = tuple; //Console.Write($" {order} "); var passTimes = BrainDevState.PassTimeMs(currentState.SampleRate, totalReceived) / 1000; var intArr = datas.CopyToArray(); var val = intArr[0]; var voltage = BitDataConverter.Calculatevoltage(val, 4.5f, currentState.Gain); totalReceived++; var m1 = medianFilter.ProcessSample(voltage); var m2 = fastMedianFilter.ProcessSample(voltage); AppLogger.Debug($"passTimes:{passTimes},val:{val},voltage:{voltage},median filter:{m1},fast:{m2},{m1==m2}"); if (filter == null) { filter = allFilter.CreateFilter(filterParameters); waveletRec = cfg.WaveletRecCfg.Create( BrainDevState.SampleCountPer1Sec(currentState.SampleRate)); waveletRec.ReconstructionStream.Subscribe(reconstruct => { var(vol, tim) = reconstruct; AppLogger.Debug($"wavelet reconstruction:{vol} at {tim}"); }); } waveletRec?.BufferData((voltage, passTimes)); AppLogger.Debug($"filter processed:{filter.ProcessSample(voltage)}"); //AppLogger.Debug($"order:{order}"); //AppLogger.Debug($"converted values:{datas.Show()}"); //AppLogger.Debug($"original datas:{arr.Show()}"); }, () => { AppLogger.Debug("device sampling stream closed detected"); }); var cmdResult = await sender.QueryParam(); AppLogger.Debug("QueryParam result:" + cmdResult); if (cmdResult != CommandError.Success) { AppLogger.Error("Failed to QueryParam, stop"); BrainDeviceManager.DisConnect(); return; } cmdResult = await sender.SetFilter(true); AppLogger.Debug("SetFilter result:" + cmdResult); cmdResult = await sender.SetTrap(TrapSettingEnum.Trap_50); AppLogger.Debug("SetTrap result:" + cmdResult); cmdResult = await sender.SetSampleRate(SampleRateEnum.SPS_2k); AppLogger.Debug("SetSampleRate result:" + cmdResult); cmdResult = await sender.QueryParam(); AppLogger.Debug("QueryParam result:" + cmdResult); cmdResult = await sender.QueryFaultState(); AppLogger.Debug("QueryFaultState result:" + cmdResult); cmdResult = await sender.TestSingleImpedance(1); AppLogger.Debug("TestSingleImpedance result:" + cmdResult); cmdResult = await sender.TestMultiImpedance(30); AppLogger.Debug("TestMultiImpedance result:" + cmdResult); Console.ReadLine(); var fs = new FileResource(currentState, 19801983, 1, BrainDeviceManager.BufMgr); fs.StartRecord(BrainDeviceManager.SampleDataStream); cmdResult = await sender.Start(); if (cmdResult != CommandError.Success) { AppLogger.Error("Failed to start sampler"); } else { AppLogger.Debug($"start receive sample data"); await Task.Delay(1000 *10); AppLogger.Debug($"stoping"); await sender.Stop(); AppLogger.Debug($"stop receive sample data"); await Task.Delay(1000); } BrainDeviceManager.DisConnect(); fs.Dispose(); var readf = new FileSampleData(fs.ResourceId, BrainDeviceManager.BufMgr); Console.WriteLine($"expecte to read {totalReceived} blocks"); Console.WriteLine($"start reading saved sampling data"); int readCount = 0; readf.DataStream.Subscribe(tuple => { var(order, datas, arr) = tuple; Console.Write($" {order} "); readCount++; //AppLogger.Debug($"order:{order}"); //AppLogger.Debug($"converted values:{datas.Show()}"); //AppLogger.Debug($"original datas:{arr.Show()}"); }, () => { AppLogger.Debug($"read sampling data file end,count :{readCount},expected count:{totalReceived}"); }); readf.Start(); await Task.Delay(1000 *10); Console.Write($"wait complete"); }
public ConfigBandPassFilter(DSP dsp) : base(dsp) { myDSP = (BandPassFilter)dsp; Initialize(); }
public SpectrumComponentBase() { _audioFilter = new BandPassFilter(BufferSize, SampleRate); }
protected AudioComponentBase() { _audioFilter = new BandPassFilter(BufferSize, SampleRate); }