Control Chain Library Documentation

Sorry if I’m wrong but… Is there any real documentation about the CClibrary anywhere ?
Checked on GH, Wikis, forum… But was only able to find some examples and few details.

Thanks :wink:

1 Like

details: cc-slave/src/control_chain.h at 4f34a185592d4ff93f010b59f4c8cfe0a2674f38 · moddevices/cc-slave · GitHub

1 Like

Control chain interface is still buggy, and hasn’t been fixed/revisited since the company had been hanging on the verge of bankruptcy, unfortunately, unless I’ve missed the news.
I’m still patiently waiting for it to be polished, but meanwhile I’ve built myself a midi controller which does 99% of the job. For me, if the Dwarf had a bi-directional midi integration (passing midi cc for the controls that have changed to an external controller, this has been a subject for several separate posts here), and maybe passed the assigned controls’names as sysx, I wouldn’t need a CC interface at all.


Thanks, this last point is exactly what I need. A way to display the control name and value to an external device.

Well, there’s been a feature request raised for this. Doesn’t seem like a priority for the guys at MOD though, they got sidetracked to the desktop app. I mean, it’s nice, but I’d fix the core product first, either by making control chain interface useable, or by making bi-directional midi exchange.
I’d go with the latter, since midi is an industry standard, and, frankly, cc protocol is very high maintenance programming.


I’ve seen it happen from the beginning. they put aside the FX4 for a long time and the expression pedal they abandoned. DuoX and Dwarf itself were projects they put at the front before finishing the previous ones. It’s a conceptual bias that the team must correct.

I built a Control Chain based controller a few years ago with 4 footswitches, two rotary encoders (with their own press-switches), two expression pedal inputs and a 4 line paged display that shows the assignments.
I successfully used it for a few gigs but haven’t really needed it for the last few years so it’s been gathering dust. I just plugged it in and it still works (albeit with some bugs that could well be my own bad C programming when paging through the display).

I started with an Arduino Uno but kept running out of memory so upgraded to a more powerful board.

My code is very messy (I’m a C# developer and my C skills are very poor, and it was a hack-together hobby project rather than a professional job) - had intended to tidy it up before sharing with the community, but I think it’s still on GitHub if you want to take a look to use any code examples as a jumping-off point. Let me know if you’re interested and I’ll have a look for the link!

At the time I had to make the case out of wood so it looks a bit crude, but now I have a large 3D printer I’ve been thinking about printing a nice case and resurrecting the project. I’d suppose I’d better check that the control chain firmware in the Dwarf is solid enough to make it worthwhile before I press ahead though…


That’s cool… I’m enthusiastic. Please share your development. I work with woodworking and I also own CNC Router Milling Machine, Laser Cutting, and 3d Printer. The programming and electronics part I don’t understand anything, but I have friends who help me in this part.

Yes please @ github link!

I have 3 shields and some ideas for what to do, but nothing concrete.
Anything to inspire and instigate is welcome :slight_smile:

1 Like

I’m kind of regretting offering since I’m so ashamed of my code!

I’ve just found it on github and am amazed to see that the last time I touched it was 6 years ago! How time flies! I was a real noob to Arduino and C (still am really) so it’s all just in one big lump of code, and not great code at that, but at least it does pretty much work.

As I started trying to enhance the code I think I started hitting memory/stability issues. My theory was that I didn’t understand how to properly handle (and dispose of) strings in C and this was causing memory leaks, so I’ve been meaning to go back and refactor that and see if it helped with the stability.

Also I used MS Visual Studio as the development environment so that created loads of extraneous project files that aren’t really needed, but it looks like all the action happens in IRModController.ino

Enough excuses - here’s the link - hopefully you can get to it OK and it will be of some use, or at least inspire you to write something better, or inspire me to sort it out properly!


If you’re wondering about the references to a relay, it was a brute force solution to a problem in reprogramming the Arduino. If I remember rightly the Uno only has one serial port, which is usually used for reprogramming the device, but this same port is also used for the ControlChain comm’s. So I added a relay which, when normally open would connect the UNO to the controlchain port but when you press a button on the back of the device it energises the relay and that connects the USB input instead. To reprogram it you just hold the button in while its being programmed go keep the connection with the computer going.

The arduino I upgraded to had multiple serial ports but I’d have had to hack things around to make the ControlChain hat use a different one, so I stuck with this workaround instead.