2009-11-29 18 views
12

Siempre he tenido curiosidad acerca del software de conversión de audio, pero nunca he visto una explicación adecuada desde el punto de vista de los principiantes sobre cómo escribir un programa simple que convierte, por ejemplo, un archivo mp3 en un wav. No estoy preguntando sobre ninguno de los complejos algoritmos involucrados, solo un pequeño ejemplo usando una biblioteca simple. Buscando en SO, me ocurrió con varios nombres, incluyendo:Guía para principiantes absolutos para trabajar con audio en C/C++?

  • Lame
  • La Síntesis Toolkit
  • OpenAL
  • DirectSound

Pero soy incapaz de encontrar un ejemplo sencillo de cualquiera de estas bibliotecas. Por lo general, no me importa leer toneladas de código, pero aquí no tengo ningún conocimiento sobre el tema y siempre siento que estoy disparando en la oscuridad.

¿Alguien aquí tiene un ejemplo/tutorial simple sobre la conversión de un archivo de sonido usando cualquiera de estas bibliotecas? Mi pregunta está dirigida específicamente a C/C++ porque esos son los dos idiomas que estoy aprendiendo actualmente, por lo que me gustaría seguir centrándome en ellos.

Editar: Una cosa que olvidé mencionar: estoy en un sistema * NIX.

+0

Es una pregunta muy difícil, porque generalmente no se trata de audio de manera abstracta, quiere jugarlo, y eso dependerá de la API del sistema operativo. La API debe estar escrita para manejar el fregadero de la cocina. –

Respuesta

3

Gracias a todos por las respuestas! En cierto modo, los improvisé para crear una pequeña utilidad que convierte un archivo AIFF/WAV/etc a un archivo mp3. Parece que hay cierto interés en esta cuestión, por lo que aquí lo que hice, paso a paso:

Paso 1: Descargar e instalar la biblioteca libsndfile según lo sugerido por James Morris. Esta biblioteca es muy fácil de usar; su único inconveniente es que no funcionará con archivos mp3.

Paso 2: Mire dentro de la carpeta 'examples' que viene con libsndfile y find generate.c. Esto proporciona un buen ejemplo de trabajo de convertir cualquier archivo que no sea mp3 a varios formatos de archivo. También da una idea del poder detrás de libsndfile.

Paso 3: código Préstamos de generate.c, he creado un archivo c que acaba convierte un archivo de audio a un archivo .wav. Aquí está mi código: http://pastie.org/719546

Paso 4: Descargar e instalar el LAME encoder. Esto instalará la biblioteca libmp3lame y la utilidad de línea de comandos lame.

Paso 5: Ahora usted puede leer API de LAME o simplemente tenedor & ejecutivo de un proceso que cojo para convertir el archivo WAV en un archivo MP3.

Paso 6: ¡Saca el champán y el caviar!

Si hay una manera mejor (estoy seguro de que hay) para hacer esto, por favor hágamelo saber. Personalmente, nunca había visto una hoja de ruta paso a paso como esta, así que pensé en ponerla allí.

0

Verificar libmad http://mad.sourceforge.net "" M "peg" A "udio" D "ecoder library", debería proporcionar un buen ejemplo. También para un fácil manejo de audio multiplataforma, consulte SDL http://www.libsdl.org/. Espero que ayude.

+0

Tengo este funcionando, pero el ejemplo crea archivos .PCM, que no puedo entender cómo jugar. Pregunta relacionada en superuser.com aquí: http://superuser.com/questions/76665/playing-a-pcm-file-on-a-unix-system –

+0

Actualización: puedo importar los archivos PCM en Audacity yendo a Project > Importar datos sin procesar. –

1

Si tiene curiosidad acerca de DSP y las computadoras, eche un vistazo al Synthesis Toolkit. Es dulce. Está diseñado para aprender. Los ejemplos y tutoriales que tienen en su sitio web son sencillos y completos. Tenga en cuenta que los chicos que lo escribieron lo escribieron para que pudieran crear modelos acústicos de instrumentos reales. Como resultado, han incluido algunos instrumentos que son simplemente extravagantes, pero divertidos. Le dará una comprensión básica del procesamiento de sonido PCM. Y probablemente puedas hackear juntos algunos pequeños y divertidos matracas al mismo tiempo.

https://ccrma.stanford.edu/software/stk/

2

para la conversión entre diferentes formatos (excepto MP3) check libsndfile http://mega-nerd.com/libsndfile/

Libsndfile es una biblioteca diseñada para permitir la lectura y la escritura de muchos diferentes formatos de archivo de sonido muestreado (tales como MS Windows WAV y el formato Apple/SGI AIFF) a través de una interfaz de biblioteca estándar .

Durante las operaciones de lectura y escritura, formatos son convertidos a la perfección entre el formato del programa de aplicación ha solicitado o suministrado y el formato de datos del archivo .El programador aplicación puede permanecer felizmente inconscientes de cuestiones tales como el formato endian-dad y datos archivo

También es fácil de usar, con la API siguiendo el estilo de los nombres de las funciones de la biblioteca estándar C:

http://mega-nerd.com/libsndfile/api.html

Y los ejemplos se incluyen en la distribución de fuente.

Para la salida de audio real, se necesitará otra biblioteca, SDL como ya se mencionó podría ser un buen lugar para comenzar. Mientras que SDL también puede leer/escribir archivos de audio, libsndfile es muy superior.

Cuestiones relacionadas