gpt4 book ai didi

c++ - 在没有库的情况下生成声音?

转载 作者:IT老高 更新时间:2023-10-28 23:14:50 26 4
gpt4 key购买 nike

我正在尝试查找有关如何生成声音的文档、教程和示例。我的意思是不使用会隐藏所有有趣内容的库。

我对声音很感兴趣,我想开始用它做点什么,但我不知道从哪里开始。

如果我错了,请纠正我,但产生声音的最低级别是其中之一(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接口(interface)在Linux上编译运行:

make wf && ./wf |aplay

通过GStreamer接口(interface)在Linux上编译运行:

make wf && ./wf |gst-launch-0.10 -v filesrc location=/dev/stdin ! 'audio/x-raw-int,rate=8000,channels=1,depth=8' ! autoaudiosink

GStreamer声称是跨平台的。它的主要功能是您可以创建(或使用现有的)插件来构建音频过滤器管道。

关于c++ - 在没有库的情况下生成声音?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9137297/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com