本文介绍了与均衡器声音的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
由于过了几天,我试图创建一个使用C#的均衡器。
看过n音讯了不少时间,但我找不到任何工作均衡器将与n音讯工作。
现在,几天后,我终于在这里@stackoverflow和希望,你知道的方式来创建一个使用C#的均衡器。
PS:我也尝试了System.Media.SoundPlayer。但是,这声音播放甚至不支持任何与DSP做。那么,有哪些与纯粹的音频外?
中的另一种声音库解决方案
Yes there is one: https://cscore.codeplex.com
According to the EqualizerSample, you can use the equalizer like that:
using CSCore;
using CSCore.Codecs;
using CSCore.SoundOut;
using CSCore.Streams;
using System;
using System.Threading;
...
private static void Main(string[] args)
{
const string filename = @"C:\Temp\test.mp3";
EventWaitHandle waitHandle = new AutoResetEvent(false);
try
{
//create a source which provides audio data
using(var source = CodecFactory.Instance.GetCodec(filename))
{
//create the equalizer.
//You can create a custom eq with any bands you want, or you can just use the default 10 band eq.
Equalizer equalizer = Equalizer.Create10BandEqualizer(source);
//create a soundout to play the source
ISoundOut soundOut;
if(WasapiOut.IsSupportedOnCurrentPlatform)
{
soundOut = new WasapiOut();
}
else
{
soundOut = new DirectSoundOut();
}
soundOut.Stopped += (s, e) => waitHandle.Set();
IWaveSource finalSource = equalizer.ToWaveSource(16); //since the equalizer is a samplesource, you have to convert it to a raw wavesource
soundOut.Initialize(finalSource); //initialize the soundOut with the previously created finalSource
soundOut.Play();
/*
* You can change the filter configuration of the equalizer at any time.
*/
equalizer.SampleFilters[0].SetGain(20); //eq set the gain of the first filter to 20dB (if needed, you can set the gain value for each channel of the source individually)
//wait until the playback finished
//of course that is optional
waitHandle.WaitOne();
//remember to dispose and the soundout and the source
soundOut.Dispose();
}
}
catch(NotSupportedException ex)
{
Console.WriteLine("Fileformat not supported: " + ex.Message);
}
catch(Exception ex)
{
Console.WriteLine("Unexpected exception: " + ex.Message);
}
}
You can configure the equalizer to what ever you want. And since it runs 100% in realtime, all changes are getting applied instantly. If needed, there is also a possiblity to access modify each channel separately.
这篇关于与均衡器声音的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!