{"id":536,"date":"2026-06-17T20:51:07","date_gmt":"2026-06-17T20:51:07","guid":{"rendered":"https:\/\/www.mickeydesigns.com\/home\/?p=536"},"modified":"2026-06-18T03:44:56","modified_gmt":"2026-06-18T03:44:56","slug":"mymidi-bridge-help-troubleshooting-guide","status":"publish","type":"post","link":"https:\/\/www.mickeydesigns.com\/home\/mymidi-bridge-help-troubleshooting-guide\/","title":{"rendered":"myMIDI Bridge \u2014 Help &amp; Troubleshooting Guide"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">myMIDI Bridge \u2014 Help &amp; Troubleshooting Guide<\/h2>\n\n\n\n<!-- myMIDI Bridge \u2014 Help & Troubleshooting Guide -->\n<!-- Paste this into a Custom HTML block in WordPress -->\n\n<style>\n.mmb-guide { max-width: 800px; margin: 0 auto; font-size: 16px; line-height: 1.7; color: inherit; }\n.mmb-guide h2 { font-size: 1.4em; margin: 2em 0 0.5em; padding-bottom: 0.3em; border-bottom: 1px solid #e0e0e0; }\n.mmb-guide h3 { font-size: 1.1em; margin: 1.6em 0 0.4em; }\n.mmb-guide p { margin: 0 0 1em; }\n.mmb-guide ul, .mmb-guide ol { margin: 0 0 1em 1.5em; padding: 0; }\n.mmb-guide li { margin-bottom: 0.4em; }\n.mmb-guide code { font-family: monospace; font-size: 0.9em; background: #f4f4f4; padding: 2px 5px; border-radius: 3px; }\n.mmb-guide pre { background: #f4f4f4; border-left: 3px solid #ccc; padding: 1em; overflow-x: auto; border-radius: 3px; margin: 0 0 1em; }\n.mmb-guide pre code { background: none; padding: 0; }\n.mmb-guide table { width: 100%; border-collapse: collapse; margin: 0 0 1.5em; font-size: 0.95em; }\n.mmb-guide th { background: #f4f4f4; text-align: left; padding: 8px 12px; border: 1px solid #ddd; font-weight: 600; }\n.mmb-guide td { padding: 8px 12px; border: 1px solid #ddd; vertical-align: top; }\n.mmb-guide blockquote { border-left: 3px solid #ccc; margin: 1em 0; padding: 0.6em 1.2em; background: #fafafa; color: #555; border-radius: 0 3px 3px 0; }\n.mmb-guide blockquote p:last-child { margin: 0; }\n.mmb-guide a { color: inherit; }\n.mmb-guide strong { font-weight: 600; }\n<\/style>\n\n<div class=\"mmb-guide\">\n\n<p>myMIDI Bridge is a macOS utility that connects CoreMIDI to UDP. It exposes a pair of virtual MIDI ports on your Mac and forwards their traffic to and from the network, so any MIDI app can send and receive MIDI over a plain UDP connection.<\/p>\n\n<h2>1. How myMIDI Bridge Works<\/h2>\n\n<p>The app creates two virtual CoreMIDI endpoints that appear to every MIDI app on your Mac:<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th>Virtual Port<\/th>\n      <th>Type<\/th>\n      <th>What it does<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td><strong>MIDI\u2192UDP Bridge<\/strong><\/td>\n      <td>MIDI destination (input from a DAW&#8217;s perspective)<\/td>\n      <td>MIDI sent here is forwarded as UDP datagrams to a remote host.<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>UDP\u2192MIDI Bridge<\/strong><\/td>\n      <td>MIDI source (output from a DAW&#8217;s perspective)<\/td>\n      <td>UDP datagrams arriving on the listen port are emitted as MIDI.<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n<p><strong>Outgoing (MIDI \u2192 UDP):<\/strong> Your DAW or controller sends MIDI to <code>MIDI\u2192UDP Bridge<\/code>. Each MIDI message is packaged as one UDP datagram of raw MIDI 1.0 bytes and sent to the configured <strong>send host : send port<\/strong>.<\/p>\n\n<p><strong>Incoming (UDP \u2192 MIDI):<\/strong> The app listens on the configured <strong>listen port<\/strong>. Each incoming datagram is treated as raw MIDI bytes and emitted from <code>UDP\u2192MIDI Bridge<\/code>, where any subscribing MIDI app will receive it.<\/p>\n\n<p>The virtual ports exist as soon as the app launches, even before you press <strong>Start Bridge<\/strong> \u2014 the Start\/Stop button only controls the UDP transport.<\/p>\n\n<blockquote>\n  <p><strong>Wire format:<\/strong> myMIDI Bridge uses plain MIDI-over-UDP \u2014 one MIDI message per datagram, raw bytes, no headers. This is <strong>not<\/strong> RTP-MIDI. The peer at the other end must speak the same simple format.<\/p>\n<\/blockquote>\n\n<h2>2. Default Settings<\/h2>\n\n<table>\n  <thead>\n    <tr><th>Setting<\/th><th>Default<\/th><\/tr>\n  <\/thead>\n  <tbody>\n    <tr><td>Send host<\/td><td>The Mac&#8217;s primary IPv4 address, or <code>127.0.0.1<\/code> if no interface is available<\/td><\/tr>\n    <tr><td>Send port<\/td><td><code>51230<\/code><\/td><\/tr>\n    <tr><td>Listen port<\/td><td><code>51231<\/code><\/td><\/tr>\n    <tr><td>Virtual MIDI source name<\/td><td><code>UDP\u2192MIDI Bridge<\/code><\/td><\/tr>\n    <tr><td>Virtual MIDI destination name<\/td><td><code>MIDI\u2192UDP Bridge<\/code><\/td><\/tr>\n  <\/tbody>\n<\/table>\n\n<p>Settings are saved across launches. Use <strong>Restore Defaults<\/strong> in Settings to reset them.<\/p>\n\n<h2>3. Setting Things Up<\/h2>\n\n<h3>In myMIDI Bridge<\/h3>\n<ol>\n  <li>Launch the app. The virtual MIDI ports become available immediately.<\/li>\n  <li>Click the <strong>gear icon<\/strong> to open Settings.<\/li>\n  <li>Under <strong>UDP Send<\/strong>, enter the IP address and port of the device you want to send MIDI to.<\/li>\n  <li>Under <strong>UDP Listen<\/strong>, confirm the port the bridge should listen on for incoming datagrams. Tell the remote peer to send to your Mac&#8217;s IP at that port (the <strong>This Mac<\/strong> section of Settings shows your local IP addresses).<\/li>\n  <li>Click <strong>Apply<\/strong>.<\/li>\n  <li>Back on the main window, click <strong>Start Bridge<\/strong>. The status dot turns green and the status text reads <code>Running<\/code>.<\/li>\n<\/ol>\n\n<h3>In Your DAW or MIDI App<\/h3>\n<ul>\n  <li><strong>To send MIDI out over the network:<\/strong> select <strong>MIDI\u2192UDP Bridge<\/strong> as a MIDI output destination.<\/li>\n  <li><strong>To receive MIDI from the network:<\/strong> select <strong>UDP\u2192MIDI Bridge<\/strong> as a MIDI input source.<\/li>\n<\/ul>\n\n<p>If the ports don&#8217;t show up immediately in your DAW, rescan MIDI devices or restart the DAW \u2014 most DAWs only enumerate CoreMIDI endpoints at launch.<\/p>\n\n<h2>4. The Main Window At a Glance<\/h2>\n\n<ul>\n  <li><strong>Status dot \/ status text<\/strong> \u2014 green and &#8220;Running&#8221; when the UDP transport is active; gray and &#8220;Idle&#8221; or &#8220;Stopped&#8221; otherwise.<\/li>\n  <li><strong>MIDI \u2192 UDP tile<\/strong> \u2014 counts datagrams sent since the bridge was last started, and shows the current destination <code>host:port<\/code>.<\/li>\n  <li><strong>UDP \u2192 MIDI tile<\/strong> \u2014 counts datagrams received and emitted as MIDI, and shows the listen port.<\/li>\n  <li><strong>Start \/ Stop Bridge<\/strong> \u2014 toggles the UDP transport. The virtual MIDI ports remain in place either way.<\/li>\n  <li><strong>Clear Log<\/strong> \u2014 clears the activity log and resets the packet counters.<\/li>\n  <li><strong>Activity log<\/strong> \u2014 timestamped entries for listener\/sender state changes, errors, and per-packet MIDI notes.<\/li>\n  <li><strong>Toolbar<\/strong> \u2014 gear opens Settings; question mark opens the built-in help.<\/li>\n<\/ul>\n\n<h2>5. macOS Permissions<\/h2>\n\n<p>myMIDI Bridge is a sandboxed app. The first time you run it, macOS may show a dialog asking whether to allow incoming network connections. <strong>Click Allow.<\/strong><\/p>\n\n<p>If you accidentally clicked Deny, open <strong>System Settings \u2192 Network \u2192 Firewall \u2192 Options<\/strong> (or <strong>System Settings \u2192 Privacy &amp; Security \u2192 Firewall<\/strong>), find myMIDI Bridge in the list, and switch it to <strong>Allow incoming connections<\/strong>.<\/p>\n\n<p>If your Mac&#8217;s firewall is configured to block all incoming connections, you will need to add an exception for myMIDI Bridge or disable the blanket block, otherwise UDP \u2192 MIDI traffic will never reach the app.<\/p>\n\n<h2>6. Troubleshooting<\/h2>\n\n<h3>6.1 The virtual MIDI ports don&#8217;t appear in my DAW<\/h3>\n<ul>\n  <li>Make sure myMIDI Bridge is <strong>launched<\/strong>. The ports only exist while the app is running.<\/li>\n  <li>Most DAWs only scan CoreMIDI at launch. <strong>Restart your DAW<\/strong> after starting myMIDI Bridge, or use the DAW&#8217;s MIDI rescan\/refresh command.<\/li>\n  <li>Open <strong>Audio MIDI Setup<\/strong> (in <code>\/Applications\/Utilities<\/code>), choose <strong>Window \u2192 Show MIDI Studio<\/strong>, and confirm that <code>MIDI\u2192UDP Bridge<\/code> and <code>UDP\u2192MIDI Bridge<\/code> are present. If they are listed there but not in your DAW, it is a DAW-side enumeration issue.<\/li>\n  <li>If the activity log shows <code>MIDI setup failed<\/code> or <code>MIDI ports unavailable<\/code>, quit and relaunch the app. If that doesn&#8217;t help, log out and back in (or reboot) \u2014 CoreMIDI very occasionally gets into a wedged state.<\/li>\n<\/ul>\n\n<h3>6.2 Nothing arrives in my DAW (UDP \u2192 MIDI not working)<\/h3>\n<ol>\n  <li>Confirm the status dot is <strong>green<\/strong> and the status text reads <code>Running<\/code>.<\/li>\n  <li>Confirm your DAW is subscribed to <strong>UDP\u2192MIDI Bridge<\/strong> as an input.<\/li>\n  <li>Watch the <strong>UDP \u2192 MIDI<\/strong> packet counter while the remote peer sends. If it doesn&#8217;t increase, the datagrams aren&#8217;t reaching your Mac.<\/li>\n  <li>Verify the remote peer is sending to the <strong>right IP address<\/strong> \u2014 the <strong>This Mac<\/strong> section of Settings lists every local IPv4 address.<\/li>\n  <li>Verify the remote peer is sending to the <strong>right port<\/strong>. Default is <code>51231<\/code>.<\/li>\n  <li>Confirm the firewall isn&#8217;t blocking myMIDI Bridge (see Section 5).<\/li>\n  <li>If the counter is increasing but your DAW receives nothing, the bytes are most likely not valid MIDI 1.0 status messages \u2014 see Section 6.7.<\/li>\n<\/ol>\n\n<h3>6.3 Nothing goes out (MIDI \u2192 UDP not working)<\/h3>\n<ol>\n  <li>Confirm the status dot is <strong>green<\/strong>.<\/li>\n  <li>In your DAW, route the channel\/track output to <strong>MIDI\u2192UDP Bridge<\/strong>.<\/li>\n  <li>Watch the <strong>MIDI \u2192 UDP<\/strong> counter as you play. If it stays at zero, the DAW is not actually sending MIDI to the virtual destination \u2014 double-check the track&#8217;s MIDI output assignment and that the track is armed\/active.<\/li>\n  <li>If the counter is climbing but the remote device receives nothing:\n    <ul>\n      <li>Check that the <strong>Send host<\/strong> in Settings is the IP address of the remote device (not your own Mac&#8217;s IP, unless you really are sending to yourself).<\/li>\n      <li>Check that the <strong>Send port<\/strong> matches the port the remote device is listening on.<\/li>\n      <li>Make sure the remote device is on the same network and reachable. Try <code>ping &lt;host&gt;<\/code> from Terminal as a sanity check.<\/li>\n      <li>Check the remote device&#8217;s firewall \u2014 UDP datagrams are silently dropped if a firewall blocks the destination port.<\/li>\n    <\/ul>\n  <\/li>\n  <li>Look at the activity log for <code>UDP sender \u2192 host:port \u2014 failed<\/code> or <code>waiting:<\/code> lines.<\/li>\n<\/ol>\n\n<h3>6.4 &#8220;Failed to start UDP&#8221; \/ port already in use<\/h3>\n<p>This means another process is already bound to your listen port.<\/p>\n<ul>\n  <li>Open Settings and change the <strong>Listen port<\/strong> to a different number (anything 1024\u201365535 that isn&#8217;t already in use).<\/li>\n  <li>Or quit the process that already owns the port. You can identify it from Terminal with <code>sudo lsof -iUDP:51231<\/code> (replace with your port).<\/li>\n<\/ul>\n\n<h3>6.5 Settings don&#8217;t apply or seem to revert<\/h3>\n<ul>\n  <li>Make sure you clicked <strong>Apply<\/strong>, not <strong>Cancel<\/strong>. Apply is the highlighted default button.<\/li>\n  <li>Validation errors appear in red at the bottom of the Settings sheet. The send port, listen port, and host all have to be valid before Apply will save.<\/li>\n  <li>If the bridge was already running, Apply restarts the UDP transport with the new values \u2014 watch the activity log for the restart messages.<\/li>\n<\/ul>\n\n<h3>6.6 Packet counter increases but I hear no sound<\/h3>\n<p>This is a DAW \/ instrument routing problem, not a bridge problem. The bytes made the round-trip successfully.<\/p>\n<ul>\n  <li>Confirm an instrument or sampler is loaded on the receiving track.<\/li>\n  <li>Confirm the receiving track is record-enabled or monitoring, depending on your DAW.<\/li>\n  <li>Confirm MIDI channels match \u2014 myMIDI Bridge passes bytes through verbatim and does not alter channel information.<\/li>\n<\/ul>\n\n<h3>6.7 Garbled MIDI \/ stuck notes \/ weird messages<\/h3>\n<ul>\n  <li>Each UDP datagram must contain <strong>one complete MIDI 1.0 message<\/strong>, raw bytes, starting with a status byte (<code>0x80<\/code>\u2013<code>0xFF<\/code>). Splitting a single message across multiple datagrams or bundling several into one will not be parsed correctly.<\/li>\n  <li>If the activity log shows messages like <code>90 3C 7F<\/code> in plain hex instead of decoded names, the bytes don&#8217;t look like a recognized MIDI 1.0 message \u2014 check what the peer is sending.<\/li>\n  <li>myMIDI Bridge does not interoperate with <strong>RTP-MIDI<\/strong> (Apple&#8217;s Network MIDI \/ AppleMIDI). Use a peer that speaks the same raw MIDI-over-UDP format.<\/li>\n  <li>For SysEx: each datagram can carry one SysEx message up to the typical MIDI 1.0 packet size. Very long SysEx dumps may need to be chunked by the sender.<\/li>\n<\/ul>\n\n<h3>6.8 Bridge stops working after sleep \/ waking \/ Wi-Fi change<\/h3>\n<p>When the network configuration changes, the UDP connection can end up in a <code>waiting<\/code> or <code>failed<\/code> state.<\/p>\n<ul>\n  <li>The activity log will show this \u2014 look for lines starting with <code>UDP listener \u2014 failed<\/code> or <code>UDP sender \u2192 ... \u2014 waiting<\/code>.<\/li>\n  <li>Click <strong>Stop Bridge<\/strong>, then <strong>Start Bridge<\/strong> to rebuild the transport with the current network.<\/li>\n  <li>If your Mac&#8217;s IP address changed, open Settings \u2014 the <strong>This Mac<\/strong> section will show the new address. Update the remote peer accordingly.<\/li>\n<\/ul>\n\n<h3>6.9 The app won&#8217;t quit cleanly \/ shows a CoreMIDI error on relaunch<\/h3>\n<p>Force-quit the app from the Dock or Activity Monitor and relaunch. If the virtual ports stop appearing entirely after a force-quit, log out and back in. CoreMIDI&#8217;s server occasionally needs a clean reset.<\/p>\n\n<h2>7. Choosing Ports &amp; Networks<\/h2>\n\n<ul>\n  <li>Pick port numbers in the <strong>1024\u201365535<\/strong> range. Lower ports require privileges myMIDI Bridge does not have.<\/li>\n  <li>The send and listen ports do not have to match each other. They are independent of each other and of the ports on the remote peer.<\/li>\n  <li>If you are bridging between two Macs, set Mac A&#8217;s <strong>send port<\/strong> to Mac B&#8217;s <strong>listen port<\/strong>, and Mac B&#8217;s <strong>send port<\/strong> to Mac A&#8217;s <strong>listen port<\/strong>. Each host points at the other&#8217;s IP address.<\/li>\n  <li>On the same Mac (loopback), set the send host to <code>127.0.0.1<\/code> and pick any two unused ports.<\/li>\n<\/ul>\n\n<h2>8. Privacy &amp; What the App Does (and Doesn&#8217;t) Do<\/h2>\n\n<ul>\n  <li>myMIDI Bridge runs entirely on your Mac and the local network you point it at. It does not phone home, contact any analytics service, or upload any data.<\/li>\n  <li>It binds one local UDP port for listening and sends UDP datagrams to the single host\/port you configure. Nothing else is opened on your network.<\/li>\n  <li>All settings are stored locally in standard macOS user defaults.<\/li>\n<\/ul>\n\n<h2>9. Getting Further Help<\/h2>\n\n<p>If something still isn&#8217;t working, please include the following when contacting support:<\/p>\n<ul>\n  <li>macOS version<\/li>\n  <li>myMIDI Bridge version<\/li>\n  <li>A copy of the <strong>Activity log<\/strong> from around the time the problem occurred (select the entries in the log \u2014 text is selectable \u2014 and copy\/paste them)<\/li>\n  <li>Your Settings values: send host, send port, listen port<\/li>\n  <li>A short description of the remote peer and what wire format it expects<\/li>\n<\/ul>\n\n<\/div>\n\n\n\n<p class=\"has-base-3-background-color has-background wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>myMIDI Bridge \u2014 Help &amp; Troubleshooting Guide myMIDI Bridge is a macOS utility that connects CoreMIDI to UDP. It exposes a pair of virtual MIDI ports on your Mac and forwards their traffic to and from the network, so any MIDI app can send and receive MIDI over a plain UDP connection. 1. How myMIDI &#8230; <a title=\"myMIDI Bridge \u2014 Help &amp; Troubleshooting Guide\" class=\"read-more\" href=\"https:\/\/www.mickeydesigns.com\/home\/mymidi-bridge-help-troubleshooting-guide\/\" aria-label=\"Read more about myMIDI Bridge \u2014 Help &amp; Troubleshooting Guide\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":369,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"elementor_header_footer","format":"standard","meta":{"footnotes":""},"categories":[20],"tags":[],"class_list":["post-536","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-help"],"_links":{"self":[{"href":"https:\/\/www.mickeydesigns.com\/home\/wp-json\/wp\/v2\/posts\/536","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mickeydesigns.com\/home\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mickeydesigns.com\/home\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mickeydesigns.com\/home\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mickeydesigns.com\/home\/wp-json\/wp\/v2\/comments?post=536"}],"version-history":[{"count":3,"href":"https:\/\/www.mickeydesigns.com\/home\/wp-json\/wp\/v2\/posts\/536\/revisions"}],"predecessor-version":[{"id":547,"href":"https:\/\/www.mickeydesigns.com\/home\/wp-json\/wp\/v2\/posts\/536\/revisions\/547"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mickeydesigns.com\/home\/wp-json\/wp\/v2\/media\/369"}],"wp:attachment":[{"href":"https:\/\/www.mickeydesigns.com\/home\/wp-json\/wp\/v2\/media?parent=536"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mickeydesigns.com\/home\/wp-json\/wp\/v2\/categories?post=536"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mickeydesigns.com\/home\/wp-json\/wp\/v2\/tags?post=536"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}