Virtual MIDI ports solve app-to-app routing on one machine. The moment you add a second machine — a laptop running visuals, an iPad running an instrument, a studio Mac that is not the one with the controller attached — you need a different mechanism. That mechanism is RTP-MIDI, the IP-network standard behind Apple's Network MIDI Session and the free rtpMIDI application on Windows. This guide is the setup, the failure modes (nearly all of them networking, not MIDI), and the hardening steps that make it survivable on a stage.
- macOS: Audio MIDI Setup → Window → Show MIDI Studio → double-click Network → create and enable a session.
- Windows: install rtpMIDI, create a session, tick Enabled, connect to the remote.
- iPad: joins Apple's network sessions natively — no app required.
- When it fails, it is a network problem: different subnets, client isolation, a VPN, or a firewall.
- Use Ethernet for shows. Wi-Fi works; Wi-Fi at a venue is a different proposition.
What is RTP-MIDI?
RTP-MIDI is the standard for carrying MIDI messages over an IP network, defined in RFC 6295, and it is what Apple's Network MIDI Session and the Windows rtpMIDI application both implement.
Practically, it wraps MIDI messages in network packets, handles session discovery so two machines can find each other, and includes recovery behaviour for packets that arrive late or not at all. Once a session is connected, the operating system presents it as an ordinary MIDI port: your DAW sees a device in its input list and does not care that the bytes crossed a switch on the way.
Because both implementations target the same standard, a Mac and a Windows machine interoperate directly. If you want the protocol-level comparison against USB — packet behaviour, where the trade-offs sit — that is covered separately in RTP-MIDI vs USB MIDI. This page is the build.
How do I send MIDI between two computers?
Create a network MIDI session on one machine, join it from the other, and then use the session exactly like any other MIDI port.
macOS — the built-in session
- Press
Command-Space, typeAudio MIDI Setup, press Return. - Choose Window → Show MIDI Studio (
Command-2). - Double-click the Network icon. The MIDI Network Setup panel opens.
- Under My Sessions, click + to create a session, then tick the checkbox beside it — creating is not enabling, and this is the step people miss.
- Set Who may connect to me to Anyone while testing. Tighten it later.
- The Directory below lists machines advertising sessions. Select the remote one and click Connect.
Windows — rtpMIDI
- Install rtpMIDI from tobias-erichsen.de. It uses the same
teVirtualMIDIdriver covered in our teVirtualMIDI guide, so the session also appears as a local MIDI port. - Open rtpMIDI. Under My Sessions, click + and tick Enabled.
- Find the remote machine in the directory list and click Connect.
- If discovery does not find it, click + under the directory and enter the remote IP address and port manually.
iPad and iPhone
iOS devices join Apple network sessions natively — connect from the Mac side in MIDI Network Setup and the iPad appears in the directory when it is awake, on the same network, and running an app that has MIDI active. There is nothing to install. The AUM and BeatMaker 3 setup guide covers the iPad end in detail.
Which network transport should I use?
Wired Ethernet for anything you perform with, Wi-Fi for convenience at the desk, and USB or Bluetooth when only one machine is involved.
| Transport | Setup | Spans machines | Reliability in a venue | Best for |
|---|---|---|---|---|
| USB | Plug in | No | Highest | Controller to the machine running the host |
| Virtual MIDI port | None to one-time | No — same machine only | Highest | App-to-app routing |
| RTP-MIDI over Ethernet | Session on both ends | Yes | High | Two computers in a live rig |
| RTP-MIDI over Wi-Fi | Session on both ends | Yes | Depends entirely on the network | Studio convenience, iPad |
| Bluetooth MIDI | Pair once | No | Moderate | Cable-free single-machine setups |
A rule that has saved a lot of shows: never introduce a network hop you do not need. If the controller can plug into the machine running the host, plug it in. Network MIDI earns its place when the architecture genuinely requires two machines — a dedicated visuals rig, an iPad instrument, a front-of-house control position.
Why can the two machines not see each other?
Almost always a network issue rather than a MIDI one — different subnets, client isolation on the access point, an active VPN, or a firewall blocking discovery traffic.
Check in this order:
- Same subnet? Compare addresses on both machines. One on a guest SSID and one on the main one will never discover each other.
- Client isolation. Most guest networks block device-to-device traffic by design. This is the number one cause at venues, hotels and co-working spaces.
- VPN running? A VPN on either machine can capture the traffic or change the apparent subnet. Disconnect it and retry.
- Firewall. Allow the MIDI application through on Windows; on macOS check that the firewall is not blocking incoming connections for the session.
- Session not enabled. The separate enable tick, on both ends.
- Manual connect. If discovery is blocked but routing works, add the remote by IP address directly — that bypasses the discovery layer entirely and is a good diagnostic in itself.
# Can the two machines reach each other at all?
ping 192.168.1.42
# What address am I on? (macOS / Linux)
ipconfig getifaddr en0
ip -4 addr show
# Linux — confirm the session port appears locally once connected
aconnect -l Does network MIDI work over Wi-Fi?
It works, but Wi-Fi introduces jitter and the occasional retransmission that wired Ethernet does not, so use Ethernet for anything performance-critical.
The distinction that matters is not average speed, it is consistency. A note that arrives slightly late every time is something you can play around; a note that is usually on time and occasionally is not is the thing that ruins takes and sets. Wired Ethernet removes an entire class of variability — contention with every other device on the band, access-point roaming, power-save wake-ups — for the price of a cable.
If Wi-Fi is unavoidable, at minimum: use 5 GHz, keep both machines on the same access point, disable Wi-Fi power saving, and avoid any network you do not control. For the general latency budget across the whole chain, see the latency tuning docs — the network hop is one stage among several and rarely the one worth optimising first.
How do I use the session once it is connected?
Treat it as an ordinary MIDI port — select it as the output in the sending application and enable it as an input in the receiving one.
- Sending side: in Universal Controller MIDI, Settings → MIDI output, choose the network session.
- Ableton Live: Preferences → Link, Tempo & MIDI → set Track ON for the session.
- Logic Pro: no enabling needed; it receives from all CoreMIDI sources.
- Reaper: Preferences → MIDI Devices → right-click → Enable input.
- Resolume / TouchDesigner: select the session in the MIDI device list exactly as you would a hardware interface.
The same input-versus-output trap applies here as with local ports: the receiving host reads, so the session belongs on its input side. If the session is connected and nothing arrives, start at the MIDI port troubleshooting guide rather than rebuilding the network.
Making it reliable enough for a gig
Remove every variable you can before the doors open, and keep a non-network fallback within reach.
- Wired, always. Ethernet between the two machines, on your own switch.
- Static addresses. No DHCP lease to renew mid-set, no address changing between soundcheck and showtime.
- Disable Wi-Fi entirely on both machines so nothing can decide to route over it.
- Test the reconnect. Unplug the cable, plug it back in, and time how long the session takes to recover. Know that number before you need it.
- Keep a USB fallback. A controller that can plug directly into the host machine is the backup plan that always works. The main-stage rig writeup covers full redundancy planning.
Frequently asked questions
How do I send MIDI between two computers?
Use a network MIDI session — macOS has one built into Audio MIDI Setup, and Windows machines join the same sessions using the free rtpMIDI application.
What is RTP-MIDI?
RTP-MIDI is the standard for carrying MIDI messages over an IP network, defined in RFC 6295, and it is what Apple's Network MIDI Session and the Windows rtpMIDI application both implement.
Can I send MIDI from a Mac to a Windows PC?
Yes — create a session in Audio MIDI Setup on the Mac, install rtpMIDI on the Windows machine, and connect one to the other from either side.
Does network MIDI work over Wi-Fi?
It works, but Wi-Fi introduces jitter and the occasional retransmission that wired Ethernet does not, so use Ethernet for anything performance-critical.
Why can the two machines not see each other?
Almost always a network issue rather than a MIDI one — different subnets, client isolation on the access point, an active VPN, or a firewall blocking the discovery traffic.
Is network MIDI the same as Bluetooth MIDI?
No, they are separate transports: network MIDI runs over IP on your LAN, while Bluetooth MIDI is a direct radio link with its own connection-interval behaviour.
Where to go from here
Network MIDI is the right answer when the job genuinely spans two machines, and the wrong answer when it does not. Get the session built, prove it with a probe note, then wire it the way you would wire a show: cabled, static, tested, with a fallback.
If the source at the far end is a game controller, download Universal Controller MIDI — it runs on macOS, Windows and Linux, and its output can target a network session exactly like a local port. The free tier covers one controller, one port and three saved presets; Pro at $89 one-time adds multi-port fan-out and OSC over UDP, which is often the better tool for cross-machine visual rigs. Next: routing one controller into two hosts.