我正在尝试编写一个程序,根据一组简单的规则随机生成音乐。我希望该程序能够生成自己的声音,而不是每个音符都有一个音频文件。有没有人知道一个简单的方法来实现这一点?最好(但不是必须)让声音是多音的,并且我需要一个在Linux上使用C的解决方案。
我建议您尝试使用PortAudio库。它是一个精简的跨平台库,可抽象出音频输出功能。
它附带了一堆小例子。其中一个播放单个正弦波,另一个同时播放一堆正弦波。由于这些示例已经完成了90%的工作,因此您应该在不到半小时内就可以使您的音频工作起来。
提示:PortAudio最好的文档在头文件中!
这里是一个使用ALSA播放纯正弦波音调的例子。不过,我猜意外地展示了为什么你可能不想直接使用ALSA库来做这件事。
你可以尝试寻找一个C语言的MIDI序列器(例如MIDI Sequencer)。同时,也可以研究构建.au格式的音频文件(即查看.au头和声音数据格式的规范)。你无法使用.wav格式,因为它需要在播放之前填写头部长度。