On Sat, Jul 8, 2017 at 9:00 PM, Be <b...@gmx.com> wrote:

> 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.
>

Thanks, and glad to hear it.


> 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.
>

Agreed that this *should* not happen. We could discuss details of exactly
how/what, but lets leave it aside for now, to address comments below.


> 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?
>

As mentioend later in this thread Daniel expressed concern over using TCC -
so let me answer that later.


> 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.
>

Surely anybody somewhat proficient in JS can figure out what this (link
below) does?? Programming is programming - logical thinking. I don't think
that the C code there is "harder" than achieving the same in JS. Keep in
mind we're not asking people to do pointer-magic here - its basic
arithmetic, and calling a functions.
https://github.com/openAVproductions/openAV-Ctlra/blob/master/examples/vegas_mode/z1.c#L45


> 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.
>

Yes, having other types of devices supported via Ctlra would mean a
different type of mapping. That's just the way it is - I don't see that as
a blocker - actually I see it as an opportunity to improve the UX of
mapping a controller.


> 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.
>

As noted above, we can take TCC off the table for Mixxx's use case.
Personally I still love it - and it has radically changed how I think about
programming in C - but perhaps its just not a good fit for Mixxx. I can
work with that.

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_handl
> ers_from_javascript
> It would be great if we could create JS APIs that are almost identical for
> MIDI and Ctlra.


I'm still not sold on the idea of wrapping all of Ctlra up in JS callbacks
and then exposing it to Mixxx. Its possible, but I fail to see why this
should be the holy-grail of how mappings should work. I should probably do
up a design-doc or video on how I think *eventually* the Ctlra / Mixxx UX
for mapping a controller would look: and if I can figure out the technical
parts, it will be pretty revolutionary in how it enables novice users to
create unique mappings. Punch line is to present the functionality
(multi-layered bindings) in a way that is easily consumed by "ordinary"
humans, and provide a doc + video explaining it. Give me a few weeks - some
POC Ctlra + Mixxx code first, then onwards to the exact mapping UX.

Thanks for your input again - good points raised. -Harry


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
>



-- 

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

Reply via email to