【发布时间】:2011-01-13 06:33:42
【问题描述】:
我正在尝试编写一个程序来根据一组简单的规则随机生成音乐。我希望程序能够生成自己的声音,而不是为每个音符创建一个包含音频的文件。有谁知道这样做的简单方法?如果声音是多音的会很好(但不是必需的),我想要一个使用 C 的 Linux 解决方案。
【问题讨论】:
我正在尝试编写一个程序来根据一组简单的规则随机生成音乐。我希望程序能够生成自己的声音,而不是为每个音符创建一个包含音频的文件。有谁知道这样做的简单方法?如果声音是多音的会很好(但不是必需的),我想要一个使用 C 的 Linux 解决方案。
【问题讨论】:
你可以尝试找一个C midi音序器(比如MIDI Sequencer)。还要研究构建 .au 格式的音频文件(即查看 .au 标头和声音数据格式的规范)。您将无法使用 .wav 格式,因为它需要在播放前填写标题中的长度。
【讨论】:
我建议你试试 PortAudio 库。它是一个精简的跨平台库,抽象了音频输出功能。
它附带了一堆小例子。其中一个播放单个正弦波,一个同时播放一堆正弦波。由于这些示例已经完成了您需要的 90%,因此您应该在不到半小时的时间内启动并运行您的音频。
提示:PortAudio 最好的文档在头文件中!
【讨论】:
Here is an ALSA example 播放纯正弦波音调。顺便说一句,我猜它也说明了为什么您可能不想直接针对 ALSA 库执行此操作。
【讨论】: