Víctor, para reproducir sonido en los altavoces en un programa en C, la función `sound()` que mencionas generalmente solo emite un pitido en el speaker interno del PC, y no en los altavoces externos. Para reproducir sonidos en los altavoces, necesitas usar una API o librería que permita manejar audio de forma más avanzada.
Aquí te comparto algunas opciones comunes:
1. Usar la API de Windows (Waveform Audio)
En Windows, puedes usar la API de Windows para reproducir archivos WAV, por ejemplo, con la función `PlaySound()` de la librería `windows.h`. Es muy sencilla y efectiva para sonidos cortos.
Ejemplo básico:
Notas:
- Debes tener un archivo `sonido.wav` en el directorio del programa.
- La opción `SND_ASYNC` permite que la reproducción sea asíncrona, para no bloquear el programa.
2. Usar librerías externas
Si quieres más control, puedes usar librerías como **SDL2**, **OpenAL**, o **PortAudio**. Estas librerías permiten cargar y reproducir archivos de audio en diferentes formatos y con mayor control.
Por ejemplo, con
SDL2:
- Cargar un archivo WAV
- Reproducirlo en los altavoces
Pero requiere instalar y configurar la librería.
3. Reproducir sonidos en modo simple (Windows)
Para sonidos cortos, la función `Beep()` también puede ser útil, aunque solo genera tonos simples, no archivos de sonido complejos.
---
Resumen
- Para sonidos cortos en Windows, usa `PlaySound()`.
- Para sonidos más complejos o en otros sistemas, considera librerías como SDL2 o PortAudio.