How to Use the IAC Driver on macOS
Last updated: March 2026
The IAC (Inter-Application Communication) Driver is a virtual MIDI bus built directly into macOS. It lets applications send MIDI data to each other without any physical MIDI hardware. Every DAW and MIDI app on Mac supports it — yet it is disabled by default and hidden away in Audio MIDI Setup. This guide explains what the IAC driver does, how to enable and configure it, how to use it with common DAWs, and when you might want a more capable alternative.
What is the IAC driver?
The IAC Driver creates virtual MIDI ports that appear to any app on your Mac as standard MIDI devices — indistinguishable from a connected hardware keyboard or synthesizer. When App A sends MIDI to IAC Bus 1, any other app with IAC Bus 1 as its MIDI input instantly receives those messages.
Common uses for the IAC driver:
- Sending MIDI from a hardware sequencer app to a software synthesizer in a different DAW
- Routing MIDI clock from one app to sync the tempo of another
- Connecting a step sequencer like an iOS app (via USB or network MIDI) to Ableton or Logic
- Sending MIDI from a controller app to a sound design tool running separately
- Forwarding MIDI between two DAWs open on the same Mac simultaneously
How to enable the IAC driver
The IAC Driver is included in macOS but disabled by default. Here is how to enable it:
Open Audio MIDI Setup
Find Audio MIDI Setup in Applications > Utilities and open it. This is macOS's built-in tool for managing audio and MIDI devices.
Open MIDI Studio
From the menu bar, go to Window > Show MIDI Studio. A window appears showing all connected MIDI devices, including the IAC Driver icon.
Open IAC Driver Properties
Double-click the IAC Driver icon. The IAC Driver Properties panel opens, showing a list of ports and the "Device is online" checkbox.
Enable the driver
Check the "Device is online" checkbox. The IAC Driver is now active. You will see one default port named "Bus 1" already listed.
Add and name ports
Click the + button below the Ports list to add more ports. Double-click any port name to rename it. Use descriptive names like "Sequencer Out" or "DAW to Synths" to keep your routing clear.
After enabling, restart any DAWs that were already open — most apps only scan for MIDI devices at launch and will not see the new IAC ports until restarted.
Setting up your DAW to use IAC
Ableton Live: Go to Preferences > MIDI. Find the IAC Driver ports in the MIDI Ports list. Enable "Track" in the Input column for ports you want to receive from, and "Track" in the Output column for ports you want to send to. In each MIDI track, set MIDI From or MIDI To to the appropriate IAC port.
Logic Pro: Logic detects IAC ports automatically. In the track header's MIDI In/Out selector, the IAC ports appear alongside hardware devices. Select the correct IAC port for each track.
GarageBand: GarageBand has limited MIDI routing options and does not expose IAC input selection in the same way. For more complex IAC routing in GarageBand, use Midilize as an intermediary.
Naming IAC ports clearly
Generic names like "Bus 1" and "Bus 2" quickly become confusing in complex setups. Use names that describe the routing purpose:
- "Keyboard → Ableton" for hardware controller routing
- "Logic → VSTHost" for cross-app instrument routing
- "MIDI Clock" for a clock-only sync bus
- "SysEx Bus" for device configuration messages
Clear naming saves time when troubleshooting and makes it obvious which port to select in any app.
Limitations of the IAC driver
The IAC driver is reliable and low-latency, but it has significant limitations for complex setups:
- No visual interface: you cannot see which apps are connected or what data is flowing
- No filtering: all MIDI data on a port reaches every subscriber — you cannot filter by channel or message type
- No transformation: no way to transpose, remap, or modify messages in transit
- No monitoring: you cannot see the actual messages flowing through the bus without a separate tool
- Local only: IAC does not work over a network — only within the same Mac session
Using Midilize alongside IAC
Midilize can monitor any IAC port to let you see what is flowing through it. In Midilize's Sources panel, enable any IAC port. Switch to Monitor Mode and messages flowing through that bus from any app will appear in the table in real time. This is invaluable when an app is not receiving the MIDI you expect — you can confirm whether messages are actually being sent.
You can also replace the IAC driver for specific routing tasks by using Midilize's built-in virtual ports combined with its processing tools. This adds filtering, transformation, and visualization to any routing path that IAC would normally handle without any visibility.
Troubleshooting IAC issues
IAC ports not appearing in DAW: Restart the DAW after enabling IAC. Check that "Device is online" is checked in IAC Driver Properties. Verify in Audio MIDI Setup that the ports are listed and active.
No MIDI arriving at destination: Use Midilize to monitor the IAC port and confirm that the sending app is actually sending data. If messages appear in Midilize but not in the destination app, the problem is the destination's MIDI input configuration.
MIDI feedback loop: If App A sends to an IAC port and also has that port as an input, its output feeds back to its own input, creating an infinite note loop. Break the loop by removing the IAC port from the app's MIDI input list, or use separate ports for sending and receiving.
Missing messages at high throughput: The IAC driver handles thousands of messages per second without issue. If messages go missing, suspect the sending app's MIDI output configuration rather than IAC itself.
Using IAC for MIDI clock distribution
A common use of the IAC driver is distributing MIDI clock from a master DAW to multiple slave applications. MIDI clock is a stream of timing pulses (24 per quarter note) that keeps sequencers and arpeggiators in sync with a tempo master.
To distribute MIDI clock through IAC:
- In the master DAW (e.g., Ableton Live), go to MIDI Preferences and enable Sync in the Output column for the IAC port
- In each receiving app, enable Sync in the Input column for the same IAC port
- Start the master DAW's transport — the slave apps follow its tempo in real time
Be careful not to create sync loops: if a receiving app also sends MIDI clock, and that clock is routed back through another IAC port to the master, timing instability results. Use a dedicated clock-only IAC port for sync to keep it separate from data ports.
To monitor clock messages flowing through an IAC port, enable that port in Midilize's Sources and switch to Monitor Mode. MIDI clock messages (status byte 0xF8) appear in the table. At 120 BPM, you should see 48 clock messages per second — a useful sanity check to confirm the clock is flowing before connecting other devices.
Advanced: creating multi-bus setups
For complex studio setups, a structured IAC bus layout prevents confusion and makes the routing easier to debug. A practical multi-bus setup might look like this:
- Bus 1 — Keyboard → DAW: sends MIDI from your hardware controller to Ableton or Logic
- Bus 2 — DAW → Synths: sends MIDI from your DAW to hardware synthesizers via a MIDI interface
- Bus 3 — MIDI Clock: clock-only bus for syncing external sequencers
- Bus 4 — App-to-App: reserved for ad-hoc routing between software tools
Each bus has a single, clearly defined purpose. When a signal is missing, you know exactly which bus to check. Add Midilize as a monitoring layer on any bus to see what is actually flowing through it in real time.
Note that IAC buses have no built-in access control — if Bus 1 is active, any app on your Mac can listen on it. For setups where you want filtering, processing, or channel-specific routing, replacing IAC with Midilize's virtual ports gives you full control over what each virtual port accepts and where messages go.
Frequently asked questions
How many IAC ports can I create on Mac?
macOS allows up to 16 virtual ports per IAC device. You can also create multiple IAC devices, each with their own set of ports. Most setups need only 2 to 4 ports total.
Does the IAC driver add latency?
IAC latency is minimal — typically under 1ms. It is not a perceptible source of MIDI latency. The main sources of MIDI latency are audio buffer size and USB round-trip time, not the IAC driver itself.
Do IAC ports disappear when I quit my DAW?
No. IAC ports exist at the macOS level and persist as long as IAC is enabled in Audio MIDI Setup, regardless of which apps are open. Any app can use them at any time.
What is the difference between the IAC driver and Midilize virtual ports?
Both create virtual MIDI ports that any app can use. IAC ports persist at the OS level and are always available. Midilize virtual ports disappear when Midilize is quit. IAC is better for always-available simple routing; Midilize ports are better when you want processing, filtering, and visual monitoring alongside the routing.