Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <unistd.h>
- #include <limits.h>
- #include <alsa/asoundlib.h>
- //compilar asi gcc 2tonos.c -o 2tonos -lasound
- //apt-get install libasound2-dev
- //sudo apt-get install alsa-utils
- //aplay -l
- //aplay -D plughw:X,Y audio.wav
- // Definir la frecuencia del tono en Hz
- #define FREQUENCY 440
- // Definir la 2a frecuencia del tono en Hz
- #define FREQUENCY2 880
- // Definir la duración del tono en segundos
- #define DURATION 1
- int sampleRate = 44100; // Frecuencia de muestreo típica para audio
- //int numSamples = sampleRate * DURATION;
- #define numSamples 44100*DURATION
- // Datos audio
- short buffer[numSamples];
- int sampleCount;
- void generaAudio (int freq){
- // Generar los datos de audio
- float samplePeriod = (float)sampleRate / freq;
- for (sampleCount = 0; sampleCount < numSamples; sampleCount++) {
- buffer[sampleCount] = (short)(sampleCount / samplePeriod) % 2 ? SHRT_MAX : SHRT_MIN;
- }
- }
- int main() {
- // Abrir el dispositivo de audio
- snd_pcm_t *pcmHandle;
- snd_pcm_open(&pcmHandle, "default", SND_PCM_STREAM_PLAYBACK, 0);
- // Configurar los parámetros del dispositivo de audio
- snd_pcm_set_params(pcmHandle,
- SND_PCM_FORMAT_S16_LE,
- SND_PCM_ACCESS_RW_INTERLEAVED,
- 1,
- sampleRate,
- 1,
- 500000); // Latencia deseada en microsegundos
- // Generar los datos de audio FRECUENCIA1 440
- generaAudio (FREQUENCY);
- // Enviar los datos de audio al dispositivo de audio
- snd_pcm_writei(pcmHandle, buffer, numSamples);
- // Generar los datos de audio FRECUENCIA2 880
- generaAudio (FREQUENCY2);
- // Enviar los datos de audio al dispositivo de audio
- snd_pcm_writei(pcmHandle, buffer, numSamples);
- // Cerrar el dispositivo de audio
- snd_pcm_close(pcmHandle);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement