Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Documentación Para Programar Audio

Iniciado por gazpachu, 03 de Septiembre de 2003, 02:26:25 PM

« anterior - próximo »

gazpachu

 Hola a todos y en especial a "synchrnzr", pues creo que eres la persona más indicada para ayudarme.

Actualmente estoy terminando un proyecto, en el cual he desarrollado un gestor de sonido con ayuda de la librería BASS. Estoy muy contento de la experiencia con esta librería, yo creo que para proyectos no comerciales es de lo mejorcito que puedes encontrar. Además, el proceso de aprendizaje es muy rápido y enseguida te acostumbras a ella.

Por otro lado, ahora se me presenta un problema... Tengo que desarrollar un módulo de sonido, que se encargue de controlar entradas, salidas, mezcla de canales, carga de sonidos, grabación a través de diferentes entradas, controlar MIDI y FireWire, y edición de samples... ( tampoco muy complicado )... Vamos en pocas palabras, desarrollar una aplicación a medio camino entre un reproductor avanzado y un SoundForge bastante "capado".

Por ello, quiero ponerme cuanto antes a empezar a estudiar todo lo necesario para poder realizar este proyecto. ¿Qué me recomendais? Empiezo a estudiar Direct Sound?, conoceis bibliografía que pueda ayudarme?, Documentación, Tutoriales, Programación de la Interface,... vamos cualquier cosa que se os ocurra, me vendría muy muy pero que muy bien, porque ahora estoy un poco perdido..  :(

Necesito aprender a programar un módulo de Audio sin ayuda de librerias! ¿Qué es lo que debo aprender? ¿Cómo lo hariais vosotros?

Muchisimas gracias por todo! Un saludo,  Pachu.

synchrnzr

 Hola!

CitarActualmente estoy terminando un proyecto, en el cual he desarrollado un gestor de sonido con ayuda de la librería BASS. Estoy muy contento de la experiencia con esta librería, yo creo que para proyectos no comerciales es de lo mejorcito que puedes encontrar. Además, el proceso de aprendizaje es muy rápido y enseguida te acostumbras a ella.

Sí, parece que mucha gente la utiliza :)

CitarPor ello, quiero ponerme cuanto antes a empezar a estudiar todo lo necesario para poder realizar este proyecto. ¿Qué me recomendais? Empiezo a estudiar Direct Sound?, conoceis bibliografía que pueda ayudarme?, Documentación, Tutoriales, Programación de la Interface,... vamos cualquier cosa que se os ocurra, me vendría muy muy pero que muy bien, porque ahora estoy un poco perdido...

No me ha quedado claro exactamente qué tipo de módulo quieres programar. Mis recomendaciones son muy diferentes dependiendo si es un módulo para videojuegos o si es para un programa de edición de sonido. En el primero necesitas que te funcione de manera muy eficiente a tiempo real y tienes muchos puntos de apoyo, en cambio hacer un programa de edición es bastante más especializado y, en general, te interesará trabajar a más bajo nivel.

Si tiene que ser para un videojuego, mírate primero DirectSound y DirectMusic. A mi me parecieron bastante buenos los ejemplos y la documentación que vienen con el SDK de DirectX, incluso puedes importar reaprovechar código de algunas clases genéricas de DSUtil o DXUtil (yo al final me hice mis clases, de todas formas  :lol:) Eso sí, huye de la documentación de las MSDN, la del SDK es mucho mejor. Ya verás que no es mucha cosilla. Cuando domines el tema este, ojéate DirectAudio para pillar el tema de los AudioPaths, si necesitas optimizar el rendimiento de tu aplicación te puede servir. Con todo eso controlado, será un buen momento para que te pongas con DirectShow. Los filtros de DirectShow te pueden servir para abstraerte de los tipos de archivo que necesitas utilizando los codecs genéricos de Windows.

