Skip to content

NicoG60/OscMackieControl

 
 

Repository files navigation

OscMackieControl

The missing utility that maps Mackie Control to OSC. It allows you to control any DAW with any OSC capable hardware.

Some badges
Version version
Build C/C++ CI
License license
Platform macOS
win10

⚠️ DEPRECATION WARNING ⚠️

As TouchOSC just release its second version, this software has become obsolete. Indeed, TouchOSC mk2 features more flexible control and a scripting area. These new features allowed me to implement the Mackie Control Protocol directly within TouchOSC.

You can find the project page here: TouchMCU

Roadmap for v2

The second version of the software is currently being developed. Here is a kinda roadmap of things to do and things that needs to be done.

✅ Phase 1: Better OSC

The previous software used osc-cpp-qt to read and write OSC messages. It turned out that library has a couple of flows and is not maintained. Since there does not seem to be an OSC implementation based on Qt, I'll do my own.

  • Basic OSC types (int32, float32, strings blobs)

  • Extended OSC types (color, midi, int64, float64, etc...)

  • OSC arrays (Spec'd out for the first iteration of that library as not needed by this software)

  • OSC Messages implementation

  • OSC Bundle implementation

  • OSC Interface to send and receive packets to and from the network

  • Tests

  • Write documentation

  • Release as an independent library

    The library is now available! Go check out QOsc

🔄 Phase 2: Better MIDI

The previous software relied on RtMidi to provide MIDI communication. The question is wether keeping it or moving to PortMidi which is also a good library. RtMidi is still maintained and the v4 has been release less than a yeah ago. PortMidi does not seem active anymore. I'll probably keep going with RtMidi.

  • Choose a library to use
  • Implement an interface on top of it to make it easily usable with Qt
  • Find a way to create virtual midi ports and avoid the use of a third party software This is almost done. CoreMidi accept the creation of virtual ports. I need to find my way to do the same on Windows. I'll probably ask permission to use Tobias Erichsen's virtualMIDI SDK
  • Test
  • Write documentation
  • Release as an independent library The library is now available! Go check out QMidi

Phase 3: Better feature set

Here is a randomly ordered list of features that is worth considering and implementing

  • Mapping editor, being able to change what Mackie Control bit is sent to what OSC address.
  • Mapping options, being able to choose different way of interpreting OSC information. For example TouchOSC heavily relies on numbers even for button press which could be represented as a boolean value. Another example is the LCD display emulation. In the TouchOSC layout, each god damn character is a single element with its own OSC address. you may want to change that to a single string label (even though it will probably not align correctly) or, as some other hardware does, a 6x2-character wide label per fader + 1 space character between each.
  • Mapping import/export
  • Overlay editor, let the user customise the labels on the touchOSC layout the same way Mackie Control Units have that kinda plastic overlay for different DAWs.
  • Provide an extended set of overlays.
  • Overlay import/export
  • Update the TouchOSC layout if needed
  • Provide an Open Stage Control layout

🔄 ​Phase 4: Better translator

The current translation component is a beast and doesn't feel right, nor it feels efficient. There is a lot of room here for better implementation and clever design that allow the above features to be easily integrated.

That's also the occasion to implement the few missing feature I've not been able to lift out the first time. (Assignment display for example)

Phase 5: Better Interface

We are in 2020, that'd be nice to have an interface that does not looks like a port of a 90's software. Random considerations:

  • Use QML?
  • Simpler workflow
  • Hide complexity
  • Provide sensible default values for non tech savvy
  • System tray icon, option to close the window
  • User feedback, show if information is sent, received, translated

Phase 6: Better documentation

  • Rewrite the documentation in a proper English.
  • Clarify the implementation chart
  • Get rid of that silly PDF thing, use markdown, pages, wiki, etc.

Downloading

You can head to the Release section to find the latest download links.

Building

The project is Qt based.

  • Qt 5.15.1
  • MSVC 2019 for Windows
  • Xcode 12 for macOS

There is submodules to check out

$ git submodule init && git submodule update

Then you can build the project

$ mkdir build && cd build
$ qmake .. && make

About

Utility bridge from Mackie Control to OSC

Resources

License

Code of conduct

Stars

Watchers

Forks

Contributors 2

  •  
  •