【问题标题】:Low level audio programming低级音频编程
【发布时间】:2010-11-14 00:11:50
【问题描述】:

我想知道; Cubase 和 Audacity 等音频软件是否使用 PlaySound 调用?

在哪里可以了解低级音频编程?据我在网上找到的信息,MCI 似乎是 Windows 中最低级别的音频 API...

谢谢

编辑:我不要求只针对 Windows 提供特定信息。

【问题讨论】:

    标签: audio low-level


    【解决方案1】:

    有多种音频 API 可供选择。最古老和最广泛支持的是 waveOut API - 在 MSDN 中查找以 waveOut 开头的函数。较新的是 DirectSound,它更适合游戏,但它的主要功能是 waveOut 的主要功能是专业音频软件不使用的位置 3D 声音(它也应该具有比 waveOut 更低的延迟,但从未真正实现)。对于低延迟音频,有ASIO。专业音频应用程序支持此 API,但并非所有驱动程序都支持(这是专业声卡的标准功能,但不是游戏或板载硬件)。 ASIO 可以提供比 waveOut 或 DirectSound 低得多的延迟。最后是内核流接口,它是最低级别的音频接口,仍然可以从用户模式代码访问。这是进入 Windows 内部混音器的直接管道,它将当前正在播放声音的所有应用程序的输出组合成发送到声卡的信号。虽然它几乎没有记录。有一个名为ASIO4ALL(google it)的驱动程序,通过在内核流接口之上实现 ASIO API,在没有 ASIO 驱动程序的声卡上提供 ASIO 支持。

    【讨论】:

    【解决方案2】:

    我在这里玩游戏有点晚了,但我上周发布了一个 Windows API 历史记录,可能会增加一点上下文。 API 的选择实际上取决于您的需求。如果您想避免使用 3rd 方库,它实际上只能归结为 MME、XAudio2 和 Core Audio (WASAPI)。

    A Brief History of Windows Audio APIs

    希望这会有所帮助!

    【讨论】:

      【解决方案3】:

      实际上,如果您正在寻找的不仅仅是仅 Windows 的输出支持,那么最好的开始方法是查看 Phil Burk 的 PortAudio,在撰写本文时可在 http://www.portaudio.com/ 获得。

      ASIO 是一个高质量的界面,但它是 Steinberg 的专有产品。

      在现代 Windows 中,有许多比 MCI 更低级别的音频输出接口。这些至少包括DirectSoundXAudioWASAPI

      我建议尽可能避免使用 Windows API,而是学习 PortAudio。

      【讨论】:

        猜你喜欢
        • 2011-03-27
        • 2011-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-18
        • 2012-02-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多