Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

PeterMeier3435

macrumors newbie
Original poster
Dec 26, 2021
10
1
Hi there,

First off - I'm not a developer, so bare with me ;)

Also hoping this is the right forum for this - mods, feel free to move accordingly.

I use Controllermate, a software that controls keyboard/mouse/MIDI inputs and translates them into all kinds of mouse/keyboard/MIDI outputs. It is a vital part of my professional workflow (music production / mixing) and I'm heavily relying on it.

Up until now, I was on a cheesegrater Mac Pro running Mojave and I am testing the waters so I can upgrade to Apple Silicon.

Unfortunately, the developer has stopped communicating and stopped updating the app, so the app didn't make the jump from kexts to driverkit / system extensions that are necessary for Apple silicon.

There's many people using this software, especially in the creative pro scene (video post, music production, but also gaming), so there's people who make money with it and who rely on this, but they are mainly running intel Macs or Hackintoshes. The number of Apple silicon Macs is only gonna go up from here, so it's gonna be of interest for may people in the mid or long run.

My question is:
How complicated is it to translate the driver extension into system extensions / driverkit? For an experienced developer, how many hours are we talking?

This is the app:

Highly appreciate any input or direction where to potentially find skilled developers for this kind of stuff.

??????
 

joevt

Contributor
Jun 21, 2012
6,880
4,175
There are technical reasons why development on ControllerMate stopped after Mojave. I suppose whatever those issues were could have been worked around with some kernel patching (like what Lilu/WhateverGreen does). It's still possible to use kexts in Monterey for Intel Macs. I haven't tried any kext development for M1 Macs yet.

I still have ControllerMate installed and running in Monterey on my MacPro3,1. There are some features that don't work though. And some bugs like the wrong control being highlighted (press A and it says I is being pressed).
The ControllerMate.kext is loaded but it's plugins (CMUSBDevices.kext, CMUSBKeyboard.kext, CMUSBPointer.kext) are not.

I don't think you're asking for someone to make ControllerMate work. You want something to take its place?
 

PeterMeier3435

macrumors newbie
Original poster
Dec 26, 2021
10
1
Hey joevt (Joe?) - I saw your name popped up in another CM conversation - always good to meet other CM users! ??

I simply want this to work - at almost any cost. I'd be more than happy to pay for an update.

In case Ken has stopped working on this entirely --- which is in itself hard to tell, cause his Twitter shows he has applied for driverkit at least a while ago, but also, nobody every got a response directly from him regarding the CM --- I'd even find a and pay a developer to get this to work. Maybe through a GoFundMe cause I assume other people might wanna chip in as well to accelarate that process. I of course don't know if he's willing to give up the source code for this or again, if even he's secretly working on this.

Again, not a developer myself, so I have no idea how hard this is to realize or how much time it would take.

I'm also not really looking for another software, I have 15.000+ building blocks in my setup, so moving all that to another program would take forever, and most likely it's impossible to replicate all the functions.

