Hello mates! I just got a Nanokontrol2 last week and, since the current mappings do not match the way I play, I decided to write my own. And, ok, I hate XML and Javascript, and in my previous experience, writing Mixxx scripts is tedious, and error-prone. So I decided to write my own framework for writing mappings in CoffeeScript: no XML, no Javascript.
With the MixCo project I try to solve these problems, providing (still under development) these features: - Your script file is a single CoffeeScript file - The same file can be executed to generate the XML mapping and converted to JavaScript to be used as the script. - Generates direct-mappings to controls whenever possible, but this is transparent to the script writer. - Most of the API is very declarative. The current state of the project can be followed here: https://gitorious.org/mixco Note that it is very inmature yet, but I wanted to announce this early so you guys can give feedback soonish. Do you like the approach? What features would you like it to have? I am building the framework incrementally so far using my Nanokontrol2 mapping as driving force. Future features include declarative ways of specifying modes, and so on. After this, I plan to also rewrite my M-Audio Xponent mapping using the framework, with hoping to solve the several bugs it now has and update it to better use Mixxx 1.11 features. I might also write mappings for Ableton Push, which can be an interesting project, but lets not talk too much about that now... Ok, I will shut up now and come back when the project is more mature. Just to show what this is about, I put at the end of the email the current very basic Nanokontrol2 mapping. Cheers! JP # File: nanokontrol2.coffee script = require "../mixco/script" control = require "../mixco/control" script.register class NanoKontrol2 extends script.Script info: name: '[MixCo] Korg Nanokontrol 2' author: 'Juan Pedro Bolivar Puente <raskolni...@gnu.org>' description: """ Controller mapping for Korg Nanokontrol 2 that is targetted at being used as main interface for Mixxx. """ constructor: -> super @addDeck 0 @addDeck 1 addDeck: (i) -> group = "[Channel#{i+1}]" @add new control.Knob(0x10 + 4*i, group, "filterLow"), new control.Knob(0x11 + 4*i, group, "filterMid"), new control.Knob(0x12 + 4*i, group, "filterHigh"), new control.Knob(0x13 + 4*i, group, "pregain").soft(), new control.Slider(0x00 + i, group, "volume"), new control.LedButton(0x40 + i, group, "play"), new control.Slider(0x02 + i, group, "rate").soft() ------------------------------------------------------------------------------ Try New Relic Now & We'll Send You this Cool Shirt New Relic is the only SaaS-based application performance monitoring service that delivers powerful full stack analytics. Optimize and monitor your browser, app, & servers with just a few lines of code. Try New Relic and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_may _______________________________________________ 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