Parameter access via OSC

Bug #319386 reported by Simon Kalteis
22
This bug affects 5 people
Affects Status Importance Assigned to Milestone
Mixxx
Triaged
Wishlist
Unassigned

Bug Description

Hello!

I think Mixxx is a great app! But I think there is something missing that will make it even better...

It would be great to have access to all controllers via OSC (http://en.wikipedia.org/wiki/OpenSound_Control). This would allow integration with other software and even remote controlling over networks.

Specifically I am thinking about using pd (PureData) to translate sensor input from any imaginable hardware device to OSC and then feeding the data into Mixxx. Compared to MIDI it would allow for much higher controller resolution.

Revision history for this message
Nick (kousu) wrote :

Seconded. This has been in the back of my mind for a while. I don't think it's mentioned on the wiki anywhere, but maybe I missed it. If it's not we should spec it out (but before we can do this the controller code needs overhauling).

Revision history for this message
RJ Skerry-Ryan (rryan) wrote :

Marking wishlist -- OSC has been proposed before but we have way too little manpower to even approach this in the near term.

Changed in mixxx:
importance: Undecided → Wishlist
Changed in mixxx:
status: New → Triaged
Revision history for this message
Sean M. Pappalardo (pegasus-renegadetech) wrote :

We looked into this a bit and OSC doesn't have any standard messaging format. We'd need to create a class structure similar to the MIDI one that includes an OSCDevice class (that really doesn't do much except passing OSC data to/from the OS) that each supported device would sub-class inside a script (using QtScript's C++ interactions) to implement _all_ functionality. (I.e. scripting for OSC devices would be a requirement due to the lack of standard messaging.)

This sounds like it would be pretty self-contained so is a good candidate for a newer contributor.

Revision history for this message
Sean M. Pappalardo (pegasus-renegadetech) wrote :

I just came across some information that explains a standard for MIDI-over-OSC:
http://www.symbolicsound.com/cgi-bin/bin/view/Learn/BidirectionalMIDIStreamsOverOSC
http://opensoundcontrol.org/spec-1_0

An interested party could pretty easily write a MIDIDeviceOSC class so we could at least support those without too much effort. Again, self-contained and there's plenty to work from with the existing MIDIDevice and MIDIDeviceHSS1394 classes.

Revision history for this message
bredfern (brianwredfern) wrote :

Mixxx and Control would be a great match with OSC support, if this hasn't been tackled yet I would like to take a whack at it.

Revision history for this message
Sean M. Pappalardo (pegasus-renegadetech) wrote :

I'm working on the controllerAbstraction branch that wil allow other non-MIDI back-ends to be used, like OSC. If you want to work on it now, check out that branch and basically just copy the HID classes but change them to OSC, then implement the back-end in OSCDevice. Since the branch is still in active development, APIs might change, but probably not too much at this point.

Revision history for this message
Sean M. Pappalardo (pegasus-renegadetech) wrote :

Just an update: Mixxx 1.11.0 released with HID controller support so the API will be stable now. Feel free to copy the HID classes, rename them and replace the implementation details for OSC-specific ones.

Revision history for this message
RJ Skerry-Ryan (rryan) wrote :

The beginnings are already done here:
https://github.com/rryan/mixxx/tree/osc

Anyone interested should feel free to take this over.

Revision history for this message
Alexandre Quessy (alexandre-quessy) wrote :

Hi everyone,
Ryan: I have been thinking about implementing this feature in Mixxx for a little while. Here are a glimpse of my skills:
* OSC: advanced
* C++: advanced
* Qt: beginner/intermediate
* Scons: beginner/intermediate
* OS X: intermediate
* Linux: advanced
* Windows: beginner
* Mixxx's source code architecture: total newbie
* General packaging: advanced

So, that means I would probably need some walkthrough with someone who knows Mixxx's source code and its build system better than me. Also, I might need some help to make sure it builds on OS X and Windows. I am aalex on IRC.

As I see in https://github.com/rryan/mixxx/blob/osc/src/controllers/osc/osccontroller.h, that means that the next steps are to include the liblo.h headers and use them. I have some C++ wrapper for liblo's C API here: https://github.com/mapmapteam/mapmap/blob/develop/OscReceiver.h - though there are new liblo_cpp.h headers available nowadays: http://liblo.sourceforge.net/examples/cpp_example.cpp.html - so we should rather use that.

I think the controller approach is good at first, but then we might later add as well the possibility to subscribe to Mixxx's events, so that other application could listen to its events and act accordingly. That's for another feature request, though.

Next step: I should spend an hour or two discussing with Ryan about what work I should do, and how I can test it. Does this make sense?

Thank you!

Revision history for this message
Daniel Schürmann (daschuer) wrote :
Revision history for this message
David Nadasi (macrophone) wrote :

Hi everyone,
OSC support would be great for me!
My use case :
In dance workshops, before my DJ set I lead a "warm-up" exercice, it's better for me to be with the people on the floor rather in the DJ booth. I want to start some music during the exercice, then go to my booth after 4 or 5 tracks and continue the DJ set seamlessly.
It could be a great feature for a lot of dance teachers.

Revision history for this message
Swiftb0y (swiftb0y) wrote :

Mixxx now uses GitHub for bug tracking. This bug has been migrated to:
https://github.com/mixxxdj/mixxx/issues/5082

lock status: Metadata changes locked and limited to project staff
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.