带有效果的Windows 8.1 App音频(NAudio或SharpDX)

时间:2015-05-01 20:12:47

标签: c# windows audio naudio sharpdx

如何使用FileOpenPickerNAudioSharpDX加载音频文件,并添加Audio FX,如Flanger,Phaser,Echo,Gate,Bit Crusher。

FileOpenPicker openPicker = new FileOpenPicker();
openPicker.FileTypeFilter.Add(".mp3");
openPicker.FileTypeFilter.Add(".wav");
openPicker.FileTypeFilter.Add(".m4a");
openPicker.FileTypeFilter.Add(".wma");
openPicker.FileTypeFilter.Add(".aac");
StorageFile file = await openPicker.PickSingleFileAsync();

1 个答案:

答案 0 :(得分:1)

这是我对音频文件的FX音效的解决方案。

播放声音

在我们开始之前,您需要以下包,使用NuGet-Package轻松获得:

  • SharpDX
  • SharpDX.MediaFoundation
  • SharpDX.XAudio2

C#

FileOpenPicker openPicker = new FileOpenPicker();
openPicker.FileTypeFilter.Add(".mp3");
openPicker.FileTypeFilter.Add(".wav");
openPicker.FileTypeFilter.Add(".m4a");
openPicker.FileTypeFilter.Add(".wma");
openPicker.FileTypeFilter.Add(".aac");
StorageFile audioFile = await openPicker.PickSingleFileAsync();

MediaManager.Startup();
XAudio2 xaudio2 = new XAudio2();
xaudio2.StartEngine();
MasteringVoice masteringVoice = new MasteringVoice(xaudio2);
AudioPlayer audioPlayer = new AudioPlayer(xaudio2, await audioFile.OpenReadAsync());

AudioPlayer类来自Alexandre Mutel https://github.com/sharpdx/SharpDX-Samples/tree/master/Desktop/XAudio2/AudioPlayerApp 。 在AudioPlayer类中,您可以从以下位置更改构造函数:

public AudioPlayer(XAudio2 xaudio2, Stream audioStream)

要:

public AudioPlayer(XAudio2 xaudio2, IRandomAccessStreamWithContentType audioStream)

现在,您可以使用audioPlayer.Play(); audioPlayer.Stop();

来控制音频文件

添加效果

您可以添加效果:

SourceVoice sourceVoice = audioPlayer.SourceVoice;
Reverb reverb = new SharpDX.XAPO.Fx.Reverb();
EffectDescriptor effectDescriptor = new EffectDescriptor(reverb);
sourceVoice.SetEffectChain(effectDescriptor);
sourceVoice.EnableEffect(0);