Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

563
Visualizações
Cómo reproducir sonido en C desde cero (Linux)

¿Cómo reproducir sonidos en diferentes tonos en C sin usar ninguna biblioteca externa? Sé que hay docenas de bibliotecas de sonido en C que te permiten reproducir sonido, pero lo que quiero saber es cómo funciona eso detrás. ¿Cómo le dices a la computadora que toque una determinada nota en un cierto tono/frecuencia? Sé que es posible en Windows usando la función sound() pero no puedo encontrar ninguna documentación que hable sobre Linux, todo lo que encontré es la función beep() (o write(1, "\a", 1) ) que genera el terminal predeterminado emite un pitido, pero no puedo entender cómo reproducir diferentes sonidos.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

La API de audio nativa del kernel de Linux es ALSA (Advanced Linux Sound Architecture).
Ejemplo de reproducción de audio sin procesar con ALSA: https://gist.github.com/ghedo/963382/815c98d1ba0eda1b486eb9d80d9a91a81d995283
Sin embargo, ALSA es una API de bajo nivel que no se recomienda usar directamente en aplicaciones de nivel superior.

Una API de audio de sistema moderno para GNU/Linux sería PulseAudio (el valor predeterminado actual en Ubuntu), o el PipeWire más nuevo y posiblemente mejor (el valor predeterminado en Fedora).

Ejemplo de reproducción de audio sin procesar con PipeWire que genera audio "desde cero":
https://docs.pipewire.org/page_tutorial4.html

¿Cómo le dices a la computadora que toque una determinada nota en un cierto tono/frecuencia?

El sonido es una vibración mecánica que se propaga a través del aire (u otro medio). Se puede representar digitalmente como una secuencia de valores numéricos que representan la presión del aire a una frecuencia de muestreo determinada. Para reproducir un tono/frecuencia determinado, genere una onda sinusoidal de esa frecuencia (a la frecuencia de muestreo de la reproducción) y use la API de sonido de su elección para reproducirla.

Consulte el tutorial de PipeWire anterior para ver un ejemplo de generación de un tono de 440 Hz.

Acerca de PulseAudio/PipeWire:

Estas bibliotecas suelen ser parte del sistema operativo y se exponen como API del sistema (por lo que no son "bibliotecas externas" si eso significa que se envía alguna biblioteca con su programa o para pedirles a los usuarios que las instalen), y las aplicaciones deben usarlas para reproducir audio. .

Detrás de escena, estas bibliotecas manejan el enrutamiento de audio, la mezcla, la cancelación de eco, la grabación y la reproducción en el kernel a través de ALSA (o usando Bluetooth, etc.). Todo lo que los usuarios y desarrolladores esperan de la capa de audio del sistema.

Hasta hace poco, PulseAudio era la API de audio del sistema de escritorio universal de facto, y muchas aplicaciones todavía usan la API PulseAudio para reproducir audio en GNU/Linux. PipeWire incluye compatibilidad con PulseAudio, por lo que las aplicaciones que utilizan la API de PulseAudio seguirán funcionando en el futuro previsible.
Ejemplo de reproducción de audio sin procesar con PulseAudio: https://freedesktop.org/software/pulseaudio/doxygen/pacat-simple_8c-example.html

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda