Feature: Lazy sliders

NOTE: I’m not complaining! This is pure luxury…

Wow! I didn’t know I had such an unique device :smile:.
The Zoom R24 (and all of its siblings) are advertised as:


They only speak Mackie protocol. Ardour “generic midi” and the “Behringer BCF2000

Mackie Control” give access to the track sliders, nothing else. Not even the master slider. And even then still the “jump” behaviour of the sliders, with settings no feedback, not motorized, and smooth = 1.
I can add additional bindings, but these seem to be tied to the actual track, instead of to the visible/active tracks. (E.g. slider1 should control the top track, slider2 the 2nd top track, even when tracks are shuffled/removed/created).

I guess there’s a lot to learn for me.

I own a Samson Graphite 49, which is definitely a non-touch, non-motorised, MCP-speaking device, so there are at least two such kinds of devices out in the world.

Not that the faders are that much use in MCP mode, but they’re better than nothing, and the transport controls are also nice to have.

The Samson has assignable encoders and can be programed. It just happens to have a preset that uses PB for faders like a MCP does. Same for some M-Audio keyboards. I guess that’s provided for some compatibilty, but it’s pretty much useless.

Yes, I agree the faders aren’t that much use in MCP mode, but the transport controls can come in handy occasionally. Definitely not worth changing anything in Ardour that’d compromise support for “proper” control surfaces for the sake of devices like this.

That seems to be intentional (otherwise you could just use the MCP surface).
I think you may have to copy+edit the file. In particular you’ll have to override the “motorized” setting:

Even if support will be added to MCP in Ardour to ignore mismatched surface faders, it won’t happen before Ardour6.x which is still some time away. – Meanwhile I’ve confirmed that catching up with mismatched values works correctly with 5.12 and a m-audio device, so if you want it now… mapping it using generic-midi is your best choice.

Hey sciurius. I don’t want to derail the thread but since you’re here can you share your opinion on Zoom r24 as audio interface? Does it play nice with Gnu/Linux? Are all of those 8 inputs available as separate tracks when it is in interface mode?
And are you happy with it in general as a device? Any nasty drawbacks?
Oh, and is there a time/size limit of samples you can use per track or per project?

Quick hint for using MCP mode… if you set up a device file for an 8 fader device but tell it that the device is only 7 faders, the 8th fader should work as master. The thing is, that using the mcp protocol without some sort of banking and scribble strip is not really any use as banking requires scribble strips to be useful and a controller with only 7 or 8 strips tends to get too small really easy. I have a small session with 3 vocals, bass, 3 guitars (but the lead uses 3 strips for editing) and a “scratch” as well as one buss for reverb. So already 12 tracks of which mixing 11 is useful. That is no drums with the extra 8 to 16 strips that should have.
Oh and yes you can add scribble strips to the MCP…
But that is linux only and requires jack at this time. Adding alsa is on the todo… if not very close to the top. If you are not using linux, I am pretty sure there are similar applets for mac and windows.

Thanks for all the information and suggestions! AFAICS there is very little to gain by using the R24 as a generic MIDI device instead of MCP, but there’s an awful lot to lose. So I’ll stick to MCP for the time being…

The opposite is the case. With a proper map, the functionality should be equal and you’ll gain the “lazy sliders” feature that you’ve asked for.

No doubt that may be true. However I do not have a proper map and I do not feel competent to create one.

Besides, even in generic MIDI, I cannot get the sliders to behave as desired.
I have cloned the bcf2000_mackie.map, set motorized to “no”, and in the preferences window set smoothing to 1. Still the ardour slider jumps immedeately to the R24 slider value when slightly moved.

From the Ardour manual:

Start Ardour in a terminal window, connect MIDI ports up, and in the Preferences window, enable “Trace Input” on the relevant MIDI port.

Call me stupid, but I can’t seem to find the “Trace Input”…

Maybe “Window->MIDI tracer” is what you’re looking for? There’s also a-MIDI Monitor lv2 plugin.

1 Like

Ah! Exactly! Thanks!

So I managed to trace all controls that the R24 can do, and created a dedicated midi map. (A couple of things I don’t know how to deal with yet.)

Loading this map with generic MIDI gives (almost) the same as using the Mackie control. But still no lazy sliders :worried:.

<?xml version="1.0" encoding="UTF-8"?>
<ArdourMIDIBindings version="1.0.0" name="Zoom R24 Mackie Control">

<!-- Important: In the protocol preferences, enable "feedback". -->

<DeviceInfo bank-size="8" motorised="no" threshold="2"/>

<!-- Bank switching -->
<Binding channel="1" note="46"   function="prev-bank"/>
<Binding channel="1" note="47"   function="next-bank"/>

<!-- Pitch benders (sliders).
 B1 is the first track of the current bank, etc..
<Binding channel="1"  pb="0"     uri="/route/gain B1"/>
<Binding channel="2"  pb="0"     uri="/route/gain B2"/>
<Binding channel="3"  pb="0"     uri="/route/gain B3"/>
<Binding channel="4"  pb="0"     uri="/route/gain B4"/>
<Binding channel="5"  pb="0"     uri="/route/gain B5"/>
<Binding channel="6"  pb="0"     uri="/route/gain B6"/>
<Binding channel="7"  pb="0"     uri="/route/gain B7"/>
<Binding channel="8"  pb="0"     uri="/route/gain B8"/>
<Binding channel="9"  pb="0"     uri="/route/gain Master"/>

