【发布时间】:2021-12-11 08:20:03
【问题描述】:
我正在探索在 Ubuntu Linux 中使用 C++ 生成声音。这是我的代码:
#include <iostream>
#include <cmath>
#include <stdint.h>
#include <ncurses.h>
//to compile: make [file_name] && ./[file_name]|aplay
int main()
{
initscr();
cbreak();
noecho();
nodelay(stdscr, TRUE);
scrollok(stdscr, TRUE);
timeout(0);
for ( int t=0;; t++ )
{
int ch = getch();
if (ch == 'q')
{
break;
}
uint8_t temp = t;
std::cout<<temp;
}
}
运行此代码时,我希望它发出声音,直到我按键盘上的“q”,然后我希望程序退出。这很好用;但是,在按下键盘和程序退出之间存在明显的延迟。这不是由于 ncurses 的延迟,因为当我在没有 std::cout<<temp; 的情况下运行程序时(即不产生声音),没有延迟
有办法修改吗?如果不是,如何编写实时响应式音频程序?
欢迎对该问题进行编辑和提出建议。我是 ALSA 的新手,所以我不确定是否需要任何其他详细信息来复制该错误。
【问题讨论】: