First of all lets comment the kind offer of shaker08, who is going to create loops and samples to distribute with Psychosynth and that will serve to test the sampler, which will be implemented next week. Take a look at his MySpace to listen to some good minimal techno :)
On the other hand, despite being almost ill because of the continous temperature oscillations and having spent a quite sabbatical weekend, this week two important features have been written.

Nuevas mejoras visuales del Psychosynth

The first one makes the program more visually attractive but also more useful. It now shows the signal going through a connection in real time. This lets us make a clearer idea of what is going on in the sound synthesis. By now, as usally audio signals are much faster than control signals, we show the las 0.05 seconds of the signal for audio, and a second for control signals, but it will be configurable in the future. I am considering that, as audio signals are quite fast, it may be convenient to implement a pitch detector to adjust the temporal frame displayed to a multiply of the wave period, so we’d get a better visualization normally.

This also implies that a generic mechanism to observe the audio signals from the client code have been added, which may permit the creation of beat detectors to control light effects or any other interesting visualization.

The other functionality is less eye-candy but it solves on the most recurrent complaints to the program that I have received from real music makers. When you changed a connection between two objects, if the signnal that was being sent was not stabilized, a small but annoying click would be heard. This is caused because you would move suddenly from an arbitrary value to zero, so we were unconsciously generating a pulse, which we hear.

Most software modular synthesizers do not have to fight this problem, because conexions are not changed on the fly. But in our case one of the main purposes is to build the synthesis patch in live, managing objects and connections in live as a fundamental part of the performance. My solution is to apply a very fast -so its effect is not noticeable, I will create specific evelope objects later- linear envelope on the signal, so we actually enqueue the connection change query and wait for the envelope to finish to really run it. Also now when deleting an object we have to wait for all its envelopes to finish before actually removing it.

This solution is performing quite well, but if someone thinks that he can give a better approach the topic is still open to suggestions and improvements.

Post a Comment

*
*