Advertisement
AntonioVillanueva

Generador 2 todos para ALSA LINUX

May 11th, 2023
571
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.95 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <unistd.h>
  3. #include <limits.h>
  4. #include <alsa/asoundlib.h>
  5.  
  6. //compilar asi gcc 2tonos.c -o 2tonos -lasound
  7. //apt-get install libasound2-dev
  8. //sudo apt-get install alsa-utils
  9. //aplay -l
  10. //aplay -D plughw:X,Y audio.wav
  11.  
  12. // Definir la frecuencia del tono en Hz
  13. #define FREQUENCY 440
  14.  
  15. // Definir la 2a frecuencia del tono en Hz
  16. #define FREQUENCY2 880
  17.  
  18. // Definir la duración del tono en segundos
  19. #define DURATION 1
  20.  
  21.  
  22. int sampleRate = 44100;  // Frecuencia de muestreo típica para audio
  23. //int numSamples = sampleRate * DURATION;
  24. #define numSamples 44100*DURATION
  25.  
  26. // Datos audio
  27. short buffer[numSamples];
  28.  
  29. int sampleCount;
  30.  
  31. void generaAudio (int freq){
  32.     // Generar los datos de audio
  33.     float samplePeriod = (float)sampleRate / freq;
  34.  
  35.     for (sampleCount = 0; sampleCount < numSamples; sampleCount++) {
  36.         buffer[sampleCount] = (short)(sampleCount / samplePeriod) % 2 ? SHRT_MAX : SHRT_MIN;
  37.     }          
  38. }
  39.  
  40. int main() {
  41.  
  42.     // Abrir el dispositivo de audio
  43.     snd_pcm_t *pcmHandle;
  44.     snd_pcm_open(&pcmHandle, "default", SND_PCM_STREAM_PLAYBACK, 0);
  45.  
  46.     // Configurar los parámetros del dispositivo de audio
  47.     snd_pcm_set_params(pcmHandle,
  48.                        SND_PCM_FORMAT_S16_LE,
  49.                        SND_PCM_ACCESS_RW_INTERLEAVED,
  50.                        1,
  51.                        sampleRate,
  52.                        1,
  53.                        500000);  // Latencia deseada en microsegundos
  54.                        
  55.  
  56.     // Generar los datos de audio FRECUENCIA1  440
  57.     generaAudio (FREQUENCY);
  58.    
  59.     // Enviar los datos de audio al dispositivo de audio
  60.     snd_pcm_writei(pcmHandle, buffer, numSamples); 
  61.    
  62.    
  63.    
  64.     // Generar los datos de audio FRECUENCIA2 880
  65.     generaAudio (FREQUENCY2);
  66.    
  67.     // Enviar los datos de audio al dispositivo de audio
  68.     snd_pcm_writei(pcmHandle, buffer, numSamples); 
  69.  
  70.  
  71.     // Cerrar el dispositivo de audio
  72.     snd_pcm_close(pcmHandle);
  73.  
  74.     return 0;
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement