Thanks for taking up this project! Reading your proposal on the wiki
page, the way you intend to integrate into Mixx's ControllerManager and
Controller classes makes more sense now.
The big question I am wondering about is the process of creating the
mappings from Ctlra events to Mixxx's state. Your idea to use TCC is
interesting and I think it's no problem for a proof-of-concept, but I am
doubtful it would be a good way to integrate Ctrla support into
applications for several reasons:
1. Is it possible for a controller mapping to crash the application?
That should not happen under any circumstance.
2. If a user wanted to replace a precompiled mapping that came with
Mixxx with one they made or got online, what would that process go like?
Would the user need to install TCC? Would we have to include TCC in Mixxx?
3. The programming language. It is a lot easier to find someone who
knows JavaScript, or at least kinda knows JavaScript enough to get by
for a small project, than it is to find someone who knows C. For people
with minimal or no prior programming experience, higher level languages
are much easier to learn.
4. Mixxx, and other applications, already have systems for supporting
MIDI controllers. Like Mixxx, some of these applications already have
their own scripting environments. Maintaining code and documentation for
separate ways for mappings to interact with the application would be a
burden for the application developers. For controller mapping
developers, their experience would be totally different depending on
whether they were mapping a MIDI controller or a Ctlra supported
controller. This would be a barrier to sharing knowledge and code
between people mapping MIDI controllers and Ctlra supported controllers.
5. TCC is unmaintained. The last release was 4 years ago. If we found
issues with it, it would probably be upon us to fix them. I for one
would much rather spend my time working on Mixxx than a C compiler.
So, I think it would make more sense to expose Ctlra to Mixxx's existing
JavaScript environment for controller mapping. There would only need to
be two capabilities added for this to work:
1. Scripts would be able to register JavaScript callback functions that
would be called when particular Ctlra events are passed to Mixxx.
2. Scripts would need to have a way to send output messages to Ctlra.
There should be a way to freeze/unfreeze the sending of output messages
so many outputs could be updated simultaneously in a single HID packet.
I have written a proposal for how to do this with MIDI:
https://mixxx.org/wiki/doku.php/registering_midi_input_handlers_from_javascript
It would be great if we could create JS APIs that are almost identical
for MIDI and Ctlra.
On 07/06/2017 04:57 PM, Harry van Haaren wrote:
Hi All,
First of all - this is my first post to the Mixxx-devel list, so a brief
intro is in order;
I'm Harry van Haaren, developer of the OpenAV audio software, bit of a
music/tech/linux head :)
I've recently been working on improving controller support in Linux
audio land, in particular
what I call "modern USB HID" controller devices (think DJ controllers
like Akai/NI/Abletons range).
I've developed the Ctlra library as OpenAV, which provides access to
these hardware devices
on Linux. The library allows hotplug and various other "advanced"
features like accessing
screens on devices.
I'd like to integrate Ctlra into Mixxx - to provide access to hardware
currently not available
to Linux users, and also to provide hotplug support to those
controllers. I've created a blueprint
on Launchpad[1], and written an introduction on Ctlra and how I propose
to integrate it in Mixxx[2].
Finally, there is a documentation page on what Ctlra itself achieves
here[3], and the source is here[4].
If you have an interest in hotplug of controllers, controller support or
hardware on Linux,
do have a read of the wiki page and others, and I'd appreciate your
input on the ideas!
Thanks for all your efforts on Mixxx so far, onwards and upwards!
-Harry of OpenAV
[1] https://blueprints.launchpad.net/mixxx/+spec/ctlra-controller-support
[2] https://www.mixxx.org/wiki/doku.php/ctlra_support
[3] http://openavproductions.com/doc/ctlra.html
[4] https://github.com/openAVproductions/openAV-ctlra
--
http://www.openavproductions.com
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
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
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
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