2010-02-04 7 views
6

Estoy tratando de escribir un programa para generar aleatoriamente música en base a un conjunto simple de reglas. Me gustaría que el programa genere sus propios sonidos, en lugar de tener un archivo con audio para cada nota. ¿Alguien sabe una forma simple de hacer esto? Sería bueno (pero no esencial) que el sonido fuera poltonal, y me gustaría una solución para Linux, usando C.¿Cómo toco un tono en Linux usando C?

+0

Puede ver la fuente de http://en.wikipedia.org/wiki/SuperCollider – JasonTrue

Respuesta

0

Puede intentar encontrar un secuenciador midi C (como MIDI Sequencer). Consulte también la creación de archivos de audio con formato .au (es decir, consulte las especificaciones para los encabezados .au y el formato de datos de sonido). No podrá usar el formato .wav porque requiere una longitud en el encabezado para rellenar antes de la reproducción.

5

Le sugiero que pruebe la biblioteca de PortAudio. Es una biblioteca delgada multiplataforma que abstrae la funcionalidad de salida de audio.

Viene con un montón de pequeños ejemplos. Uno de ellos reproduce una onda sinusoidal única, y reproduce un montón de ondas sinusoidales al mismo tiempo. Dado que los ejemplos ya hacen el 90% de lo que necesita, debería tener su audio en funcionamiento en menos de media hora.

Nota: ¡La mejor documentación de PortAudio está en el archivo de encabezado!

0

Here is an ALSA example que reproduce un tono de onda sinusoidal pura. Accidentalmente, supongo, también demuestra por qué es posible que no desee hacer esto directamente en contra de la biblioteca ALSA.

+0

Alsa parece ser bastante voluminosa en esta escena, extrañamente encuentro la versión OSS de algo similar mucho más comprensible; está aquí "http://manuals.opensound.com/developer/singen.c.html". Si hay algo que he aprendido de esto es que trabajar con sonido para Linux es un poco confuso. –

Cuestiones relacionadas