Son avec égaliseur

Depuis quelques jours, j’essaie de créer un égaliseur en C #. Vu NAudio pas mal de temps, mais je n’ai trouvé aucun égaliseur qui fonctionnerait avec naudio. Maintenant, après quelques jours, je suis enfin ici @stackoverflow et, espérons-le, vous connaissez un moyen de créer un égaliseur à l’aide de c #.

PS: J’ai aussi essayé le System.Media.SoundPlayer. Mais SoundPlayer ne prend même pas en charge tout ce qui concerne dsp. Alors, y a-t-il une autre bibliothèque audio qui fonctionne avec de l’audio “pur” à l’extérieur?

Alors, y a-t-il une autre bibliothèque audio qui fonctionne avec de l’audio “pur” à l’extérieur?

Oui, il y en a un: https://cscore.codeplex.com

Selon EqualizerSample , vous pouvez utiliser l’égaliseur comme ceci:

using CSCore; using CSCore.Codecs; using CSCore.SoundOut; using CSCore.Streams; using System; using System.Threading; ... private static void Main(ssortingng[] args) { const ssortingng 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); } } 

Vous pouvez configurer l’égaliseur comme vous le souhaitez. Et comme il fonctionne à 100% en temps réel, tous les changements sont appliqués instantanément. Si nécessaire, il est également possible d’accéder à chaque canal séparément.