Planet

Cambiando librerías

Últimamente he estado teniendo problemas rarísimos con PortAudio, “a ratos” le daba por fallar y me soltaba mensajes extraños que no tenían nada que ver con lo que yo hiciera, sino con los intríngulis de la librería. Lo mismo dejaba de capturar sonido, como si desconectara el micrófono, que me daba un error en tiempo de ejecución.
Me he llevado unos cuantos días bastante duros intentando probar otras APIs de sonido más conocidas y fiables, y al final el resultado ha sido favorable. Puse una pregunta en StackOverflow y, pese a que solo tuvo una respuesta, me sirvió para guiarme.
Empecé leyendo esta guía, que curiosamente dice que PortAudio no es una buena API, cosa que he comprobado empíricamente. Decidí empezar por GStreamer, ya que teóricamente abstraía todo el bajo nivel y tal, pero la verdad es que después de usarlo prefiero pelearme cara a cara con flujos, samples y búffers, que tener que aprenderme la sarta de abstracciones que los de GStreamer se han inventado, y que hacen difíciles las tareas más sencillas. Además, GStreamer está hecho en C y su wrapper en C++ está muy verde, tanto en documentación como en partes sin terminar. De hecho, uno de los módulos que me interesaba usar solo funcionaría en C, y lo peor de todo es que eso no está escrito en ningún lado, sino que me lo dijo uno de los desarrolladores en la lista de correo. Pa jartarse de reir.
Seguidamente, pensé en programar directamente usando la API de alguno de los sistemas de sonido de Linux, y me decanté por PulseAudio. Afortunadamente, PulseAudio consta de dos APIs, una api simple con un funcionamiento muy básico y sencillo, y una api asíncrona con todo el potencial. Como mi única necesidad era la de abrir un flujo de datos del micrófono, la api simple me sirvió perfectamente. Es bastante mejor que PortAudio, el rendimiento es mayor, y me gusta más, aunque he tenido que crear manualmente un hilo en el que se ejecute el procesamiento, cuando antes con PortAudio éste se generaba solo. Pero bueno, así le he echado el ojo a Boost::Thread.
FFTin’
Por otro lado, la librería que estaba usando para realizar la transformada de Fourier era un módulo suelto de Audacity con las funcionalidades mínimas y con un rendimiento más bien normalito, que ejecutado constantemente acababa provocando un retraso bastante considerable entre la ejecución de la nota y el resultado en pantalla.
De nuevo a la búsqueda de librerías, partía con ventaja, ya que conocía los mayores contendientes. En un lado del ring, FFTW, un monstruo de más de cien mil líneas, optimizado hasta la última línea, pero con una curva de aprendizaje bastante chunga, además de que tendría que añadir yet another dependency al proyecto, y van…
Como adversario, con unas 500 líneas de código, una optimización normalilla y gran facilidad de uso, kissfft. Con dos líneas de código (sí, dos) ya estaba sacando FFT’s de números reales, caso por cierto especialmente optimizado en esta librería, analizando paralelamente cada mitad del vector de entrada.
Al final, la decisión fue fácil: para mis necesidades, kissfft va que chuta, aunque si en el futuro veo de nuevo problemas de rendimiento, consideraré usar fftw.

Curiosidad de C

Hoy me he dado cuenta de una pequeña curiosidad de C que creo que desconocía. Igual alguna vez alguien me lo había comentado antes, pero si lo hizo yo no ...

Escribiendo documentación

Durante los 15 días que no he publicado nada, he estado acabando la documentación, que estaba muy atrasada. Actualmente puedo decir que queda un 20% de toda la documentación del proyecto por realizar, en concreto el apartado de Implementación y Pruebas. Quedan algunos flecos en el apartado de Diseño, pero en general esta bastante avanzada.
Por otro lado, la programación la tengo un poco estancada, pues el día 2 tengo el último examen de la carrera y me gustaría aprobarlo... y esas cosas. Sí que he corregido algunos detalles de usabilidad y errores de concepto en la parte de Pacientes, por lo que puedo decir que prácticamente está finalizado el apartado de Administración y el de Pacientes. Ya queda menos, en concreto la parte de creación de dietas y depurar bugs secundarios.
Iré informando aunque ahora la cosa esta un poco más estancada. Un saludo!

