Guide

From zero to your first note.

Installation, connecting devices, virtual MIDI ports and Ableton Live. Solutions to the most common problems at the end.

Installation

  1. Download the app for your system and install it on the computer with the MIDI ports, usually the one running your DAW.
  2. Start Omnithru (Start menu on Windows, Applications on macOS): it runs in the background and opens the home page in your default browser at http://localhost:443. If that isn't Chrome or Edge, copy the address into one of them.
  3. The first time, Windows or macOS asks you to confirm, because the app is not signed yet: see Security warnings.
  4. From the home page open Web Thru Box and allow access to MIDI devices.
Omnithru uses HTTPS because browsers and phones only allow MIDI and the gyroscope over secure connections. Traffic stays on your network.

Security warnings

Omnithru is made by an independent developer: the installers are not yet signed with a paid certificate, and the HTTPS certificate is created by Omnithru itself on your computer. That's why a few warnings appear. They are expected, and you only see most of them once.

WhereWhat you see and what to do
Windows, first startWindows protected your PC (SmartScreen): choose More info → Run anyway.
Windows, networkThe installer lets phones and tablets connect only on private networks. If they can't connect, open Settings → Network & internet → your Wi-Fi (or the phone's hotspot) and choose Private network.
macOS, first startApple could not verify "Omnithru": press Done, then open System Settings → Privacy & Security and choose Open Anyway. If macOS asks whether Omnithru may accept incoming connections, choose Allow.
Phones and tabletsYour connection is not private (Chrome) or This connection is not private (Safari): choose Advanced → Proceed or Show details → visit this website. Once per device, and again if the computer joins a new network.
The computer itselfNo warning: there Omnithru opens at http://localhost:443, which browsers treat as secure.
The phone warning appears because the certificate was made by Omnithru for your computer, not by a public authority. The connection is still encrypted and stays on your network. The certificate cannot be used to sign anything else.

Turning Omnithru off

Omnithru has no window: it runs in the background. To shut it down, press ⏻ on the home page; the button only appears on the computer running Omnithru. Starting Omnithru again while it is already running simply opens the home page.

Connecting devices

  1. Connect your phone or tablet to the same Wi-Fi as the computer.
  2. On Omnithru's home page on the computer, press the session button (usually called default): a QR code and a link appear, with the computer's network address.
  3. Scan the QR code with your phone's camera, or copy the link and open it in the browser.
  4. Accept the certificate warning if it appears, and pick a controller from the home page.
  5. A row for the new controller appears in the receiver: assign it an OUT port.

Every device that joins through the QR code is part of the same session: same receiver, same controllers, same theme.

You can open several controllers on the same device, in different tabs, even two of the same kind: they stay separate.

Virtual MIDI ports

A virtual MIDI port is a "cable" inside your computer: what one program writes to a port's output, another program reads from its input. Omnithru's receiver gets the senders' messages (Keyboard, XY Pad, GyroBall, Clip Launcher…) and forwards them to these ports; the DAW reads them as if they were real instruments.

Three rules for every system

  1. Create and name your ports before opening the receiver. The browser reads the list of ports when it starts. Some systems don't pass on added or removed virtual ports right away, and on a Mac the browser doesn't update the name of a port it has already seen until it restarts (see macOS). If you add a port during a session, use Rescan MIDI in the receiver: the page reloads and the senders' tables are cleared, so ports need to be assigned again.
  2. One port per sender, named after the sender: Keyboard, XY Pad, GyroBall, Chord Wheel… That way you can tell which port is which in both the receiver and the DAW.
  3. Two ports must never echo each other. If the receiver and the DAW read and write the same port, messages bounce back and forth endlessly. The wiring below exists to prevent exactly that.

Send-only senders

Keyboard, XY Pad, GyroBall, Chord Wheel and the others send notes or controls to the DAW: one output is enough.

PortsReceiverDAW
loopMIDI or IAC
one port, e.g. Keyboard
sender output → Keyboardtrack MIDI input → Keyboard
Windows MIDI Services loopback
A/B pair
sender output → Atrack MIDI input → B

In Windows loopbacks the two halves are cross-wired: what goes out of A arrives on B (and vice versa), so the DAW listens to the other half from the receiver.

Clip Launcher: both directions

The Clip Launcher talks both ways: it sends your taps to the DAW and receives the LED state back. So it needs a path there and a path back.

loopMIDI (Windows) and IAC Driver (Mac): two ports. Create two ports, for example ClipA and ClipB, and cross-wire them.

If you swap the ports in the receiver, swap them in Ableton too. The rule is: one side's output is the other side's input.

Windows MIDI Services loopback: one port, two endpoints. When you create a port, Windows makes two endpoints by itself, A and B, each with an input and an output.

You can also swap the letters (B in the receiver, A in Ableton), as long as they are never the same. With the same letter on both sides, messages bounce back.

If the LEDs don't light up in Ableton, confirm the Clip Launcher's ports again in the receiver: Ableton then sends back the state of every pad.

