【问题标题】:How do I play a tone in Linux using C?如何使用 C 在 Linux 中演奏音色?
【发布时间】:2011-01-13 06:33:42
【问题描述】:

我正在尝试编写一个程序来根据一组简单的规则随机生成音乐。我希望程序能够生成自己的声音,而不是为每个音符创建一个包含音频的文件。有谁知道这样做的简单方法?如果声音是多音的会很好(但不是必需的),我想要一个使用 C 的 Linux 解决方案。

【问题讨论】:

标签: c linux audio random


【解决方案1】:

你可以尝试找一个C midi音序器(比如MIDI Sequencer)。还要研究构建 .au 格式的音频文件(即查看 .au 标头和声音数据格式的规范)。您将无法使用 .wav 格式,因为它需要在播放前填写标题中的长度。

【讨论】:

    【解决方案2】:

    我建议你试试 PortAudio 库。它是一个精简的跨平台库,抽象了音频输出功能。

    它附带了一堆小例子。其中一个播放单个正弦波,一个同时播放一堆正弦波。由于这些示例已经完成了您需要的 90%,因此您应该在不到半小时的时间内启动并运行您的音频。

    提示:PortAudio 最好的文档在头文件中!

    【讨论】:

      【解决方案3】:

      Here is an ALSA example 播放纯正弦波音调。顺便说一句,我猜它也说明了为什么您可能不想直接针对 ALSA 库执行此操作。

      【讨论】:

      • Alsa 在这个场景中确实显得相当笨重,奇怪的是我发现类似东西的 OSS 版本更容易理解;它在这里“manuals.opensound.com/developer/singen.c.html”。如果我从中学到了一件事,那就是在 Linux 上使用声音有点令人困惑。
      猜你喜欢
      • 2022-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-03
      • 1970-01-01
      • 2011-12-22
      • 2023-03-18
      • 2017-03-13
      相关资源
      最近更新 更多