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

Reply via email to