Windows

  • Windows 11 with Windows MIDI Services (included from 25H2): create the loopbacks in the Windows MIDI Services settings. Nothing else is needed.
  • Windows 10 and Windows 11 versions without Windows MIDI Services: use loopMIDI. Create the ports, named after the senders, before opening the browser.

macOS

On a Mac, virtual ports are created with the IAC Driver, built into the system.

  1. Open Audio MIDI Setup and choose Window → Show MIDI Studio.
  2. Double-click IAC Driver and turn on Device is online.
  3. In the list of ports, add buses with + and give each one the name of a sender.
  4. Open the browser, then the receiver.
If you rename a bus or a port, Chrome doesn't notice: neither Rescan MIDI nor reloading the page updates the name, because the browser reads it once and keeps it while it stays open. Quit the browser completely (Cmd+Q, not just the window) and open it again. The port's identifier doesn't change, so routes and assignments stay valid. The same applies to other Chromium-based browsers (Edge, Brave…).

If something doesn't work

SymptomWhat to check
Messages bounce back or the DAW "goes crazy"The receiver and the DAW use the same port or the same letter: one side's output must be the other side's input.
A port you just created doesn't appearCreate it before opening the receiver, or press Rescan MIDI.
A name doesn't update (Mac)Quit the browser completely with Cmd+Q and open it again.
The Clip Launcher LEDs stay offConfirm the Clip Launcher's ports again in the receiver; check that the css_omnithru surface in Ableton uses the right ports (cross-wired, or the other letter).
The browser sees no ports at allUse Chrome or another Chromium-based browser and allow MIDI access when it asks.

Ableton Live and Clip Launcher

The Clip Launcher talks to Ableton through the css_omnithru remote script.

  1. Download the remote script for your version of Live.
  2. Copy the folder into MIDI Remote Scripts. On Windows: C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts. On macOS: right-click Ableton Live in Applications → Show Package Contents → Contents/App-Resources/MIDI Remote Scripts.
  3. Restart Live and open Settings → Link, Tempo & MIDI.
  4. In a free row choose Control Surface css_omnithru, Input Loopback B and Output Loopback B.
  5. In the receiver assign the Clip Launcher IN and OUT on Loopback A and confirm. The LEDs light up to match your set.

For the other controllers, enable Track and Remote on the input port in Ableton, then map parameters with MIDI Map Mode (Ctrl+M or Cmd+M).

Full screen

On tablets and phones a controller works better without the browser bars.

DeviceHow
Android and iPadPress the full screen button in the controller's bar. Changing page exits full screen: press it again.
iPhoneSafari and Chrome don't allow full screen for web pages: on iPhone, use the controllers in the browser.
Adding Omnithru to the iPhone Home Screen would give full screen, but that only works with a certificate the iPhone trusts. It will come with MIDI SERVER; for now the Home Screen app opens but does not connect.

Themes

Choose from six themes on the home page: Dark, Light, High contrast, Neon, Retro and Pastel. The theme applies to every connected device, so on stage every screen looks the same.

Troubleshooting

My phone doesn't connect

Check that it is on the same Wi-Fi as the computer and that the address starts with https://. Some guest networks isolate devices from each other: use the main network instead.

On Windows the network must be private: a phone hotspot is often set as public. See Security warnings. On macOS, if the firewall asks about Omnithru, choose Allow.

The receiver doesn't see my MIDI port

Create the port before opening the receiver, or press Rescan MIDI. If the port is virtual, check that the program creating it is running. If you renamed a port on a Mac, quit the browser completely (Cmd+Q). The receiver works in Chrome and Chromium-based browsers (Edge, Brave…).

Messages bounce back or notes repeat

It is almost always the wiring: receiver and DAW on the same loopback port. With the Windows loopback put the receiver on A and the DAW on B; with loopMIDI or IAC the output of one port must be the input of the other (ClipA/ClipB), as in the diagram.

The Clip Launcher pads don't light up

Check that the control surface in Ableton is css_omnithru with the right ports as in the diagram (Windows loopback: Input and Output on port B; loopMIDI or IAC: Input ClipB and Output ClipA), and that the Clip Launcher has both IN and OUT in the receiver. Confirm the ports again in the receiver: Ableton sends all the LEDs back.

The Clip Launcher says it is already active

Each session can have one Clip Launcher and one receiver. Close the tab where it is already open.

On a tablet, switching tabs disconnects the controller

Some Android tablets suspend background tabs. When you come back the controller reconnects and gets its port back by itself.

To avoid it: Settings → Battery → Background usage limits, turn off putting unused apps to sleep and add Chrome to the never-sleeping apps.

GyroBall doesn't move

On iPhone and iPad tap Allow when Safari asks for motion sensors. On Android check that auto-rotate isn't blocking the sensors and that the page is open with https://.

A note is stuck

Omnithru turns notes off when you close or hide a controller and when you disconnect a route. If it still happens, disable and re-enable the route or reload the controller.