Guides
-
Is the IAC Driver MIDI 2.0? What happens to MIDI sent between apps on a Mac
IAC Driver buses report MIDI 2.0. We tested how Core MIDI converts notes, controllers and NRPN between apps, including extra messages during conversion.
Updated
-
Why do MIDI settings reset after a restart on macOS 27?
On macOS 27, a NUL character in a USB MIDI port name can prevent Audio MIDI Setup configurations from being saved. Our reproduction and workaround.
Updated
-
Why doesn't MIDI-CI work between two USB devices connected through a Mac?
MIDI-CI failed between a Keystage and opsix connected by USB through a Mac. We observed macOS relaying messages; a direct DIN connection worked.
Updated
-
Why does MIDI suddenly stop working in a Mac music app?
When MIDIServer quits, running Mac apps can lose MIDI without an error. How we reproduced it, checked the restart time and restored MIDI by reopening apps.
Updated
-
Why does an NRPN arrive with the wrong value first in a Mac app that reads MIDI 2.0?
Core MIDI can convert an NRPN before its full value arrives, sending an incomplete value to MIDI 2.0 receivers. Our IAC test and ways to avoid it.
Updated
-
How do you send Roland SysEx (RQ1 / DT1), and how is the checksum calculated?
Roland RQ1 and DT1 message layouts, worked checksum calculations and 7-bit address arithmetic, with requests tested on a JUNO-D.
Updated
Development notes
-
Connecting MIDIFabric to AI through MCP: localhost and authentication
Why MIDIFabric uses MCP to connect with Codex and Claude Code, and how localhost, access tokens and permissions control that connection.
Updated
-
Letting AI read your MIDI records: how the permissions work
How MIDIFabric lets AI read monitor records and routing settings through separate permissions, and reports missing records and limits on verification.
Updated
-
An effect written by AI, checked by the AI itself: “the harder I play, the longer it repeats”
We asked AI to write a velocity-controlled repeat effect, played it on a JUNO-D8, and used MIDI records to check and revise it. Includes the conversation.
Updated
-
How CC 102 became “OP1 Level”: device definitions in the MIDI monitor
How device definitions give CC and NRPN messages instrument-specific names in MIDIFabric, with examples from the Korg opsix and Sequential Prophet Rev2.
Updated
-
Four Core MIDI behaviors we found while working with MIDI 2.0
Four Core MIDI behaviors tested on macOS 27: missing Stream Messages, UMP Endpoint discovery, virtual ports and replaced input references.
Updated
-
Sending and reading JUNO-D SysEx by name: the address map
How MIDIFabric uses a device definition's address map to enter JUNO-D SysEx requests by name and identify the memory blocks in replies.
Updated
-
An arpeggiator written in Lua: the code and the control panel
We moved MIDIFabric's bundled arpeggiator from Rust to Lua. Its editable code and control panel, note scheduling, tests and current limitations.
Updated
-
Reading JUNO-D settings with MIDI Debugger
Request JUNO-D settings with MIDI Debugger's CLI completion and inspect the SysEx reply. How sending, decoding, comparison and recording work.
Updated