Как вывести частоту 1 кГц и мощность/объем = 60% в Linux (Ubuntu)?Как вывести частоту 1 кГц и мощность/объем = 60% в Linux (Ubuntu)?
Мне нужен образец кода в C/C++. Благодаря!
Как вывести частоту 1 кГц и мощность/объем = 60% в Linux (Ubuntu)?Как вывести частоту 1 кГц и мощность/объем = 60% в Linux (Ubuntu)?
Мне нужен образец кода в C/C++. Благодаря!
Посмотрите на библиотеку portaudio. http://www.portaudio.com/
Это очень простая в использовании кросс-платформа и поставляется с множеством небольших примеров программ. Среди прочего вы найдете тот, который синтезирует и играет синусоидальную волну.
Изменение частоты и объема тривиально. Если я правильно помню, пример был всего лишь одной страницей кода, включая инициализацию и все.
+1 Спасибо Нильсу! Вау, это даже кросс-платформенный. Я изучаю это. – Viet
Ниже приводится способ вывода звукового сигнала пользовательской частоты (в герцах) и длины (в миллисекундах). Как установить том, который я не уверен. Обратите внимание, что эта программа C просто вызывает вызов system() для «echo -e», поэтому технически вам даже не нужно C для этого, но вы спросили, чтобы я дал.
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
long freq;
long len;
char cmd[60];
if (argc != 3)
{
printf("Usage: %s freq_hz length_ms\n", argv[0]);
return 1;
}
freq = strtol(argv[1],(char**)NULL,10);
len = strtol(argv[2],(char**)NULL,10);
sprintf(cmd,"echo -e \"\33[10;%ld]\33[11;%ld]\a\33[10]\33[11]\"",freq,len);
system(cmd);
return 0;
}
+1 Спасибо SiegeX! Это выглядит круто. Мне нужно, чтобы он использовал библиотеку напрямую. В любом случае хорошая штука. – Viet
Пожалуйста, добавьте источник для этих специальных управляющих символов ... – Dor
@Dor VT100 терминальные коды: http://wiki.bash-hackers.org/scripting/terminalcodes – SiegeX
Какой API вы используете для управления аудио? –
Я никогда не пробовал и не знал, какой из них я должен использовать. Прошу вас посоветуйте. Спасибо! – Viet