问题标签 [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.
windows-runtime - 将源语音回调与 XAudio2 for Windows 运行时组件一起使用时,WaitForSingleObjectEx 应该如何实现?
当我尝试使用 WaitForSingleObjectEx 函数来表示 Xaudio2 源语音已完成处理其缓冲区中的所有数据时,我收到了系统错误代码 x05 error_access_denied。
我想将此用作事件处理程序,以了解何时将另一个音频数据缓冲区提交给源语音,因此它可以继续播放,直到调用我的 stop() 函数/方法。
应该如何正确实现 WaitForSingleObjectEx 函数,以便我不会收到 error_access_denied 系统错误代码?
这是针对 Windows Phone 8 C++/CX Windows 运行时组件...
TestTone.h 文件:
TestTone.cpp 文件:
XAudio2VoiceBufferCallback.h 文件:
XAudio2VoiceBufferCallback.cpp 文件:
xaudio2 - IXAudio2::CreateSourceVoice 方法失败
我正在尝试按照此处列出的步骤使用 XAudio2 和 C++ 播放基本音效:http: //msdn.microsoft.com/en-us/library/windows/desktop/ee415762%28v=vs.85%29。 aspx
在我看来,好像 XAudio2 当前正在正确初始化并且正在创建主控声音。然后我填充一个 WAVEFORMATEX 结构和一个 XAUDIO2_BUFFER 结构。
目前,我坚持使用 CreateSourceVoice() 方法。它返回 HRESULT 0x88960003,MSDN 说这是 XAUDIO2_E_XAPO_CREATION_FAILED 结果。然而,我无法弄清楚是什么导致它失败。有没有办法从 XAudio2 方法生成更有用的错误消息,这些错误消息可能对调试有用?这种方法失败的常见原因是什么?我无法找到有关此问题的任何详细信息。
这是我初始化 XAudio2 的方法:
这是我填充结构的方式:
然后我调用 CreateSourceVoice(),但调用后 sourceVoice 为 NULL:
c++ - C ++如何将智能指针传递给将修改指针的输出参数
所有原始指针都需要在程序中使用智能指针进行处理。
但是我遇到了这个 Xaudio2 调用的问题
我的问题是在将智能指针作为指向指针的指针传递时如何使用它,这甚至可能吗?如果不是,我应该如何以聪明的方式解决这个问题?即如何为参数传递智能指针_Out_ IXAudio2 **ppXAudio2
任何帮助都感激不尽。
win-universal-app - 如何使用 sharpDX/Xaudio2 更改波的音高?
我想做的就是在我的通用应用程序中以随机音高播放 WAV。如果有比 SharpDX 需要的更直接的方法来做到这一点,请告诉我!
c# - 如何将浮点数组指针传递给 Volumemeter
我正在尝试在 Xaudio2 中使用 SharpDX VolumeMeter。我想使用 SetEffectParameters 传递一个 VolumeMeterLevels 对象,但该对象只有一个公共 int ChannelCount 而不是 MSDN 部分中提到的两个指针。API 将它们列为内部。
我需要传递 pPeakLevels 和 pRMSLevels 的两个指针。我怎样才能做到这一点?
用代码更新。下面我创建一个新的 VolumeMeter、MasteringVoice 和 VolumeMeterDescriptor。我在 MasteringVoice 的效果链中设置了 VolumeMeter。
问题是 VolumeMeter 有两个非公共属性 PeakLevelPointer 和 RmsLevelsPointer 根据 API ( http://sharpdx.org/documentation/api/t-sharpdx-xaudio2-fx-volumemeterlevels ) 必须由应用程序分配。VolumeMeter 然后将填充指针指向的浮点数组以使仪表工作。问题是:如何传递两个非公共指针?
c# - 如何同步两个 Xaudio2 Streaming SourceVoices
我正在使用 SharpDX Samples ( https://github.com/sharpdx/SharpDX-Samples/blob/master/WindowsDesktop/XAudio2/AudioPlayerApp/AudioPlayer.cs ) 中的流式传输原则同时播放多个声音。
我有一个包含同一首歌多个版本的列表。我想在完全相同的时间启动它们。我为每首歌曲开始一个新任务,并结合使用 CountDownEvent 和 ManualResetEvent 来确保它们同时开始:
在任务中,我准备缓冲区并向 CountDownEvent 发出歌曲已准备好播放的信号。然后歌曲等待来自 ManualResetEvent 的信号。当 CountDownEvent 有来自每首歌曲准备好的信号时,它会发出 ManualResetEvent 信号并调用 SubmitSourceBuffer。
歌曲 10 次中有 9 次开始采样同步(歌曲之间没有可检测到的相位,只是声音更大),但有时有一首稍微偏离。
这是一些详细说明的代码:
旁注:我使用 foreach 语句将每首歌曲的缓冲区发送到多个音频设备,每首歌曲的顺序相同。使用预设内存、音频解码器等的加载方法预先设置就绪状态。
我知道可以使用操作集同时启动 sourcevoices,但是否有另一种方法(使用时钟或其他同步方法)来确保为每首播放歌曲同时发送样本?
winapi - 使用 Waveform Audio API Windows 从扬声器捕获声音
我想使用Waveform Audio API
.
我搜索并找到了解释如何使用 Waveform Audio 从麦克风捕获音频并保存到文件或播放的帖子。但是,没有人解释如何从扬声器捕获音频。
我的理解是,如果我提供播放设备的句柄,waveInOpen()
那么我可以从扬声器中捕捉声音。这是我需要帮助的地方。如何获取播放设备的句柄?当我提供WAVE_MAPPER (or 0) for uDeviceID
时,它总是从麦克风录制。如果我设置任何其他值,我总是会出现超出范围的错误。
编辑:
自从我发布问题以来,我做了更多的研究。我找到了可用于音频捕获的其他选项/API。我需要帮助来指出正确的方向,该方向用于从扬声器捕获音频。我不想要任何涉及大量代码的花哨的东西。我的目标操作系统是 XP 及以上。
WaveInOpen 和混音器:
对这些链接的评论/讨论提示waveInOpen()
可用于从扬声器中获取音频。根据这些,必须打开Mixer。我曾经mixerOpen()
得到搅拌机手柄,但不知道如何使用这个手柄waveInOpen()
。
XAudio2:
我可以使用 XAudio2 从扬声器捕获音频吗?如果是,那么请分享一些示例代码。
c# - XAudio2 - 在改变频率点击声音时播放生成的正弦波
我想开发一个应用程序来匹配你的耳鸣频率:播放一个频率,用户通过按加号或减号按钮来降低或增加频率。(参见部分代码,基于stackoverflow thx :-) 的一些编码)
播放频率很好,但是当用户按下按钮时,当频率更新时,您会在此处发出咔哒声。你知道是什么产生了声音以及我如何摆脱它吗?谢谢。
c# - Windows 8 xaudio2 在多点触控应用程序中播放 wav 文件
我正在学习如何使用 xAudio2。在 Visual Studio 2012 Express For Windows 8 中制作了一个简单的应用程序 Windows 8。简单的 xAudio2 播放器类:
和 Xaml:
和:
在 Windows 8 模拟器中测试。如果我按一根手指,那么一切都很好。当我点击按钮时——放开手指时会播放声音——声音停止。
如果我用两根手指单击并松开两根手指,声音会继续播放。结果是混叠。
调用了两个事件:btnAPointerPressed 和两个事件:btnAPointerReleased 但声音继续播放。好像音频流冻结并继续播放。好像音频流冻结并继续播放。我想了解问题 hadio2?或者我没有正确地做某事?