158 posts since 14 Apr, 2006
V2 is still in development so that's why it's not available yet. There are a couple of reasons why it takes so long. The number one factor is however time. I'm not in the position anymore to devote as much time as was the case when I wrote the first version. My daily job is simply too demanding these days.
(If you're not interested in how Improvisor works under the hood skip the rest of this post.)
The other reasons are more technical. As some of you probably know Zyklus Improvisor is made with Max (from the company Cycling '74) in combination with Java. Although programs made with Max are fully capable to work as a standalone midi/audio program, the complexity of Improvisor is pretty high. Without the help of some advanced program language (like Java in my case) Improvisor would simply be not possible.
So Max and Java (again in my case) have to work together to make it all work. This will lead to some overhead however because all the graphical stuff, timing and midi io are handled by Max, but the logical and data parts are done entirely in Java.
In the past whenever I introduced an object in Max, like a slider or a button, program code in Java was needed to keep track of changes in this Max objects state. Also a lot of objects represent some data value that must be stored and handled as well. This marriage between (Max) objects state and (Java) logic and data handling was not always successful and created spaghetti code all over the place. Debugging became a nightmare.
To overcome the above sketched scenario I've decided to work out a hierarchical object structure in Java that was tailor made for my needs, while on the same time I've created some specialized objects in Max that would reflect that Java object structure. That's also one of the the reasons for the "cell-like" picture a page earlier. All those cells have the same construction under the surface for easy communication between Max and Java. In a nutshell, the specialized Max objects have a virtual equivalent in Java. Whenever I change some value in Java, it will automatically update its graphical counterpart in Max, be it a value, some text or a color. Data handling is also bind into that same Java object. To work out this object structure was quite some work, but the advantages are substantial. Since Max and Java have now a tighter integration, changes and updates are easier to do.
All in all there's still much to do in the future before V2 will come but the foundation is much stronger and hopefully will pay off.