Kora.onResume()

Parece que no he hecho nada con Kora en las últimas dos semanas. No hay commits nuevos en el repositorio ni apenas escribo.
Y en parte es verdad. No es que me haya matado a trabajar en el proyecto, pero sí he estado haciendo cosillas. Han sido las dos últimas semanas del curso y he tenido que hacer y entregar varias prácticas. También he sufrido en mis propias carnes lo apañaos que son los funcionarios de la ITV y he tenido que hacer papeleos para la Erasmus del año que viene.
De todas formas, he estado preparando junto con mi tutora un artículo que vamos a mandar al Tecnoneet (y sigo con ello). Además, he seguido peleándome con la parte domótica del servidor. Hemos conseguido ya algún avance menor y hemos estado probando OpenRemote. Al final, esta biblioteca no es ni mucho menos la panacea, y queramos o no, vamos a tener que pelearnos con Calimero. Aprovecho para comentaros que:
El que diseñó la API de Calimero merece morir empalado.
La biblioteca está requeteprobada y a pesar de ser una alpha desde 2008, tiene pinta de ser estable y funciona. Pero es un infierno trabajar con ella: apenas hay documentación, los nombres de las clases y los métodos son nada descriptivos, para cada cosa hay que trabajar de una forma distinta y lo peor de todo: está muerta. Menos mal que los de OpenRemote le han aplicado algunos parches y tienen el código abierto. Solo esperamos poder engancharlo todo con BlueRose para septiembre. La verdad es que al final me va a dar lástima irme a Alemania y no poder seguir trabajando en esto, que me está interesando bastante.
Por cierto, me he abierto una cuenta de tuiter: @gskbyte.

Segundo premio de Educación y Ocio en el CUSL nacional

Tivion sigue cosechando éxitos y tras asistir a la fase final del concurso universitario de software libre en la universidad de Cádiz los días 13 y 14 de mayo (y perdonar el retraso en publicar esta noticia, pero los exámenes finales me han tenido muy ocupado) mi proyecto ha resultado premiado con el segundo premio en la categoría “Educación y Ocio” dotado con 750 €, una subscripción a la revista Linux Magazine y a la revista Novática y un bonito diploma con peluche de GuadalinexSoftware LibreEl resto de premios fueron:Mejor proyecto educación y ocio

Mejor proyecto innovación

Mejor proyecto comunidad

Mejor proyecto movilidad

Mejor proyecto accesibilidad

Premios CUSL - Ganadores y comité de evaluaciónPodeis ver fotos del evento gracias al Flickr de la Oficina de Software Libre de la Universidad de Cádiz (OSLUCA) o también descargarlas aquí. Aunque ya os aviso que no salgo muy fotogénico y me han hecho las fotos un poco a traición (es broma).Además del premio me lleve muy buena imagen de Cádiz, una ciudad bonita y llena de historia. Y sus gentes muy amables y serviciales. Ni que decir tiene que durante las jordanadas hice muchísimos amigos entre los premiados, comité y otros participantes. También obtuve muchas ideas de posibles mejoras a Tivion y en general me gusto mucho el ambiente que había (sobre todo a la hora de salir de cañas )Mi recomendación es que si tenéis un pequeño proyecto de software libre os apuntéis el año que viene, ya que se viven muy buenas experiencias y entras en contacto con mucha comunidad del software libre, además de que siempre podéis resultar premiados y llevaros un buen dinerito por vuestro esfuerzo realizado.Rating: 0.0/10 (0 votes cast)Comparte, descargalo en pdf, imprimelo o enviaselo a un amigo!

Entradas relacionadas:

  1. Tivion ganador del mejor proyecto en el III Concurso Universitario de Software Libre de Castilla-La Mancha
  2. Tivion aceptado en el Concurso Universitario de Software Libre (CUSL)
  3. Tivion finalista en el CUSL de Castilla-La Mancha

Nueva versión de Gosu y nueva forja

