我正在寻找文档,教程,如何产生声音的示例.我的意思是没有使用将隐藏所有有趣的东西的图书馆.
我有兴趣的声音,我想开始做某事,但我不知道从哪里开始.
纠正我,如果我错了,但生成声音的最低级别是其中之一(DirectSound
,CoreAudio,ALSA,OSS),具体取决于操作系统.所以我必须选择一个操作系统并学习适当的音响系统?
这是真的值得吗?我应该只学习一个包含上述所有的图书馆,并提供跨平台的兼容性?
也许这个问题不是很清楚,我很抱歉,但事实证明,我甚至不知道我想要什么.我只是为了找到我的论文有趣的东西.
解决方法
这是一个让你开始的例子.
// filename "wf.cpp" (simple wave-form generator) #include <iostream> #include <cmath> #include <stdint.h> int main() { const double R=8000; // sample rate (samples per second) const double C=261.625565; // frequency of middle-C (hertz) const double F=R/256; // bytebeat frequency of 1*t due to 8-bit truncation (hertz) const double V=127; // a volume constant for ( int t=0; ; t++ ) { uint8_t temp = (sin(t*2*M_PI/R*C)+1)*V; // pure middle C sine wave // uint8_t temp = t/F*C; // middle C saw wave (bytebeat style) // uint8_t temp = (t*5&t>>7)|(t*3&t>>10); // viznut bytebeat composition std::cout<<temp; } }
通过ALSA接口在Linux上编译并运行:
make wf && ./wf |aplay
通过GStreamer接口在Linux上编译和运行:
make wf && ./wf |gst-launch-0.10 -v filesrc location=/dev/stdin ! 'audio/x-raw-int,rate=8000,channels=1,depth=8' ! autoaudiosink