<!-- Continous controls (Dial) -->
<Binding channel="1" enc-l="60"  uri="/route/pandirection S1"/>

<!-- Everything else are simple note-on/offs.
 E.g. 0x90 0x60 0x7F 0x90 0x60 0x00 -> note event 96.

<!-- Rew Ff Stop Play Rec -->
<Binding channel="1" note="91"   function="transport-start"/>
<Binding channel="1" note="92"   function="transport-end"/>
<!-- Unfortunately, there's no feedback for Stop/Play/Rec -->
<Binding channel="1" note="93"   function="transport-stop"/>
<Binding channel="1" note="94"   function="transport-roll"/>
<Binding channel="1" note="95"   function="toggle-rec-enable"/><!-- Not yet documented -->

<!-- Function keys -->
<!-- F1 (Auto Punch I/O) -->
<Binding channel="1" note="54"   action="Transport/TogglePunch"/>
<!-- F2 (A-B Repeat) -->
<Binding channel="1" note="55"   action="Transport/Loop"/>
<!-- F3 (Prev) -->
<Binding channel="1" note="56"   action="Common/jump-backward-to-mark"/>
<!-- F4 (Next) -->
<Binding channel="1" note="57"   action="Common/jump-forward-to-mark"/>
<!-- F5 (Mark/Clear) -->
<Binding channel="1" note="58"   action="Common/add-location-from-playhead"/>

<!-- Navigation (Up, Down, Left, Right) -->
<Binding channel="1" note="96"   action="Editor/select-prev-route"/>
<Binding channel="1" note="97"   action="Editor/select-next-route"/>
<Binding channel="1" note="98"   action="Common/nudge-playhead-backward"/>
<Binding channel="1" note="99"   action="Common/nudge-playhead-forward"/>

<!-- R24 selects a mode (Rec, Solo, Mute) for the Play/Rec/Mute buttons.
 Note that feedback="on" is required for the leds to respond.

<!-- Mode = Rec -->

<Binding channel="1"  note="0"   uri="/route/recenable B1"/>
<Binding channel="1"  note="1"   uri="/route/recenable B2"/>
<Binding channel="1"  note="2"   uri="/route/recenable B3"/>
<Binding channel="1"  note="3"   uri="/route/recenable B4"/>
<Binding channel="1"  note="4"   uri="/route/recenable B5"/>
<Binding channel="1"  note="5"   uri="/route/recenable B6"/>
<Binding channel="1"  note="6"   uri="/route/recenable B7"/>
<Binding channel="1"  note="7"   uri="/route/recenable B8"/>

<!-- Mode = Solo -->

<Binding channel="1"  note="8"   uri="/route/solo B1"/>
<Binding channel="1"  note="9"   uri="/route/solo B2"/>
<Binding channel="1"  note="10"  uri="/route/solo B3"/>
<Binding channel="1"  note="11"  uri="/route/solo B4"/>
<Binding channel="1"  note="12"  uri="/route/solo B5"/>
<Binding channel="1"  note="13"  uri="/route/solo B6"/>
<Binding channel="1"  note="14"  uri="/route/solo B7"/>
<Binding channel="1"  note="15"  uri="/route/solo B8"/>

<!-- Mode = Mute -->

<Binding channel="1"  note="16"  uri="/route/mute B1"/>
<Binding channel="1"  note="17"  uri="/route/mute B2"/>
<Binding channel="1"  note="18"  uri="/route/mute B3"/>
<Binding channel="1"  note="19"  uri="/route/mute B4"/>
<Binding channel="1"  note="20"  uri="/route/mute B5"/>
<Binding channel="1"  note="21"  uri="/route/mute B6"/>
<Binding channel="1"  note="22"  uri="/route/mute B7"/>
<Binding channel="1"  note="23"  uri="/route/mute B8"/>


Is it possible to implement it in Ardour?

Wow, thank you for the midi map! Now I’m even more determined to buy this thing. Sadly I don’t have a clue what is wrong with lazy sliders thing.

[sorry for double post. i don’t know how to merge it]

The map describes the R24 subset of Mackie. Only the subset is R24 specific, everything else is standard Mackie. I would have thought there was a complete map for Mackie already so I could just strip it to R24 functionality, but I have not been able to find such a map.

As it is now, the R24 map is pretty useless since it is just what the R24 already does when Ardour uses Mackie protocol. Of course, you can use it as a starting point when you want to change behaviour.

Do not forget to subscribe to the Zoom forum, there’s a lot of interesting R24 information there.

Mackie support doesn’t use a binding map, so there is no “complete map for Mackie”. It’s implemented via dedicated code.

Yes, but I assume it is possible to define complete Mackie support as a generic MIDI map. Or does the dedicated code do things that cannot be expressed in a midi map?
(Just asking)

Complete? no. That includes scribble-strip displays, level-meters, automation modes, mute/solo, selection, panners and panning modes… MCU is quite powerful

But for the case of the R24 which just has faders, I expect that you can (even with banking and dedicated master fader).

Fair enough. Thanks for the info.

Now if I could only get my sliders to be ‘lazy’… I’ve unset motorised, smooth is small (1, 2, …). Feedback is enabled.

Any ideas?