Maybe we can make this a concerted effort to get him to get this going and make it worth his while financially (if that's reason for the hold-up) or at least get a status update out of him.
 

joevt

Contributor
Jun 21, 2012
6,880
4,175
I think it would take months of reverse engineering to make ControllerMate work. It would not be a fun project.

What might be more interesting is reverse engineering the file format that stores the building blocks, convert it into scripts that can be edited by the user and interpreted by some new code.

Then create new kexts that can act as joystick/keyboard/mouse/other HID device.

Then create patch code that can intercept inputs from built-in HID devices. Make sure it has the ability to block the input or pass it along. One issue I had with ControllerMate is that it would pass along a mouse scroll up/down that I was using for a different purpose. So ControllerMate would use the mouse scroll up/down for my purpose but it would also cause a scroll event to be sent to the current app/window.
 

PeterMeier3435

macrumors newbie
Original poster
Dec 26, 2021
10
1
Hey and happy new year!

Your approach sounds interesting and makes a lot of sense - but I don't have the skills to turn this into reality. It would also be helpful in the long run, when the time comes and Apple removes Rosetta and CM wouldn't run at all in newer OS.

I was mainly thinking about 'just' getting the drivers/kexts reverse engineered and updated via DriverKit to make this work, don't know if that's possible (certifications / debugging etc.)?
 

reckonr

macrumors newbie
Oct 18, 2011
4
0

PeterMeier3435

macrumors newbie
Original poster
Dec 26, 2021
10
1
DriverKit is not too hard to use. There are some sample projects here -> https://developer.apple.com/documentation/driverkit/driverkit_sample_code. You most likely want this one -> https://developer.apple.com/documen...etween_a_driverkit_extension_and_a_client_app

Maybe you could also use `CGEventTapCreate` to do some stuff.

> I have 15.000+ building blocks in my setup

Do you have some examples of what kinds of things you are doing? Maybe you don't need all the power of CM.
Hey thanks! would I even be able to sign the driver / get a certificate (with Apple tightening system security in general)?

Some examples: I'm running 2 x BCR 2000 32-knob MIDI controllers, they have different pages, I'm using 4-5 of them. I'm translating the outputs to different virtual MIDI devices, so f.e. in Pro Tools, I can emulate having 3 different virtual 'M-Audio Keyboard' configurations, so I have up to 24 knobs for Plug-In control simultaneously.Since you have to arm them for different pages, I use one button that sends a cascade of MIDI signals to line them up when I get to a new plug-in, which involves a bunch of building blocks with small delays to not overload PT etc.

Not even a EUCON S-series does that properly. Also I have custom Plug-In maps that I wouldn't be able to create in EUCON since they are static.

I'm also using a X-touch 8-fader controller. MIDI is translated through CM, cause I'm using some keyboard combinations to trigger different MIDI messages that feed into the X-touch (flip faders, selecting sends, the control surface f.e. only has buttons to select the first 3 instead of the full 5 - duh) and this is the only way to get that done.

Another example: I have an Ableton Launchpad mini that I use for Pro Tools shortcuts (mainly those that are awkward on the keyboard or those that need 2 hands). I have 8 pages set up, so for example one for regular workflow shortcuts (track resize, shifting through track views, one f.e. for vocal comping, one sends small CC increments for fine mixing by 0.2db) in PT. Those 8 pages all have different coloring in the Launchpad and change depending on which page is selected (CM is sending MIDI to color them on the Launchpad), cause I could not memorize where I programmed every single thing, but it helps with orientation, this would be gone with a different program or take forever to replicate. I'm also using Divvy (I'm using an so I can move Plug-In windows around to different corners with just one button.

There's of course more, but you get the gist ;)

I'm aware that some of MIDI translating could be donee with bome Replicating all the MIDI programming / translating would already take forever, turn into a huge list and become a huuuuge mess.

Replicating shortcuts with X-keys or Keyboard Maestro seems to be an option, but I'd rather keep everything as is cause I've build visual and muscle memory over 5 years with this stuff. I'd rather pay somebody to get this done than wasting weeks to replicate this setup.
 

jdb8167

macrumors 601
Nov 17, 2008
4,820
4,542
Hey thanks! would I even be able to sign the driver / get a certificate (with Apple tightening system security in general)?

Some examples: I'm running 2 x BCR 2000 32-knob MIDI controllers, they have different pages, I'm using 4-5 of them. I'm translating the outputs to different virtual MIDI devices, so f.e. in Pro Tools, I can emulate having 3 different virtual 'M-Audio Keyboard' configurations, so I have up to 24 knobs for Plug-In control simultaneously.Since you have to arm them for different pages, I use one button that sends a cascade of MIDI signals to line them up when I get to a new plug-in, which involves a bunch of building blocks with small delays to not overload PT etc.

Not even a EUCON S-series does that properly. Also I have custom Plug-In maps that I wouldn't be able to create in EUCON since they are static.

I'm also using a X-touch 8-fader controller. MIDI is translated through CM, cause I'm using some keyboard combinations to trigger different MIDI messages that feed into the X-touch (flip faders, selecting sends, the control surface f.e. only has buttons to select the first 3 instead of the full 5 - duh) and this is the only way to get that done.

Another example: I have an Ableton Launchpad mini that I use for Pro Tools shortcuts (mainly those that are awkward on the keyboard or those that need 2 hands). I have 8 pages set up, so for example one for regular workflow shortcuts (track resize, shifting through track views, one f.e. for vocal comping, one sends small CC increments for fine mixing by 0.2db) in PT. Those 8 pages all have different coloring in the Launchpad and change depending on which page is selected (CM is sending MIDI to color them on the Launchpad), cause I could not memorize where I programmed every single thing, but it helps with orientation, this would be gone with a different program or take forever to replicate. I'm also using Divvy (I'm using an so I can move Plug-In windows around to different corners with just one button.

There's of course more, but you get the gist ;)

I'm aware that some of MIDI translating could be donee with bome Replicating all the MIDI programming / translating would already take forever, turn into a huge list and become a huuuuge mess.

Replicating shortcuts with X-keys or Keyboard Maestro seems to be an option, but I'd rather keep everything as is cause I've build visual and muscle memory over 5 years with this stuff. I'd rather pay somebody to get this done than wasting weeks to replicate this setup.
If you could get in touch with the owner of the software, he might be interested in either taking on a partner or selling the software. At that point a GoFundMe type campaign might work to get the software updated. But without cooperation from the owner, it isn't likely you'll get anywhere. I looked on his GitHub and there isn't much there so it doesn't look like he has readily available libraries to read the files produced. I'm surprised that there isn't more information since the software looks very sophisticated and seems very useful for anyone with a midi/recording studio.
 
  • Like
Reactions: PeterMeier3435

PeterMeier3435

macrumors newbie
Original poster
Dec 26, 2021
10
1
If you could get in touch with the owner of the software, he might be interested in either taking in a partner or selling the software. At that point a GoFundMe type campaign might work to get the software updated. But without cooperation from the owner, it isn't likely you'll get anywhere. I looked on his GitHub and there isn't much there so it doesn't look like he has readily available libraries to read the files produced. I'm surprised that there isn't more information since the software looks very sophisticated and seems very useful for anyone with a midi/recording studio.
Yeah I've been in touch with other power users and the developer hasn't replied to ANYONE for years. Verdict seems to be to either rev engineer / hack the drivers or create some workaround. Crowdfunding seems to be an option, but without even getting through to the dev, this also a dead-end. I've started reaching out to some the people he interacted with on Twitter somewhat recently to maybe get through to him this way, but no dice yet.

Here are the 2 main problems - the driver not loading has 2 implications:

1. The keyboard / mouse output building blocks don't work (since they are low-level functions requiring said driver / kext). That is something I could probably even live with, cause MIDI actually DOES work (through virtual MIDI outputs, which seem to be more on a user level - again, not a dev myself).

2. The bigger problem is that the license credentials seem to be only loading after the driver. So when the driver loading fails, the software works in trial mode, which limits the number of output building blocks to 10 (and I have several hundred). So if I (or somebody else) could create a dummy driver that pleases the main app so the reg would actually load, that would make this at least somewhat usable, although that's still a compromise. I copied the registration info from the .plist file from my MacPro (Mojave, CM is working fine) to the .plist file on the M1, but that didn't do it either.
 
Last edited:
  • Like
Reactions: jdb8167
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.