> In the later case, it could still be used internally, but get rid of it > for scripting purposes, where it adds a lot of noise and makes the > scripts > hard to maintain. > > > Ideally if a control does not require scripts then it should be mapped > via XML. This is the most efficient and low-latency way to process input > from a controller. Using script add to input processing latency since > the Javascript VM has to be invoked.
I understand that. What I mean, a script writer should not be concerned with XML editing. The same effect could be achieved by a JS function that installs the connection that the XML creates, yet maintaining the XML file as a layer that *overrides* whatever the script means. In Ableton Live (sorry for mentioning non-free software here) scripts can wire the connections between controls and MIDI signals (by wiring I mean establishing the connection without manually processing the signal, like the XML file does) yet the user can use "remote mappings" to override these. Yet the abstraction is transparent in both sides, the script writer does everything in the script, and the user does everything in the GUI, no intermediate XML file needed. > Also, for the performance argument, that convinces me that we really > need an API like this: > > engine.connectMidiToControl(status, midino, group, control, > options); > engine.connectControlToMidi(group, control, status, > midino,options); > > I disagree -- the XML mappings already have tons of options for how to > interpret messages and cover the common cases. In this case, the > connection should be made in the XML so that it is editable by the user > without editing the script. Maybe I am missing something, but what I expressed can not be achieved with the XML settings. I am going to try to put it in this way, a simple mapping that says... If SHIFT is pressed, KNOB 1 controls "master volume" else KNOB 1 controls "prehear volume" ...can not be expressed in the XML file. Instead, one should write such functionality in the script, but, in the script, one can just process directly (with the latency it involves) the KNOB 1 signal, one can not "route it" to control "master volume". In my ideal world, one could express such thing with an API resembling what I suggested in the previous email. That does not conflict with customization from GUI if the XML presets *override* what the script says, instead of the XML presets being the central dispatch point as they are know. > Well, it depends on what you imagine for generating the XML. Is this a > utility that allows for easy authoring of scripts that generates the > XML/JS once and then the XML/JS is distributed or is this something that > generates the XML every time? A few tools already exist for the former > (and that's mostly fine though if the author wants to re-integrate > changes made by other community members then they have to do it by hand) > but the latter is not OK since it is not editable by a user without > changing the script that generates the XML. It is like the former. The XML generated is as well-formatted (indented and editable), yet the generated JS is a bit complicated -- it is better to modify the CoffeeScript in that case. You mention there are similiar tools already existing: could you provide me some links to these? I would be very interested in researching them. While it is still an ongoing development, feel free to take a look at my current results here: http://sinusoid.es/mixco/ The API is somwehat documented (interleaving it with code following Literate Programming) and there are some unit tests (not many now, since I just started using TDD after an initial exploration phase). Cheers! JP ------------------------------------------------------------------------------ Introducing AppDynamics Lite, a free troubleshooting tool for Java/.NET Get 100% visibility into your production application - at no cost. Code-level diagnostics for performance bottlenecks with <2% overhead Download for free and get started troubleshooting in minutes. http://p.sf.net/sfu/appdyn_d2d_ap1 _______________________________________________ Get Mixxx, the #1 Free MP3 DJ Mixing software Today http://mixxx.org Mixxx-devel mailing list Mixxx-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mixxx-devel