Acaba de salir la versión 0.7.20 de Gosu, con algunas mejoras, entre las que se puede leer:
“Linux: Added fallback to SDL_TFF when loading local .ttf files, please install libSDL-ttf2.0-dev to continue using Gosu, thanks to theOm3ga
La verdad es que, a pesar de que la idea base es la mía, la implementación del dueño del proyecto es bastante mejor. Concretamente, al usar mi clase me daba un fallo de segmentación al intentar escribir varios textos usando la misma fuente:
void draw(){
wstring a = L"Perro";
fuente -> draw(a, 10, 10, 1., 1,1, Gosu::Color(0xffffffff));
fuente -> draw(a, 10, 30, 1., 1,1, Gosu::Color(255, 255,0,0));
}
Pero con su implementación funciona. Es un puntazo, tengo que mirar el código a ver cómo lo ha hecho.
Por otro lado, me he pasado a la forja de Google Code, principalmente por los constantes errores sobre el certificado de RedIris que no parecen querer arreglar. Además, Google Code me gusta más, es mucho más limpio y creo que la indexación será mejor, aunque mi proyecto pasará a ser un puntito en la marea que se aloja ahí.
He utilizado svnsync para pasar el repositorio íntegro de RedIris a GoogleCode, guardando el historial y demás.

Ya podemos discutir…

Hola de nuevo:
Despues de la avalancha de noticias de estos últimos días (véase esto, esto y esto y la caída del servidor que provocó el efecto menéame… en la OSLUCA me van a matar), está registrándose bastante gente en WikiUNIX (yuju!) y ya empieza a haber movimiento de conversaciones. Por tanto, se ha creado una zona para poder discutir/charlar/preguntar/lo que sea acerca del proyecto y todo lo que tenga que ver con él.
Digamos que es la zona del “chat” (tiene un nombre un tanto friki, /usr/share/chat, que le voy a hacer…). De momento hay cuatro secciones en las que se dividen las posibles discusiones:

  • Noticias: Anuncios sobre WikiUNIX y su comunidad.
  • Técnica: Discusión de asuntos técnicos y nuevas propuestas.
  • Ayuda: Petición de ayuda para colaborar en WikiUNIX.
  • Random: Lo que de toda la vida se ha llamado offtopic, asuntos que no tienen cabida en ninguna otra sección.

A ver qué tal va la cosa.
Un saludo a todos, unixeros
PD: Por cierto, casi no me ha dado tiempo de terminar de montar el chat y ya hay gente editando. ¡Mola!
PD2: Si cuando intento poner un enlace en WordPress pongo los dobles corchetes es porque esto me está afectando, ¿verdad?
Archivado bajo:WikiUnix Tagged: ayuda, chat, editando, WikiUnix

Recordatorio: !BarralibreCamp este jueves 10 de junio

En la Escuela de Informática (aka ETSIIT) de la Universidad de Granada. A partir de las 10 de la mañana.
En el wiki podéis ver las (des)conferencias que hay anunciadas y el horario de actividades. Tiene muy muy buena pinta, todavía podéis apuntaros en este formulario.

A la Hulka no le gustan las aceitunas

hardwareLa semana pasada escribí un post llorando porque iba a tener que implementar una primera aproximación a una biblioteca genérica para domótica si quería ver  a Kora funcionando en condiciones. Pues al final no va a ser pa tanto.
Resulta que ya hay una biblioteca que hace eso. Además, parece que funciona bien (si no, no la venderían ni la integrarían con varias soluciones hardware) y sobre todo, es libre: se distribuye con licencia AGPL. De hecho, he bajado el código fuente de su repositorio en SourceForge.
Se llama OpenRemote y su objetivo principal es ofrecer una interfaz estándar abierta para varios protocolos distintos para domótica, entre los cuales se incluye el (muy) cerrado KNX. Los autores tienen hasta programas de demostración para el iPhone y también han parcheado Calimero, que lleva muerta desde 2008.
Un problema menos

StatSVN bajo Ubuntu [SOLUCIONADO]


StatSVN es una herramienta genial que nos permite obtener estadísticas de uso, commits, usuarios, etc... de un sistema SVN.
Peeeero si seguimos los pasos que te vienen en su web bajo ubuntu (testeado bajo 9.10 y 10.4) obtendremos un precioso error como el que sigue:
Blog CUSL

Distribuir contenido