I’ve acquired a small and inexpensive MIDI input device, the M-Vave SMC-Mixer and am in the process of setting it up for darktable. Several questions have come up:
I can assign the knobs (Control Change 16-23), but they are in reverse. How can I change the polarity (turn direction)?
The knobs work fine, but only over a part of the slider range. They seem to peter out asymptotically. For example, the exposure goes to +0.560EV, but not more.
How can I assign the sliders (Pitch Blend 1-8)? They seem to be ignored my darktable
Great! I’ve noticed that one and wondered whether it could be recommended as an alternative to the x-touch mini. Hopefully you’ll find out if it can be made to work smoothly and provide your feedback.
There are many different midi devices that all work slightly differently, with different features, different levels of configurability and different default settings. I’ve only played with a few of them physically, so for others there is some guesswork and experimentation involved.
Have you tried working your way through the instructions on dtdocs/content/special-topics/midi-device-support.md at master · darktable-org/dtdocs? It can be quite technical and maybe the instructions aren’t always clear, so if you’re willing to explain where you get stuck, maybe you’ll be able to help improve the documentation. If there are specific steps required to get your device working, please keep track of them and then submit them as suggested additions to that page. You can do this either as a PR to the doc or by submitting a github issue with the additional information. Feel free to @ me so I can help review.
I did look at the page, but without understanding everything.
I found that the M-Vave shows up twice:
opened midi device 'SINCO SMC-Mixer-Private' via 'ALSA' as midi1
opened midi device 'SINCO SMC-Mixer-Master' via 'ALSA' as midi2
Adding “SINCO SMC-Mixer-Master:65:99;-SINCO SMC-Mixer-Private;-” seems to improve the was the encoders work. But, despite the ‘65’ I seem to have to calibrate the encoders every time I start darktable.
Running with -d input shows the midi events darktable sees. It looks like the sliders of the M-Vave are not seen at all by darktable. But on a midi-monitor I can see them. Darktable seems to filter these type of events.
I can also see the buttons, but seem to be unable to assign them to anything. If I go to the shortcut definition screen and click to define a button, I get the reaction like darktable got the event, but does not assign it to the action I wanted.
For now, the encoders sort of work, but with switched polarity (up goes down, down goes up). Sliders and buttons don’t work at all.
Otherwise I quite like the device. It is compact and has a fair amount of analog inputs (buttons and sliders). I just have to get it to be understood by darktable.
Just tried this with my akai mini (I think). It’s really fun as I can map all sorts of presets to buttons and some functions to knobs (like exposure). It’s really a very fast way of working but I found the knobs sometimes to be too insensitive when trying to make small changes. What can I do - having no understanding of MIDI at all.
Is 65 the value that is shown when you do the calibration step at the beginning (the 5 very slow down moves)? Maybe try 5 slow moves in the opposite direction (if your encoders are reversed).
Not filter; ignore. It only processes CC and NOTE events. Many midi devices allow you to define what messages are sent. It looks like you could use the midisuite tool from here AppDownLoad-企业官网 (windows only). You may need to experiment.
What messages do you get exactly (as a toast on the screen and on the command line)
I figured it out, and the SMC_mixer is pretty usable. But there is some preparation involved.
The SMC-Mixer has two modes of operation: DAW mode and CC mode. In DAW mode, it sends a hard-coded mix of CC, pitchbend, and note signals. This mode is very limited for darktable. In CC mode it sends CC signals; this is great.
The SMC-Mixer has a configuration utility called MidiSuite. This utility allows you to change what code each button sends. Unfortunately the utility is Windows only and does not work on Linux, even with wine.
The SMC-Mixer defaults to DAW mode on power-up. You cannot change this setting by using the MidiSuite tool. But if you use the key combination on the device, it changes to CC mode, and this change is persistent!
The SMC-Mixer in CC mode assigns the same midi code to multiple keys. You should change this using the MidiSuite utility and assign unique codes to each key and slider. The change is persistent!
At last, the SMC miser shows up twice on midi. You need to filter the device in “order or exclude midi devices” in the darktable settings. I use “SINCO SMC-Mixer-Private:1:65,-SINCO SMC-Mixer-Master,-”. The darktable documentation is wrong on this; the example in the doc shows the use of a semicolon when a color is required.
With this configuration, you can assign knobs, sliders, and buttons to UI items in darktable. The knobs and sliders require a speed setting for most parameters.
The buttons work sort of. The problem is that every button sends an ‘on’ and an ‘off’ signal. For example, for focus peeking this works fine; the effect is on for as long as the button is pressed. But I was unable to make the ‘toggle’ function work. There is such a setting, but it is simply ignored.
For some reason the default config for CC mode sets up all buttons as up/down sliders. They all need to be reconfigured to send notes instead. The config in the attached zip does this. Load it to the device using MidiSuite.
The lights behind the buttons can be switched on/off by darktable, but their numbering seems to be hardcoded (at least in firmware version 12) and doesn’t change when you change the Notes assigned to each button. So the Notes need to be made to conform to the hardcoded light numbers, which have the rows starting with 24, ,0 ,8, 16. Dono why. The LED code needs to be set to something else than 255 in MidiSuite. 1 works.
The 11 buttons in the bottom row do work, but only a few of them have lights that respond to midi notes (hardcoded in the 90-95 range). I have mapped them immediately following the other buttons instead.
The knobs and sliders cannot start from #0 because then the lights respond to their return signal. The attached config has them starting at 50.
Since the sliders can only be absolute, the knobs also need to be configured as absolute (from 0…127). So the settings in darktable/misc should be SMC-Mixer:1:32
Bluetooth works, but the return signal is very congested (lights toggle after 10 secs) which messes with the rotor positioning and therefore makes the sliders jumpy. Not recommended unless someone can solve the lag issue.
I’m not sure what the lights below the knobs are supposed to do and whether one can reach them from midi. smc-mixer-config.zip (966 Bytes)
I thought that page only gave information about supported devices? “Supporting” a device suggests something more than just some info about how to set it up.
E.g. if for this device the buttons always send a pair of signals, the support code could perhaps swallow the second signal, turning the buttons into toggles.
EDIT: To be clear “some info about how to set it up.” is exactly what is required to “support” most of these devices. They are highly configurable, which means there are many ways they could be set up (out of the box or through user intervention) in a way that is suboptimal for use by dt. What’s more, there is no way for dt to detect how they are (mis)configured. So even if workarounds were implemented to still make them work somewhat with each possible incorrect setting, the user would need to know how to determine which of these workarounds need to be activated.
There are some devices (mostly behringer) that have additional features that require separate “support” in the midi module. The whole point of a standard like midi is that this should not normally be the case.
Obviously some physical features, like sliders instead of limitless rotors, can never be made to work perfectly (unless they are motorized). If some device that otherwise looks like it should work fine somehow misses the configurability to do so, it would be nice to also have a section in the documentation of devices that completely fail. So that people have a kind of shopping list and there’s no wasteful duplication in effort (and spend!) to learn those lessons over and over. But devices that mostly work don’t belong there.
In my earlier post I have described the steps that need to be taken (mostly; uploading a config file) to make this particular device work correctly. No workarounds needed. It would really be appreciated if the user could verify these steps and submit a short writeup that is suitable for others to follow to the documentation. What I have written may not be that, but I’m here to answer any remaining questions.