On Tue, Dec 04, 2007 at 01:23:38PM -0500, Albert Santoni wrote:
> >> For the Xponent I implemented (within mixxx) one particular state
> >> change, such that the wheels were only touch sensitive when a  
> >> particular
> >> button was toggled. For some other application I might have wanted
> >> that button to do something completely different, so it feels natural
> >> to me that all such interpretations of "state" are within the
> >> application, not the driver or even a userland intermediary.
> >>
> 
> This is a borderline hack to begin with since it's sitting in  
> EngineBuffer (no offense). :)

Where should it be? It's in there because all other decisions about
movement through the track (scratching or nudging) are in there.

> On top of that, it's a hack to support one specific device. 

I don't think so. I wrote it for the Xponent but there's absolutely
no reason it couldn't be used on any other device with touch-sensor
wheels like the VCI-100. Or even a device without touch-sensor wheels,
just define a button as the touch sensor and you can switch between
jog and scratch mode at will.

That said, the decision about whether a separate button is required
to switch that behaviour on or off is something that ought to be in
the midi.xml file. What's needed, I think, is a way to assign (from
that file) an initial value to a controlobject, and then it may or 
may not actually have a real controller associated with it. The
mixxx code could then default the touch sensitivity state to 1, 
so that any controller can enable scratch mode from any button of
their choice, while the Xponent midi.xml could set the initial
value of that control to 0 and associate the extra button with it.
Does that make sense?

> At least  
> with the Hercules stuff it's rolled off into it's own classes. 

I don't think that's entirely true!

> In your case, I'd implement the state machine in the driver (ie. emit  
> different MIDI CCs based on whatever group is selected on the device).  
> The rationale for this is as follows:
> 
> 1) The device's ability to send N times more CC messages will be  
> supported in ALL applications.

True. But it won't be configurable from *any* applications.

> 3) Once your code is in the kernel, it's no longer your responsibility  
> to maintain it, nor is it our (the Mixxx developers') responsibility.  
> Keeping the icky bits in kernel space makes our lives easier.

Who's responsibility is it? 
Just because a bit of code goes into the kernel doesn't mean it
automatically gets maintained for free. In my experience that
frequently *doesn't* happen because it gets harder to maintain.

If the translator is a self-contained library, it would be quite
small, easy to maintain, and willing volunteers should be easy
to find.

> Take a look at how the Herc and the M-Audio Torq Xponent do their LED  
> controls 

The latter doesn't, and won't ever until M-Audio drop the
requirement to sign an NDA to get hold of the details.
Btw the hardware is just "Xponent". "Torq" is the software.
Pretend you care ;)

Ben


-------------------------------------------------------------------------
SF.Net email is sponsored by: 
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
Mixxx-devel mailing list
Mixxx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mixxx-devel

Reply via email to