Article 64SBD Introduction to DigiMixer

Introduction to DigiMixer

by
jonskeet
from Jon Skeet's coding blog on (#64SBD)

This is the first of what I expect to become a series of maybe a dozen blog posts about a hobby project I've started, called DigiMixer.

Back in January 2021 I posted about controlling an XR-16 using Open Sound Control, and then later using an X-Touch Mini to control the XR-16 using the same underlying code.

Since then, this has become part of my church A/V project, At Your Service, which I've also mentioned in blog posts about VISCA cameras and MAUI. At Your Service (AYS) has been used in production" (i.e. for real Sunday services) for about a year and a half now, and the code to control the XR-18 (which is an XR-16 plus USB audio interface, effectively) is absolutely crucial to this. Fortunately, it's proved pretty stable.

I don't currently expect AYS to be used in any church other than my local one (Tilehurst Methodist Church), but I'd like to at least work on making it a little more feasible for that to happen - particularly if I can have fun with more coding experience at the same time. To that end, I've started looking at other digital mixers that are similar to the XR-16. These are audio mixers which all look pretty similar: they have XLR sockets for inputs and outputs, possibly some headphone sockets and volume control for those, usually a USB connection so it can act as an audio interface, and a network connection to control it. Some have additional network connections for network-based audio expansions and the like, but I'm not (currently) interested in that aspect.

The part that makes these mixers different to regular" audio mixers is what they lack: faders, EQ adjusters, mute buttons etc. That's all done via network control. There are some mixers that can be controlled over the network as well as physically, but I haven't investigated those.

Each of these mixers from different manufacturers is controlled in a different way, and they all have different features and limitations. However, they have some core functionality in common, and that's probably enough commonality for use in a church service. The aim of the DigiMixer project is to create a lowest-common-denominator abstraction allowing an application such as AYS (and potentially multiple sample standalone DigiMixer applications) to control any of these mixers without having to know" about anything other than the abstraction.

There's nothing particularly new about the abstraction concept here, but this use case happens to tie into something I really want to do anyway, and I believe it will provide plenty of material for blog posts on applying abstraction in C#, in the real world. Most articles on abstraction are theoretical, for perfectly valid reasons - but that means they gloss over the kind of issue you face when trying to apply the ideas for real. I suspect most developers have encountered this sort of thing, but I don't have any deadlines for DigiMixer, and I can share everything without worrying about confidential material etc.

This first post is nothing but background material, partly as I'm waiting for one mixer to arrive, and some more information about others. The rest of this post is just a list of the mixers I either have access to, have on order, or which I'd like to get to work if possible. If you know of any others (particularly budget-friendly ones with good documentation!), please leave a comment.

Behringer X-Air series (XR-12, XR-16, XR-18, X-32)

XR18_P0BI8_Left_XL.png

This is where I started, and the mixer series I know best. We use an XR-18 at church and I have one in my shed as my main mixer". It's controlled via Open Sound Control - with a few customizations. There's a reasonable amount of documentation, albeit scattered across the web and mostly aimed at the (higher end) X-32. The Unofficial X32/M32 OSC Protocol document by PatrickGilles Maillot is probably the most helpful.

SoundCraft Ui series

Ui24R-hero-11_original.jpg

The SoundCraft Ui series (Ui12, Ui16, Ui24R) is a set of mixers I initially considered back in 2020/2021 when doing research. Big hat tip to Tom Der from SoundCraft, who sent me documentation for the protocol that Ui mixers use for control. (With an explicit this isn't supported" note, which is entirely reasonable.) I recently found a more recent version of that documentation on a Crestron Programmers Group (which I joined purely to get access to the doc). In other words, the documentation does exist and is somewhat public, but it's not as easily accessible as the OSC documentation.

I now have a Ui24R which I'm enjoying playing with. I'll be blogging more about the protocol later.

Allen and Heath Qu series

Qu-SB-3Quarter-Right-1024x683.jpg

The Qu series is a range of digital mixers, most of which have physical control surfaces. I have a Qu-Sb on order, but I'm not expecting it to arrive for a while. (They're back-ordered everywhere, basically.)

These mixers can be controlled by RTP-MIDI - effectively, a MIDI connection over the network. Allen and Heath provide what looks to be pretty comprehensive documentation - although as I haven't started implementing it yet, it's hard to say that it's truly accurate and comprehensive just now. (I'm pretty hopeful though.) I've already used MIDI quite a bit for other projects, and I'm hoping I'll be able to use that abstraction (either with an existing RTP-MIDI driver or cobbling together just the bits I need myself).

RCF M-18

8f76ba79-f88a-3d64-bda0-6c6c61f60ca5

The M-18 is unique in this set, as all the sockets are on the back rather than the front. That makes it less attractive for rack-mounting, unless you can rack mount it backwards (which would then be fine in terms of audio cables, but annoying for power). One thing it very much has in its favour is price though - it's the cheapest of any of the mixers in this post.

It isn't well-documented in terms of control protocol, but there's a project on GitHub which reliably informs me that it implements OSC (like the X-Air series does). That could be very interesting in terms of seeing how much I'd need to change my OSC code; implementing a protocol with only one peer to test against is always a risky business.

PreSonus StudioLive Series III

presonus-studiolive_16r-front_big.jpg

There are three options in the StudioLive Series III R" range: 16R, 24R and 32R. (It looks like Series III mixers without the R" suffix, i.e. the non-rack-mounted ones, have been discontinued, but that the R range is still going.) The 16R is a mere 1U for racking, which is very appealing - with the downside that inputs are at the front and outputs are at the back. It also trades height for depth - at 305mm deep, it's deeper than the studio rack cabinet I have, and I suspect I'm not alone in that. As it's so short though, I'm sure I could find another space for it...

It uses the ucnet" protocol, which is proprietary to PreSonus and not documented... but there's a project on GitHub where the author has performed quite a lot of reverse engineering already and documented his findings. This would certainly be an interesting mixer to include, although it's pricy.

Mackie DL Series

2048990-00_DL16S_Web.png

The Mackie DL16S and its 32-input cousins the DL32S and DL32R are all rack-mountable mixers, and the DL32R also features Dante audio networking which I'd love to dabble with some time.

Unfortunately, as far as I can tell there's no documentation for the Master Fader Control app which is used to control the mixer... which means I'd be stuck reverse-engineering from scratch. While that can be fun, it's something I really don't have the time for. I'm not saying I'd object if I found one going for a song on ebay, but I really can't justify buying one with only a small likelihood of getting anywhere with it. So for the moment at least, the Mackie DL series is unlikely to make it into my shed. (That's probably a good thing really; arguably one really can have too many mixers.)

External Content
Source RSS or Atom Feed
Feed Location http://codeblog.jonskeet.uk/feed/
Feed Title Jon Skeet's coding blog
Feed Link https://codeblog.jonskeet.uk/
Reply 0 comments