C# NAudio 3D 声音

Posted

技术标签:

【中文标题】C# NAudio 3D 声音【英文标题】:C# NAudio 3D Sound 【发布时间】:2019-03-04 12:14:53 【问题描述】:

我编写了一个可以正常播放声音的程序,但是如何设置 3D 声音的位置,或者至少可以设置声音在右侧应该有多强以及声音有多强应该在左边?

到目前为止,这是我的代码:

WaveOut wavOut = new WaveOut();
            wavOut.Init(new BlockAlignReductionStream(new WaveFileReader(File.OpenRead("Wav File")));
            wavOut.Play();

            while(wavOut.PlaybackState == PlaybackState.Playing)
            
                Thread.Sleep(250);
            

【问题讨论】:

【参考方案1】:

假设你有一个立体声录音,它没有“3D”组件。

也许您想改为调整左右声道的响度。如果是这样,您可以尝试使用 WaveChannel32 类来控制平移 - 请参阅此处:https://github.com/naudio/NAudio/blob/e359ca0566e9f9b14fee1ba6e0ec17e4482c7844/NAudio/Wave/WaveStreams/WaveChannel32.cs

将 WaveFileReader 传递给它并提供适当的平移值 (-1 >= x

WaveOut wavOut = new WaveOut();
wavOut.Init(new WaveChannel32(new WaveFileReader(File.OpenRead("WavFile"), 0, 0)); // the last argument in the WaveChannel32 is the pan value
wavOut.Play();

【讨论】:

以上是关于C# NAudio 3D 声音的主要内容,如果未能解决你的问题,请参考以下文章

使用OpenCVSharp和NAudio库在C#中录制带有声音的视频并保存下来的代码

C# NAudio:录制的文件无法播放

NAudio 与 MultiplexingSampleProvider 和 WasapiOut

无法使用麦克风 c# naudio 捕捉 15k 的音调

将nAudio录音存储在变量而不是c#中的文件中

如何使用 NAudio 和 ASIO 直接读取输入缓冲区和播放?