问题标签 [xaudio2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
269 浏览

filter - XAudio2滤波器弧度频率

在它提到的XAudio2 过滤器参数的文档中

滤波器弧度频率计算为 (2 * sin(pi * (期望的滤波器截止频率) / sampleRate))

有人可以向我解释该公式的来源吗?因为对我来说唯一有意义的频率转换来源来自 sin(f * t) 和 cosine(f * t) vs sin(2*pi*f * t) 和 cosine(2*pi*f * t ) 其中 f 是“频率”,t 是时间。

0 投票
1 回答
464 浏览

directx - 实施 DirectX SDK 示例(XAudio2Sound3D)给我一个未解决的外部错误?

当我从 2010 年 6 月的 SDK 中实现 XAudio2Sound3D 示例时。我几乎将它全部复制到我自己的框架中,并且这个变量(sound3DInstance)显示为未解析的外部:X3DAudioCalculate( sound3DInstance , &listener, &emitter, calcFlags, &dspSettings); X3DAudioInitialize(details.OutputFormat.dwChannelMask, SPEEDOFSOUND, sound3DInstance ); 其中变量类型是:

现在,两个函数中唯一显示错误的公共变量是sound3DInstance,所以这一定是问题所在。在 SDK 示例中,所有变量都放在一个名为 *AUDIO_STATE* 的结构中,并且在程序的初始化中,它们调用: *ZeroMemory( &g_audioState, sizeof( AUDIO_STATE ) );* 在我的代码中,变量是我的 Sound 类的成员,我只是将它们一一清零,所以效果不应该是一样的吗?

0 投票
2 回答
2238 浏览

windows-8 - Visual Studio 2012 认为我在 Windows 8 上并且需要我没有的库?

我从 2010 年 6 月开始从 DirectX 11 SDK 中的一个示例中实现了代码。我在 2012 年打开了我的项目,然后我也在 2012 年打开了示例,但是当我运行我的时,它需要 XAudio2_8.dll。这是什可能吗?那是 Windows 8 中的 .dll,而 SDK 中的代码是 2010 年的 - 当时不存在这样的 .dll?最奇怪的是 SDK 示例构建并运行,而我的项目要求提供 .dll.I链接了所有的库,制作了所有的包含,我检查了项目设置,在整个硬盘驱动器中搜索了这样的 dll,没有...什么可能导致这样的问题?我也遇到了各种各样的其他问题在 VS2012 下的 SDK 中,例如无法识别 dx11 标头中的类型等。

0 投票
2 回答
3037 浏览

c# - 通过 XAudio2 播放 sinus

我正在使用 XAudio2 制作音频播放器。我们在 640 字节的数据包中传输数据,采样率为 8000Hz,采样深度为 16 字节。我们正在使用 SlimDX 访问 XAudio2。

但是在播放声音时,我们注意到音质很差。例如,这是一条 3KHz 正弦曲线,使用 Audacity 捕获。 3KHz 正弦曲线

我已经将音频播放器浓缩为最基本的内容,但音频质量仍然很差。这是 XAudio2、SlimDX 或我的代码中的错误,还是只是从 8KHz 到 44.1KHz 时发生的伪影?最后一个似乎不合理,因为我们还生成了可以由 Windows Media Player 完美播放的 PCM wav 文件。

下面是基本的实现,它生成了断弦。

一些额外的细节:

这用于以各种压缩方式重放录制的语音,例如 ALAW、µLAW 或 TrueSpeech。数据以小数据包的形式发送,解码并发送到该播放器。这就是为什么我们使用如此低的采样率和如此小的缓冲区的原因。但是,我们的数据没有问题,因为使用数据生成 WAV 文件会导致 WMP 或 VLC 完美回放。

编辑:我们现在已经通过在 NAudio 中重写播放器来“解决”这个问题。我仍然会对有关这里发生的事情的任何输入感兴趣。是我们在 PlayBuffers 中的方法,还是仅仅是 DirectX 或包装器中的错误/限制?我尝试使用 SharpDX 而不是 SlimDX,但这并没有改变任何结果。

0 投票
0 回答
789 浏览

c# - 当声卡仅报告通道掩码为 3 时,通过 SlimDX XAudio2 从后通道播放单声道编码的音频

我有一个较旧的系统 (XP),它允许我使用 DirectSoundBuffer 和 WAVEFORMATEXTENSIBLE 对象以及为后置扬声器设置的 ChannelMask 通过 DirectX 从后置声道(右后和/或左后)播放单声道编码的 PCM 音频。

我正在尝试在旧系统上重做相同的功能以及使用 .Net 和 SlimDx XAudio2 的新系统,但是当我在旧系统上调用 SetOutputMatrix 时,它会忽略我为除前左声道和前右声道之外的任何内容设置的所有内容,即使声卡设置为 5.1 环绕声。在新系统上它工作正常。当我在旧系统上调用 GetDeviceDetails 时,它报告通道掩码为 3(只有前两个扬声器)。我猜这就是为什么即使旧的 C++ DirectSound 有效,它也只允许我在前面播放。我猜声音驱动程序有误,但我找不到任何更新。

有解决方法吗?

这是来自 XAudio2 C++ Basic Sound Demo 的示例,具有相同的行为

在这里,当我获得设备详细信息时,ChannelMask 为 3(前置扬声器),即使声卡配置设置为 5.1。声卡是旧的 SoundMax AC'97 卡。稍后当我执行以下操作时:

在第一个 GetOutputMatrix 之后,fMatrix 的 [0] 和 [1] 索引设置为 1.0。当我调用 SetOutputMatrix 时,我试图将其他通道设置为 1.0,但在 GetOutputMatrix 之后,fMatrix 只有 [1] 设置为 1.0。其他都是0。

注意:当调用 SetOutputMatrix 并且它没有设置它不会失败的所有值时,它返回 OK。

0 投票
1 回答
1123 浏览

c# - 让 SharpDX XAudio2 自定义 XAPO 在 Windows 8 应用程序中工作

我在 Windows 应用商店应用程序中使用 SharpDX 和 XAudio2。我正在尝试创建自定义 XAPO,但我什至无法开始。

应用程序的 OnNavigatedTo 方法:

空自定义 XAPO:

如果我删除该行以启用效果,则空处理方法永远不会运行。如果我保留它,则会发生以下无用的错误:

我收到的错误

0 投票
2 回答
2233 浏览

c# - 如何在 WinRT 中使用 SharpDX 同时播放多个声音?

我正在尝试制作乐器类型的应用程序。我遇到的问题是只有在旧声音完成后才会播放新声音。我希望能够同时播放它们。

这就是我的代码的样子:

首先,MyWave 类只保存一个音频缓冲区和一些其他信息:

在 SoundPlayer 类中:

谷歌不是很有帮助,我找不到任何有用的东西。那么如何同时播放多个声音呢?

0 投票
1 回答
345 浏览

windows-phone-8 - 如何检测是否在后台播放另一个音频?(Windows 电话 8)

我的一个应用程序最近未能通过认证,因为:“我的应用程序停止了背景音乐,而没有询问用户何时想要播放一些音乐”。

现在的问题是:我们如何检测背景中是否有音乐在播放?

PS:请不要 XNA 或 XAML 答案,这是一款针对 Windows Phone Direct 3D 应用程序(仅限本机)的游戏,使用 Xaudio 2

0 投票
1 回答
1675 浏览

windows-8 - XAudio2 和 *.wav 加载,HRESULT 0x88960001

我正在尝试加载一个 *.wav 文件,它是一个 microsoft wav/8bit pcm 文件。我正在使用以下代码加载数据:

它正确解析 wav 文件,WAVEFORMATEX 数据如下所示:

{ wFormatTag=1, nChannels=2, nSamplesPerSec=22050, nAvgBytesPerSec=44100, nBlockAlign=2, wBitsPerSample=8, cbSize=24932 }

当我调用时instance->CreateSourceVoice( &voice, wave->GetWaveFormat(), 0, XAUDIO2_DEFAULT_FREQ_RATIO, reinterpret_cast<IXAudio2VoiceCallback*>( &voiceIn[id]->callbacks ) ),我得到 HRESULT=0x88960001,其中instance类型为IXAudio2*,我包含在一个类中,它在类中静态共享并使用我的类构造函数/析构函数初始化/销毁:

我在多个地方读到这个 ​​HRESULT 是某种 Windows 8 错误,一年多没有修复。我不能接受这是一个持续存在的错误,更倾向于认为这是我的代码的问题。你可以在这个 gist 中查看我对 XAudio2 的完整实现

0 投票
1 回答
750 浏览

audio - XAudio2 遮挡处理

我正在研究自制游戏引擎,目前正在研究音频引擎的实现。这主要是出于自我教育的原因。我想为通用音频处理创建一个接口包装器,因此我可以根据需要在 OpenAL、XAudio2 或其他平台之间切换。我也希望这段代码是可重用的,所以我试图让它尽可能完整,并让各种系统实现尽可能多的功能。目前,我专注于 XAudio2 实现,并且可能会在以后转向 OpenAL 实现。

在过去的几个月里,我读了很多关于 3D 处理(监听器/发射器)、环境效果(混响)、排斥、遮挡、阻塞和直达声的文章。我希望能够在音频播放中使用任何这些效果。虽然我已经尽我所能研究了这些主题,但我找不到任何关于如何实际实现遮挡(直接和反射信号消音)、阻塞(直接信号消音)或排斥(反射信号消音)的示例。阅读 MSDN 文档似乎是对遮挡的被动引用,但没有直接涉及实现。我发现的最好的是通用的“使用低通滤波器”,这对我没有多大帮助

所以我的问题是:使用 XAudio2,如何实现音频反射信号消音(排除)和音频直接信号消音(阻塞)或同时实现(阻塞)?音频图会是什么样子,这些与混响环境效果有何关系?

编辑 2013-03-26
在进一步思考图表时,我意识到我可能没有从正确的角度看图表。
图表是否应该是:源 → 效果(子混音)→ 母带
-或 -
图表是否应该一般如下所示:

第二个图将分割图,以便可以分别计算排除和阻塞;我的部分困惑是如何独立处理它们。
那么,我认为来自 3D 音频 DSP 结构的混响设置将应用于反射路径;多普勒将应用于直接路径或直接路径和反射路径;并且混响环境效果只会影响反射路径。这是否接近正确的音频图模型?