I am lacking of time by now, that's why I am getting late on my schedule, but I am really next to the first release, all I need is a Day or two off in order to finish everything, but my work has not been letting me many time lately.
mfrederickson wrote:Looks like you've done some excellent work so far - I am in the process of implementing a similar idea with a different cue visualization (using a custom OpenGL UI object in Max).
Before you are entirely ready to release the patch itself, it would be great to see your source, or to hear specifically what you've learned about optimizing the timing and efficiency JS M4L. What was the intuition that led you to get this sped up?
At first (this summer) the patch was quite simple, but not organized.
In order to get it expandable, easy to maintain, and to increase its performances, I have progressively completely rewritten everything.
Now, the whole plugin is based on the well known Model-View-Controller design pattern.
That means that :
- The Model is the Live Object Model. To access it, I use a very complex Max Patch which handles every access to the Live API, managing delay compensation, etc... I don't use the JS LiveAPI, because timing accuracy is easier to manage with a full Max patch.
- The controller is a quite big JS script (~1000 lines), which communicate with both the view and the model in order to get them synchronized. It handles the complexity thanks to the Object-oriented approach of JS. The plugin is optimized to reduce the calls to complex JS functions in order to improve performance.
- The view is simply a hierarchy of subpatchers containing Max & M4L UI elements (Labels, Knobs, Sliders, Buttons, CellBlocks etc...). Thanks to the use of MVC, the view is very versatile, and can be anything between a very simple UI for basic use (~6 buttons and 3 labels), or a highly complex UI (~50 info labels, 20 buttons and knobs). Everything relying on the exact same Model.
I am very excited about this project, and I really want to finish it soon because I would like to start using it in Mid-December.
Thank you for being patient, I think you won't be disappointed.