Skip to content

Divide y vencerás

4 abril 2010

¿Alguna vez has estado en clase y, mientras hacías un ejercicio en tu cuaderno, de repente te has puesto a escribir en el cuaderno de tu compañero encima de todo lo escrito? No, ¿verdad? Pues parece que mi proyecto es aficionado a hacer algo así, y claro, va generando fallos de segmentación por doquier.

En fin, que de nuevo he estado teniendo fallos de segmentación con la parte del análisis y Gosu. Tras mucho pelearme lo he resuelto con los siguientes pasos:

  • Primero, me he pasado al wrapper para C++ de PortAudio, así que nueva dependencia para el proyecto: libportaudiocpp0 en Debian GNU/Linux y derivados.
  • Con estos nuevos wrappers la llamada al CallBack que feedea y consume los datos de los búffers de salida y entrada respectivamente se puede hacer de varias formas, a saber: llamando a una función de C (antigua manera), llamando a una función de C++, llamando a una función concreta de una clase que implementa una interfaz concreta, y llamando a una función miembro de la instancia de una clase concreta, que es lo que finalmente estoy usando.
  • He dividido (y así vencido) la parte del analizador en dos partes: ControlSonido y Analizador. Así, utilizando el último método de backcalling (mediante la clase paramétrica MemFunCallbackStream), en ControlSonido controlo (valga la redundancia) el flujo, y le paso como callback una instancia de la clase Analizador, que se dedicará exclusivamente al procesado de los datos y la generación de la nota actual.

¡Y funciona! Lógicamente, dentro de un par de días dejará de funcionar. Pero bueno, eso es normal, Murphy siempre está rondando.

No comments yet

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: