Overwitch, a JACK client for Overbridge devices, AKA Overbridge for Linux

There are a few things to consider here.

Firstly, there is the latency. We want to keep this to the minimum but perhaps the RPi needs to work with larger buffers than a state of the art PC. This depends on the architecture, chipset, USB driver, etc. more than the raw power. A RT kernel might help with this.

Then, there is the computing power. At the moment, the algorithm uses only the 4% of a CPU in my case. There are a few resampling algorithms to choose from so this could be parameterized if we need to use a faster one.

Finally, there are a few things to consider for the ARM architecture. We want to disable dummy cores (see the README.md), because this can cause problems in RT applications and I’m not sure it this would be possible. Besides, ARM uses something called big.LITTLE that is the name they use to indicate that not all cores are equal, which might cause trouble too. But this depends on the actual micro.

I can not go deeper than this.

But the best way to know is to try it out. I think it could work.

1 Like

Before I said this.

Overwitch will never work well unless the description of the device matches the data that is being sent and received. So it has to be a 4x4.

It is only true when sending data to the device because the device expects a certain amount of bytes for each USB transfer. If we are processing the received data, it is safe to ignore some of the tracks, which is what you’re doing here.

However, let’s create an issue in GitHub and see why you’re having that buffer overflow.

Interesting! So this would explain why things sound weird on the A4 (outputs: main 1/2 + 4 synth tracks = 6; not sure what the A4 does with those…) and the AR (outputs: main 1/2 + Main FX 1/2 + BD + CD + RS/CP + BT + LT + MT/HT + CH/OH + CY/CB = 12) as well.

I totally forgot how I configured this.

After installing Overwitch, in ordet to allow users to use the devices create a file called /etc/udev/rules.d/elektron.rules with the following content. This allows us to use any device from Elektron.

SUBSYSTEM=="usb", ATTRS{idVendor}=="1935", MODE="0666"
SUBSYSTEM=="usb_device", ATTRS{idVendor}=="1935", MODE="0666"

And do not forget to activate these rules.

$ sudo udevadm control --reload-rules && sudo udevadm trigger

I’ve just added this to the README.md file as well.

6 Likes

DG2 this is a sweet project!! Is there any chance of this or Elektroid! supporting management of presets/samples/kits/projects?

Overwitch is an attempt to send the Overbridge audio and MIDI data into JACK. It will never be as feature rich as the Electron software is.

But checkout https://www.elektronauts.com/t/elektroid-a-gnu-linux-sample-transfer-application-for-elektron-devices for device management. At the moment, there is only support for samples though.

3 Likes

Version 0.2 is not out yet because I had no reports of devices working other than the Digitakt and the Digitone. But, at the moment, the code already includes support for Analog Four MKII, Analog Rytm MKII and Analog Heat MKII.

Has anybody here run Overwitch successfully on any of these machines?

2 Likes

As I said Overwitch is only meant to support audio and MIDI but I plan to add support for projects to Elektroid the same way Transfer does.

BTW, Elektroid version 1.4 is almost ready and should be out in a couple of weeks. After this, I’ll start with project management.

3 Likes

I have managed to compile Overwitch using Manjaro; however, as I only have an Analog 4 Mk I, I cannot list or connect the device as yet. I’d be glad to try Overwitch out with the A4 Mk I though.

MKI are not supported yet, sorry.

The reason is that in these, the user needs to select the tracks they wants and I don’t know how this is done. But I have an idea so create an issue in GitHub if you want to give it a try.

However, this is not the case of Analog Heat MKI and I suspect it might work just now. In this case the device could be added as specified in the documentation.

1 Like

Although there is no official release yet because no other devices than Digitatk and Digitone have been reported to work, development has been going on.

These are the latest additions.

  • MIDI.
  • Multiple devices can be run at the same time by running a different process for each device.
  • Resampling quality is user selectable. 0 is the best quality and most computational expensive; 4 is otherwise.
  • Latency on the device side is configurable by selecting the amount of blocks transferred at once.
  • Udev configuration files (usb devices permissions and names) are installed automatically.
  • A little help is provided with the option -h.
$ overwitch -h
overwitch 0.2
Usage: overwitch [options]
Options:
  --use-device, -d value
  --resampling-quality, -q value
  --transfer-blocks, -b value
  --list-devices, -l
  --verbose, -v
  --help, -h

