Cómo dar salida a un 1 kHz de frecuencia y potencia / volumen = 60% en Linux (Ubuntu)?
Pregunta
Como salida de un 1 kHz de frecuencia y potencia / volumen = 60% en Linux (Ubuntu)?
Necesito código de ejemplo en C / C ++. Gracias!
Solución
Tome un vistazo a la biblioteca PortAudio. http://www.portaudio.com/
Es muy fácil de usar, multiplataforma y viene con un montón de pequeños programas de ejemplo. Entre otras cosas se encuentra uno que sintetiza y reproduce una onda sinusoidal.
Cambio de frecuencia y el volumen es trivial .. Si no recuerdo mal el ejemplo era más que una sola página de código de inicialización y que incluye todo.
Otros consejos
A continuación se muestra la forma de salida para un pitido de la frecuencia definida por el usuario (en hercios) y la longitud (en milisegundos). Cómo ajustar el volumen, que no estoy seguro. Tenga en cuenta que este programa C justo hace una llamada al sistema () para 'echo -e' por lo que técnicamente ni siquiera necesita C para esto, pero se preguntó por lo que he dado.
#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;
}