2011-01-26 18 views
16

En mi escuela secundaria podemos tomar una clase donde básicamente aprendemos sobre una materia por nuestro cuenta durante un semestre. Estaba pensando que quiero aprender sobre "programación de sonido", pero me di cuenta de que no tengo idea de lo que eso implica. Estoy interesado en conocer, por ejemplo, cómo funciona un sintetizador y cómo funciona el sonido en informática. Realmente quiero centrarme en la parte del código de bajo nivel, no tanto en la parte de la composición. ¿Es esto un tema factible? ¿Hay buenos tutoriales para alguien completamente nuevo en esto? Sé C++ y estoy usando Windows. La primera respuesta en this es algo que me interesa (aunque me ha pasado por la cabeza).Quiero aprender programación de audio

+1

Vaya, no me di cuenta de que tenía que hacer eso. ¡Gracias por el aviso! – ahota

Respuesta

17

"Programación de sonido" es un campo muy amplio. En primer lugar, definitivamente es un tema factible, pero dado que necesita incluir cosas en un solo semestre, deberá limitar su alcance. Veo que está buscando un lugar para comenzar, así que aquí hay algunas ideas para hacerle pensar.

Puesto que usted ha mencionado tanto "cómo funciona el sonido en la informática" y "sintetizadores", vale la pena señalar la diferencia entre sonido analógico, sonido muestreado y sonido sintetizado, ya que son conceptos diferentes. Los explicaré brevemente aquí.

El sonido analógico suena como lo interpretamos los humanos: las vibraciones del aire detectadas por el oído humano. Puedes pensar en el sonido como una señal unidimensional, donde la variable independiente es el tiempo y la variable dependiente es la amplitud de la vibración. El sonido analógico es continuo tanto en el dominio de tiempo como de amplitud. Los métodos de grabación de sonido más antiguos (por ejemplo, cinta magnética) usaban una representación de sonido analógico. El sonido analógico no se usa con frecuencia en las computadoras (las computadoras no son buenas para almacenar datos de dominio continuo), pero la comprensión de las señales analógicas es importante. Espera ver muchas matemáticas (por ejemplo, números complejos, transformadas de Fourier) si sigues este camino.

El sonido de muestra es la representación de sonido que se presta bien al procesamiento con una computadora. La gente está más familiarizada con el sonido de la muestra a través de CD y otras grabaciones musicales. Una señal analógica se muestrea a alguna frecuencia (por ejemplo, 44.1 KHz para la grabación de CD). Entonces, una señal de sonido muestreada es discreta en el dominio del tiempo. Si la señal es cuantificada, también será discreta en el dominio de amplitud. Los formatos como MP3 son formatos de muestra. Si estás interesado, hay muchas cosas que estudiar en este campo, como restauración (eliminación de estática, etc.) y compresión (de nuevo, codecs MP3, Ogg Vorbis). Es muy divertido porque hay mucho para experimentar y codificar.

Tanto el sonido analógico como el muestreado cavan profundamente en un campo llamado Digital Signal Processing. Busque en Google para obtener una idea de cómo es. A menudo se enseña como un curso en las universidades, por lo que si estás realmente interesado puedes echar un vistazo a algunas diapositivas de conferencias o incluso probar algunos de los proyectos anteriores más simples.

Sonido sintetizado es una representación que es adecuada para la reproducción de una pista de música, donde los instrumentos que tocan la pista son conocidos de antemano. Piense en ello como una partitura para la computadora. Alguien tiene que escribir la partitura - no se puede simplemente grabar como sonido analógico o muestreado. Esto hace que sintetiza sonido una representación completamente diferente a sonido analógico y sonido muestreado Además, el equipo tiene que saber lo que son los instrumentos (por ejemplo piano) para que pueda jugar (sintetizar) de la pista.Si no conoce el instrumento, se da por vencido o elige una coincidencia cercana (por ejemplo, reemplaza el piano con un teclado eléctrico). Nunca he trabajado con sintetizadores antes, así que no puedo comentar sobre la curva de aprendizaje para ellos.

Por lo tanto, basándome en lo que escribí, elija una dirección que le interese más, navegue por Google y luego refine su pregunta.

EDITAR

Un buen libro para leer es this. Probablemente pueda buscar títulos relacionados en Amazon y encontrar algo más nuevo, pero ha pasado un tiempo desde que hice mis compras de procesamiento de audio.

Y si tiene media hora de sobra, entonces eche un vistazo a este video tutorial. Cubre el procesamiento de sonido, imagen y video; en realidad, son campos estrechamente relacionados.

+0

Awesome answer. Me has dado mucho por lo que me puedo ir. ¡Definitivamente veré ese libro! – ahota

3

Considere trabajar a través del libro "Who Is Fourier?: A Mathematical Adventure". Puede adaptar los ejemplos para hacer pequeñas asignaciones de programación que demuestren los conceptos básicos. Después de que termines, deberías poder utilizar el fft para hacer un espectrograma de tu voz cuando pronuncies las vocales a, e, i, o, u, identificando la frecuencia fundamental y los formantes de cada vocal.

Recomiendo aprender Python y los módulos NumPy, SciPy, and matplotlib (hay mucho, así que más allá de los tutoriales básicos, solo aprenda sobre la marcha). El shell iPython tiene la opción "-pylab -p scipy" para importar automáticamente las herramientas más comunes en su espacio de nombres. Puede grabar y reproducir audio usando PyAudio. También hay Pygame, que se expande en SDL (capa Simple DirectMedia) y pyglet, que usa OpenAL (el OpenGL de audio; hace audio y efectos 3D).

En cuanto a C/C++, hay IT ++, SPUC y FFTW para el procesamiento de señal, y SDL/SDL_mixer y OpenAL/ALmixer para la interfaz con hardware y archivos de audio.

1

Yo recomendaría este libro: http://mitpress.mit.edu/catalog/item/default.asp?ttype=2&tid=8218 (parte de ella está disponible aquí: http://books.google.com/books?id=nZ-TetwzVcIC&printsec=frontcover&dq=computer+musical+tutorial&hl=pt-BR&ei=D-dKTaKsBMOB8gbF4KDcDg&sa=X&oi=book_result&ct=result&resnum=1&ved=0CDgQ6AEwAA#v=onepage&q=computer%20musical%20tutorial&f=false)

Y otra cosa que podría buscar es en puredata, es un entorno gráfico de código abierto para la programación de sonido, y es genial para principiantes. (http://puredata.info/)

Cuestiones relacionadas