Ahora bien, si vas a hacer un módulo tipo motor de sonido para un videojuego, tienes que dominar lo de arriba lo mejor posible. Ojéate bien la forma de usar la aceleración hardware (no es muy difícil tampoco) ya que le puedes sacar bastante provecho. Con esto también puedes hacer efectos simples a tiempo real como ecualizar, añadir reverberaciones, ecos, flangers y demás.

Si vas a hacer un programa de edición, entonces te puede bastar con los temas básicos, ya que el procesado de efectos y demás corre de tu cuenta y, por lo general, sólo necesitarás reproducir el sonido que generes y ale. Los efectos que puedas hacer seguramente no te servirán de mucho en ese caso, lo que sí necesitarás conocimientos sólidos de DSP (Digital Signal Processing) Si necesitas libros, tenía por ahí un enlace que me pasó Halted Mode a un libro muy bueno sobre el tema, te lo puedes bajar de forma gratuita en PDF (eso sí, está en inglés) Está casi todo lo que necesitas saber sobre DSP, incluso creo que había ejemplos con código. Eso sí, muchos efectos no aparecerán.

A medio camino te queda (a lo mejor es lo que quieres hacer, ahora que lo pienso) lo que sería hacer un reproductor de módulos. En ese caso, puedes elegir. Reproducir es fácil, sólo te quedará ver si a la hora de hacer los efectos te pones a programarlos tú o intentas aprovechar los recursos de DirectX. Para programarlos, tienes que meterte en terreno DSP. Creo que no hay muchos documentos sobre el tema. Puedes mirarte un txt que viene con el Impulse Tracker, por ejemplo, que explicaba cómo se procesan todos los efectos en Impulse Tracker. Se llama ITTECH.TXT si no recuerdo mal. Si vas a hacer un reproductor de módulos, como mínimo te puede servir de inspiración. Hay mejores formas de implementar y de hacer esos efectos. Si aprovechas bien las DirectX, aun puedes aprovecharlas para acelerar algun proceso o hacer algun efecto (o para ahorrarte trabajo, por ejemplo dejando el proceso de mezcla para DirectX)

De VST no te digo nada de momento pa no liarte demasiado, pero depende lo que hagas te puede interesar para soportar filtros de procesado :)

CitarNecesito aprender a programar un módulo de Audio sin ayuda de librerias! ¿Qué es lo que debo aprender? ¿Cómo lo hariais vosotros?

Bueno... las DirectX son librerías... :D

Si lo que quieres es programar un módulo de audio sin librerías, vete empollando DSP a saco (ole)

Otra cosa, es que tal cómo lo planteas, te recomiendo que antes de programar (y tal vez antes de mirarte nada incluso) diseñes bien la estructura del módulo. Muchas veces en aplicaciones de audio se pierde mucho rendimiento por no hacer cuatro garabatos sobre papel antes de ponerse a picar código (no me preguntes por qué, pero pasa muy a menudo (nooo)) Y si existe una remota posibilidad que algun dia lo quieras portar a otra plataforma, presta especial atención a la capa de adaptación entre las DirectX y tu aplicación.

Ale, a mandar :)

sync

gazpachu

 Hola Sync,

gracias por contestarme tan pronto!, realmente la aplicación que quiero programar está a medio camino entre  un videojuego ( porque van a haber modulos en 3D, 2D ), pero en cuanto al módulo de sonido, está claramente orientado a la edición y gestión de las diferentes señales de audio. Vamos..., que se parece más a un Sound Forge, que a un videojuego.

Empezaré por mirarme el SDK de Directx 9 y buscaré documentación de todo esto que me has comentado!

Estamos en contacto!  :rolleyes:

Ciaoo!

Rivheh

 Por si sirve, dejo un enlace que contiene una introducción bastante maja a los efectos de audio:

http://www.harmony-central.com/Effects/aud...ects-faq-10.txt

Y el libro en pdf al que se refería sync, creo que era este (con código en una especie de basic, pero que sirve de todos modos para entender lo que se va explicando):

http://www.dspguide.com/pdfbook.htm

Saludos






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.