Antes de nada comentar el amable ofrecimiento de shaker08 para crear unos loops y samples para distribuir con Psychosynth y que servirán de paso para probar el sampler, que programaré a lo largo de semana. Pasaos por su MySpace para escuchar un poco de buen minimal techno
Por otro lado, a pesar de que los cambios de temperatura me tienen medio enfermo y que me he tirado un finde un poco sabático, rsta semana he escrito dos funcionalidades importantes del programa.
La primera hace el programa más vistoso pero también más útil. Se trata de mostrar en tiempo real la señal que pasa a través de una conexión. Esto nos permite tener una idea más fiel de qué esta pasando en el programa. Por lo pronto, como en general las señales de audio son mucho más rápidas que las de control, de las señales de audio mostramos los últimos 0.05 segundos y de las señales de control 1 segundo, aunque lo suyo sería hacerlo configurable. Aún así, estoy pensando que para las señales de audio, al ser muy rápidas, puede que sea conveniente implementar un detector de frecuencias para hacer que el marco temporal mostrado sea múltiplo del periodo de la onda, con lo que normalmente obtendríamos una mejor visualización.
Esto implica también que se ha añadido un mecanismo genérico a la biblioteca para observar las señales que se trasmiten desde el código cliente, lo que en el futuro podría permitirnos crear dectores de beats para controlar efectos de luces y cuantas sutilezas se nos ocurran.
La otra funcionalidad que se ha implementado es menos vistosa pero es una de las quejas que más he recibido por parte de gente que se dedica a la música electrónica. Se trata de que al cambiar las conexiones entre los objetos, si la señal que se enviaba por la conexión no se había estabilizado, se escuchaba un leve pero molesto click. Esto se debe a que al pasar directamente de un valor arbitrario a cero, estamos generando inconscientemente un pulso, que es lo que escuchamos.
Los sintetetizadores modulares por software normalmente no tienen que enfrentarse a este problema, ya que las conexiones no se cambian “en caliente”. Pero en nuestro caso es uno de los propósitos principales la construcción de los patch de síntesis en vivo, haciendo la manipulación de los objetos y sus conexiones en vivo como parte fundamental de la actuación. La solución que he aportado consiste en aplicar una envolvente lineal muy rápida para que su efecto no sea apreciable -para producir envolventes apreciables ya haré objetos destinados a ello- sobre la conexión, de tal forma que cuando desconectamos realmente encolamos la petición de alterar la conexión y esperamos a que acabe el efecto de la envolvente para ejecutarlo realmente. Igualmente ahora al eliminar un objeto habrá que esperar a que acaben las envolventes de todas sus conexiones para eliminarlo.
La solución proporciona resultados muy buenos, aunque si alguien cree que puede mejorar la solución el tema está abierto a sugerencias y posibles mejoras.
