如何在Linux下使用C语言播放音调?

8

我正在尝试编写一个程序,根据一组简单的规则随机生成音乐。我希望该程序能够生成自己的声音,而不是每个音符都有一个音频文件。有没有人知道一个简单的方法来实现这一点?最好(但不是必须)让声音是多音的,并且我需要一个在Linux上使用C的解决方案。


你可以查看http://en.wikipedia.org/wiki/SuperCollider的源代码。 - JasonTrue
3个回答

5

我建议您尝试使用PortAudio库。它是一个精简的跨平台库,可抽象出音频输出功能。

它附带了一堆小例子。其中一个播放单个正弦波,另一个同时播放一堆正弦波。由于这些示例已经完成了90%的工作,因此您应该在不到半小时内就可以使您的音频工作起来。

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


1

1
Alsa 在这个场景中似乎相当笨重,奇怪的是,我发现类似东西的 OSS 版本更容易理解;它在这里:"http://manuals.opensound.com/developer/singen.c.html"。如果有一件事我从中学到的,那就是在 Linux 上处理声音有点令人困惑。 - hungry_joe

0

你可以尝试寻找一个C语言的MIDI序列器(例如MIDI Sequencer)。同时,也可以研究构建.au格式的音频文件(即查看.au头和声音数据格式的规范)。你无法使用.wav格式,因为它需要在播放之前填写头部长度。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接