I hope you find this useful.

9 Likes

This is fecking glorious. Thank you @DG2! Running my bitwig output through my DT right now, and it’s brilliant! And recording 10 channels! So good. Now to go back through all my patterns and export them and arrange and publish them :blush:

There does seem to be a little bit of click now and then (xruns?), which may be because my laptop is a bit underpowered, not sure. I followed the chrt instructions, I guess I might be able to mess with those values a bit to minimse it?

Now I just need to figure out how to record the FX only… anyone know if that’s possible?

2 Likes

I’m gonna try this with an AK… not right now, cos I’m a Linux noob and I suspect it might take quite some time… but to clarify, it lets you use yr Elektron device as an audio interface?

I’m really happy it works for you. :slight_smile:

Regarding the possible xruns, check them in your instance of JACK running. However, here’s what I use. I have 0 xruns and latency under 5 ms.

  • RT Linux kernel (5.10).
  • No dummy cores and CPU governor in performance mode.
  • rtirq-init.
  • JACK configured with 128 frames and 3 periods and run with chrt -f -p 40.
  • Overwitch run with chrt -f -p 35 and overwitch -d Digitakt -b 8.
  • Ardour run with chrt -f -p 30.

This is not a very RT demanding configuration. Also, you could use --quality 4 to reduce the CPU usage even more. More info in the repository’s README.md.

2 Likes

It’s possible to not send the tracks output to the main output but keep the internal FX tracks (delay and reverb). You can find this on the audio routing page inside pattern menu (per pattern routing ) or inside the settings menu (global routing). These are on the pages 33 and 66 of the newest Digitakt manual.

But I’m not sure if I understood you well.

1 Like

I don’t know if Overbridge I devices will work with Overwitch but, if you want to give it a try, be sure to check out an issue about adding support to the A4 mk I. Post there or send me a PM in case of help. It’s not as difficult as it seems.

If possible, you would be able to record in your computer the 4 analog tracks and 2 inputs and play audio to the main AK output all thru USB.

1 Like

My Digitakt doesn’t show up in Overwitch:

$ lsusb | grep -i digitakt
Bus 001 Device 004: ID 1935:000d Elektron Music Machines Digitakt MIDI
$ jack_control status
— status
started
$ overwitch -l
$

What could I be doing wrong? I tried with the ALSA MIDI bridge both enabled and disabled.

EDIT: Never mind, there is something called Overbridge mode on the Digitakt itself! :smiley:

1 Like

Yeah, I’ve never mentioned this so it’s a good moment to say that Overbridge mode for the USB port must be activated on the devices before using Overwitch, or the Elektron’s Overbridge software itself.

@martibs, I haven’t got much feedback so I hope you don’t mind if I ask a couple of things. Did you manage to run Overwitch? Is it running nicely enough to be useful for you? Did you need any special configuration on your system? I’m just curious about this.

TIA.

2 Likes

I’ve only gotten around to do the most basic of testing so far:

  • Set up jack with the suggested buffer settings (128/3)
  • Run jack, Ardour and Overwitch with real time priority
  • Route the main outs from Digitakt to the system playback device

Which works, ie. I get the sound from the main out via jack to my speakers, nice and clean. I didn’t get around to routing it into Ardour yet.

This could definately be a game changer for me, as it would free up 2 stereo pairs (I’ve got a Digitone as well) of inputs on my 8 input channel audio interface, and make multitracking much easier. I would need to restructure my workflow though, such as switching from direct monitoring to monitoring through the DAW, so it could take some time until I’m able to provide more detailed feedback.

But a big thanks to you and everyone else who makes this possible!

4 Likes

This seems really neat. Two questions which might already have been answered, but I’m not really sure about the answers:

  1. Can you use two (or even more) devices at the same time?
  2. Is it possible to record the multitrack output somehow? dtdump hasn’t really been updated to support the whole suite of Overbridge II devices, and I’m not sure if they would work in conjunction anyway.

Basically, I have two devices (AR mkII and A4 mkII) hooked up to my Raspberry Pi and I would like to both output the sound to my speakers and be able to record files for later export to a different computer. Would this be feasible at all?