Skip to content

In-box Preview 13 (Apps and Transports - no new API)

Pre-release
Pre-release

Choose a tag to compare

@Psychlist1972 Psychlist1972 released this 01 Nov 03:02
· 72 commits to main since this release
c55408b

In-box Preview 13 - The Halloween Release

This preview is open to all customers who would like to try out the features and functionality before it is officially released in Windows. Installing these components will not break your existing Windows MIDI Services OS-delivered components install. Please read the installation instructions. The installers are at the end of these release notes.

Nothing in these releases is required for use of MIDI on Windows. The Windows MIDI Services service and transports for USB MIDI 1.0, USB MIDI 2.0, MIDI 2.0 loopbacks is already in Windows 11 25h2 and higher. This is all additional to what is already in the operating system, for advanced and curious customers to try out. If you are not comfortable with installing and uninstalling apps on Windows, please stop here.

This release updates the apps and the transports only. There is no new Windows.Devices.Midi2 NuGet package, and Preview 11 is still the API to build against. See API below.

GitHub Copilot generated most of the release notes here based on the actual work checked into the repo.

Packages and Installation Instructions

Windows MIDI Services works only on Windows 11 25h2 and later. Installing these packages on older versions of Windows, like Windows 10, will not work properly and is not supported.

If you are running any of the older rc4 or similar SDK Runtime and Tools, or any of the older preview transports, fully uninstall them from Settings > Apps > Installed Apps before installing anything here. If you were using the old Network MIDI 2.0 from the rc4 timeframe, you will need to delete your midiconfig.json file from %allusersprofile%\Microsoft\MIDI. You can also back up that version and manually remove the Network MIDI 2.0 entries if you are familiar with json files. Restart the MIDI service after editing.

IMPORTANT: Due to a bug in the installer YOU MUST UNINSTALL PREVIOUS VERSIONS BEFORE INSTALLING THIS. That includes preview 11/12 tools and transports installers. Uninstall via Windows Settings > Apps > Installed Apps

(Installer Bug is this one: #1323)

Install the Tools package to have access to all the in-box tools required to configure endpoints, customize, route MIDI endpoints, create controller surfaces, and much more. Everyone will want this package. The tools are documented on the tools page.

The two installers (x64 if you are on Intel/AMD devices, Arm64 if you are on Qualcomm/NVIDIA silicon) are at the end of the release notes.

Install the Transports package to have access to preview versions of

  • General MIDI Synth
  • Basic MIDI 1.0 Loopback Transport
  • RTP-MIDI Transport
  • Network MIDI 2.0 Transport
  • Bluetooth LE MIDI Transport

You can turn the individual transports on or off on the Transports page of MIDI Troubleshooting and Repair, which is in the Tools package.

If you installed Preview 12, you don't need to remove it first. Both packages upgrade it in place. If the installer says a restart is needed, restart before you use the MIDI apps. See Installers.

Key Updates

  • Windows MIDI Patchbay speaks OSC. A new OSC connection sends and receives MIDI as Open Sound Control messages, over UDP or TCP, to and from apps like REAPER, TouchOSC and Open Stage Control. It can find OSC apps on the network, and it can show up in your DAW as a MIDI device, without a loopback.
  • Windows MIDI Glass can send a layout to another PC. Design on a desktop and play on a Surface. After the first send, only what changed goes across.
  • Windows MIDI Glass can follow a foot controller. Incoming program changes, controllers and notes can change pages, press controls, swap pad grids, change the key, and more, while you play.
  • Windows MIDI Glass has a Fretboard control, and pad grids can be set rows and columns of up to 1,024 pads, with buttons that change octave, row and key as you play.
  • Windows MIDI Glass asks before a layout from somewhere else sends SysEx, because the wrong SysEx can change or damage a device.
  • Windows MIDI File Player reads Japanese, Chinese and Korean text in older MIDI files, shows song information, and has a GM Reset button.
  • If a MIDI tool crashes, Windows MIDI Troubleshooting and Repair opens on a new Crash dumps page, so you can save the crash dump and attach it to a GitHub issue or Discord question/report.
  • The installers close the MIDI apps and stop the MIDI service before they replace files, and tell you when a restart is needed. In the past, not all files were being properly replaced when you install a new version on top of an old.
  • The tools tell you when Windows MIDI Services isn't available, such as in Legacy API mode, instead of looking empty or not responding.
  • An RTP-MIDI device that connects to this PC can keep its ports while it's switched off, as a connection this PC makes already could.

Installers

Each platform still has two installers, Tools and Transports.

  • Windows MIDI Services Tools (0.99.96-preview.13) closes the MIDI apps before it replaces any files, including the MIDI notifications app in the system tray. If the notifications app was running, or was set to start when you sign in, it's started again when the install finishes.
  • Windows MIDI Services Transports (1.0.45-preview.13) stops the MIDI service before it replaces the transports, and asks again if the service doesn't stop the first time. Any MIDI app can start the service again, so the installer stops it a second time right before it copies files.
  • Both tell you when a restart is needed. When a file is in use, Windows can't replace it until the next restart. Until then, a new app could load an old file, and that mix can crash. So if an app couldn't be closed, or the service wouldn't stop, the installer now says a restart is required. If an earlier install is still waiting for a restart, the installer asks you to restart first.
  • The Tools package sets up crash dumps for the MIDI apps. See Crash dumps below.

API

Preview 11 is still the current Windows MIDI Services API. Build and test your app against the Windows.Devices.Midi2 NuGet package from Preview 11, version 0.99.92-preview.11. Everything in the Preview 11 release notes about the API, including how you may use and distribute it, still applies.

The Tools package installs a copy of Windows.Devices.Midi2.dll next to the apps, for the apps' own use. Don't build against that copy, and don't copy it into your app. It's an interim build for the tools, and its ABI is not locked, so it can change in any release without notice. An app built against it may fail when the next release, or the version in Windows, replaces it.

This set of release notes only covers the delta from Preview 12. Please refer to Preview 12 and earlier for everything before that.

Transports

Transport package version for this release is 1.0.45-preview.13.

General MIDI Synth

  • A note after a quiet spell is no longer lost. The synth lets go of the audio device after a few seconds of quiet. With an app that kept the port open, the note that opened the audio device again was dropped.
  • Resets fade instead of cutting off. GM System On, GM2 System On, GS Reset, XG System On and System Reset now fade out the notes that are sounding, so a reset doesn't click. Every reset puts all 16 channels and the master volume back to their starting point. A note that's fading out keeps its own volume, pan and effects, so it doesn't jump louder as it fades.
  • GM System Off is ignored, as General MIDI 2 asks of a synth that only does General MIDI. It used to reset the synth.
  • The synth opens the audio device in the background, so a slow audio device no longer holds up the MIDI service. Notes wait up to 3 seconds for a device that's still opening.
  • The MIDI service starts and stops more cleanly with the synth installed.

Details are in The General MIDI Synth.

Network MIDI 2.0

  • A device can end the connection from its side. When a host, such as a Mac, ends a session because its user disconnected or it's powering down, Windows no longer invites it again straight away. Network MIDI Setup shows that the device disconnected, and Try again connects again. A host found on the network is also connected again when it stops advertising and then advertises again.
  • Network MIDI Setup says why a connection was refused. A device has one Network MIDI 2.0 session with this PC at a time. When Windows refused a second one, a connection said "Trying to connect..." and retried forever, and a host showed nothing. Now the connection says it's waiting for another connection to end, and connects promptly when that one does. A host lists the devices it refused recently, and why.
  • Stopping the MIDI service no longer crashes or waits a long time while a Network MIDI 2.0 host or connection is running.
  • A device that's a client of a host on this PC, and also the host for a connection this PC makes, now gets two separate connections, as it should.

RTP-MIDI

  • Keep endpoint when offline, for devices that connect to this PC. In Preview 12, only a connection this PC makes could keep a device's endpoint and ports while the device was switched off. Now a device that connects to an RTP-MIDI host on this PC can too. Set it for each device in Network MIDI Setup, or with the new Set-MidiRtpRemoteClientSettings in PowerShell. Always makes the endpoint as soon as the host starts, even before the device first connects. See Keeping the endpoint when a device is offline.
  • Steadier with devices that reconnect a lot. A device that keeps connecting and disconnecting, or that connects under many different names, no longer makes ports come and go in every app. A connection that's already up is no longer ended by a new invitation that doesn't finish.
  • Approvals stay with the address you approved. Approve once and Allow until restart apply to the network address shown in the request. A kept endpoint goes back only to an address its device connected from. The same name from another address is asked about first.
  • Stopping the MIDI service is cleaner with RTP-MIDI running.

Bluetooth MIDI

  • A disconnected device goes away sooner. When a Bluetooth LE MIDI device disconnected while an app was sending to it, its endpoint could take up to 18 seconds to disappear. Now the endpoint is removed first, and the slower Bluetooth cleanup happens after.
  • Fixed cases where stopping the MIDI service, or disconnecting a device, never finished.
  • A PC with lots of Bluetooth devices nearby no longer keeps an endless list of them.

Basic MIDI 1.0 Loopback

  • A loopback with a unique id that matches another one in all but letter case is refused. A configuration with two such loopbacks now loads one of them instead of stopping the MIDI service when it starts.
  • Creating, renaming, muting and removing loopbacks at the same time no longer get in each other's way.

In-box service and transports

These parts ship in Windows. The fixes below reach customers through a Windows update, not through the preview packages.

  • MIDI 2.0 loopbacks take one change at a time, so a rename or two creates at once no longer get mixed up. A loopback whose id is already used is refused, instead of replacing the first one and leaving its endpoints behind. An endpoint opened while its loopback is still being made now gets messages from the other side once the loopback is ready.
  • Opening an endpoint that doesn't exist now fails with "not found", instead of stopping the MIDI service. This was rare, but possible.
  • Virtual devices. An app that tries to create a virtual device with a unique id another virtual device already has is refused, and the first device is left alone.

Applications

Tools package version for this release is 0.99.96-preview.13.

All apps

  • When Windows MIDI Services isn't available, such as in Legacy API mode or when the MIDI service won't start, the apps now say so once when they start. In Legacy API mode, they point you to MIDI Troubleshooting and Repair to change the mode. See How to change the API mode.
  • Bluetooth MIDI Setup and Network MIDI Setup no longer stop responding when they start in Legacy API mode.
  • When an app crashes, MIDI Troubleshooting and Repair opens to help you save the crash dump. See below.
  • Shorter labels. Field names, buttons and menu commands in Windows MIDI Sequencer, Patchbay and Glass now use a short music or Windows term instead of a phrase. For example, "How busy" is now "Density", and "Echo while armed" is now "Input monitoring". Files are unchanged.

Windows MIDI Patchbay

OSC connections

An OSC connection is a new kind of node that sends and receives MIDI as Open Sound Control messages. Use it with apps like REAPER, TouchOSC and Open Stage Control. See OSC connections, and Using OSC with Windows MIDI Patchbay for step-by-step setup app by app.

  • Each row is a group, with its own OSC address and format: REAPER-style paths, OSC's own MIDI type, values in arguments, or Custom rules. Presets cover REAPER's virtual keyboard, TouchOSC, Open Stage Control and more.
  • Custom rules are for apps whose controls send their own addresses instead of MIDI, such as a TouchOSC fader at /1/fader3 with a value from 0 to 1. Each rule turns one address into one MIDI message, both ways. One rule can cover a whole set of faders. Recently heard offers Add a rule for this for an address nothing takes yet.
  • Make MIDI 2.0 messages keeps the full detail of a value from 0 to 1, such as a TouchOSC fader, instead of rounding it to 128 steps.
  • UDP or TCP. TCP doesn't lose messages, which suits big SysEx. A TCP connection can connect to the other app, or wait for apps to connect.
  • Find on the network lists OSC apps that announce themselves, such as TouchOSC, and a connection announces itself so other apps can find it.
  • Show to other apps as a MIDI device lets your DAW open an OSC connection by its name, like any other MIDI device, without a loopback.
  • Windows Firewall. Until you let Windows MIDI Patchbay through the firewall, a connection only listens on this PC, so Windows doesn't pop up its own prompt. A bar offers the same network choices as Network MIDI Setup, as shown in the screenshot.
  • Timing options for received and sent messages, a sender filter, and a rate limit are in the inspector.
image

Other changes

  • The Message converter can listen for a timing clock, Start, Continue or Stop, and can send a timing clock. That lets a note played in a steady rhythm become the MIDI clock, for software that can't send clock itself. The panel notes that a clock made this way is only as steady as the notes you play.
  • Every group a device declares now shows on its endpoint (#1314). Before, only the first 8 showed until you turned on Show all 16 groups.
  • A connection from one group of an endpoint to another group of the same endpoint is kept when a patch is opened again. Before, it worked until the app restarted, and then disappeared. A single interface with a keyboard on DIN In 1 and a sound module on DIN Out 2 hits this.
  • Right-clicking a group on an endpoint shows the endpoint's menu without selecting it or opening the inspector.
  • A cord's group label moves out of the way instead of covering text on a node.
  • Switch branches are now named outputs, such as "Output 1", with "Default" for everything else.

Windows MIDI Glass

  • Send a layout to another PC. Sync to device... in the editor, or Send to device... on a layout's card, sends a layout to another PC running Windows MIDI Glass, such as a desktop where you design it and a Surface where you play it. The two PCs pair once by comparing a 6-digit code. After the first send, only the layout and the pictures, videos and theme files the other PC doesn't have go across. The other PC listens only while its Receive from another PC window is open, and a running layout shows Update ready instead of changing while you play. See Send a layout to another PC.
  • Run a layout from a foot controller. A layout can have rules: when a device sends a program change, controller or note, go to a page, press a control, set a value, turn a control on or off, show or hide it, swap pad grids in one spot, change the key, run a sequence, or panic. Learn fills in the message. Controls can also start turned off or hidden, and a page can run a sequence when it opens. See Run Windows MIDI Glass from a foot controller.
  • Fretboard, a new control. A guitar neck to play with your fingers, with 15 tunings plus your own, a capo, strumming, hammer-ons and pull-offs, slides and bends. It can send a channel per string, MPE, or a pitch bend per note. Add fretboard buttons adds capo, tuning and neck position controls beside it.
  • Pad grids in rows and columns. Note pads and hex pads have an Arrangement: Flow, as before, or Rows and Columns for a set grid of up to 1,024 pads that fill the control. This makes it possible to set up layouts that are similar to popular hardware controllers.
  • Grid buttons. A button can change a pad grid instead of sending MIDI: octave, row, semitone, In key only, next or previous root and scale, and more. Pickers and readouts can show and change them too, for all grids or only some, so a layout can play in more than one key. Add grid buttons puts a ready-made row of them under a grid.
  • Note names. First note, Lowest note and each step's note take a name, such as F#0 or Bb1, as well as a number, with middle C (60) as C3. A pad grid's inspector says when some pads are past the ends of the note range and play nothing.
  • Layouts that send SysEx. The wrong SysEx can change or damage a device. A layout's SysEx now goes out only when this PC has seen exactly that SysEx before: because you wrote it in the editor here, or allowed it when asked. Otherwise the layout asks the first time it runs, names the devices the SysEx would go to, and holds it back until you allow it. A layout with no SysEx never asks. See Layouts that send SysEx.
image

Windows MIDI Network Setup

  • Why a connection was refused shows on a Network MIDI 2.0 host, and why a connection is waiting shows on a connection this PC makes. See Network MIDI 2.0 above.
  • "Disconnected by" the device shows when a host ends the session from its side.
  • Keep endpoint when offline for RTP-MIDI devices that connect to a host on this PC. Select Settings... next to the device under the host. Devices with their own settings are listed under the host, including ones that are away with their endpoint kept.
  • When a host's port is in use, the message names the other Network MIDI 2.0 or RTP-MIDI host on this PC that has it.
  • A Network MIDI 2.0 host card counts only active sessions.

Windows MIDI File Player

  • Japanese, Chinese and Korean text. Older MIDI files store titles, copyrights, track names and lyrics in Shift-JIS, GBK, Big5 or the Korean code page, and those came out garbled. The player now works out which one a file uses, and honors the encoding tags from the MIDI Association's RP-026 when a file has them. Western files read the same as before. Windows MIDI Sequencer reads files the same way.
  • About (Ctrl+I), an info button beside the title, shows the title, composer, lyricist, artist, copyright, file type, tracks, notes and length, and which text encoding the file was read with.
  • GM Reset (Ctrl+R), beside Play to and Group, sends GM System On to the chosen output, so a file that doesn't pick its own sounds starts from a known state. While playing, the music pauses for it and carries on. A new setting, Send a GM Reset before each file, is off by default. See GM Reset.
  • With nothing queued, the window shows only the queue and the output pickers. Add files moved to the queue header next to Clear, so it's always there. Removing the last file clears its tracks and notes.
  • Counts of one read "1 file" and "1 track", not "1 files".

Windows MIDI Sequencer

  • Split and merge clips. The razor (the scissors above the tracks) cuts a clip where you select it, on the grid. Split here on a clip does the same. Select clips on a track with Ctrl and merge them into one.
  • Merge tracks. Merge into folds one track into another, and keeps the second track's device, channel, sound and color.
  • Other tracks' notes shows what the other unmuted tracks play, faintly behind the notes you're editing.
  • Custom track colors, with the same color picker as the window's color.

Windows MIDI Troubleshooting and Repair

  • Crash dumps, a new page. When one of the Windows MIDI Services apps crashes, this app opens on the Crash dumps page, says which app stopped, waits while Windows finishes the dump, and offers to show it. It doesn't ask for administrator rights when it opens this way. Save a MIDI service dump saves one for the MIDI service too, which helps when an app crashed or froze while using MIDI. You can zip the dumps you choose to attach to a GitHub issue, and delete the ones you don't need. Dumps stay on your PC, in %LOCALAPPDATA%\Microsoft\MIDI\CrashDumps, 10 per app, and nothing is sent anywhere. A dump can hold personal information, such as file and device names, so share it only with the developers who asked for it. See Crash dumps.
  • Repro capture covers the MIDI apps too. Time travel tracing now also records the Windows MIDI Services apps that are already open, not only the MIDI service, and the capture lists each open MIDI app with the MIDI files it has loaded. An app has to be open before the capture starts.
  • The Legacy API mode description lists what isn't available in that mode.

Windows MIDI Console and PowerShell

  • Set-MidiRtpRemoteClientSettings and Remove-MidiRtpRemoteClientSettings replace Set-MidiRtpRemoteClientSendSpeed and Remove-MidiRtpRemoteClientSendSpeed. They set a device's sending speed, skipping in-between values, and -OfflineRetentionSeconds together. See PowerShell.
  • midi and mididiag show the new RTP-MIDI setting.

Documentation

  • New: Using OSC with Windows MIDI Patchbay, with a section for each app: REAPER, TouchOSC, apps that use OSC's MIDI type, Open Stage Control, TCP, and opening it from your DAW. Each says what we tested and what we didn't.
  • New: Run Windows MIDI Glass from a foot controller, with an example layout.
  • How do I...? has five new OSC entries, such as connecting TouchOSC and using an OSC app in your DAW.
  • How to change the API mode lists what isn't available in Legacy API mode.
  • The General MIDI Synth lists what every reset sets, and says that GM System Off is ignored.
  • Updated tool pages for every app above. Each tool page now says how the app was made.
  • The patch and layout guides for AI assistants cover OSC connections, the new Message converter messages, the Fretboard, pad grid arrangements and grid buttons, and foot controller rules.

Installers

Expand the section below if it is collapsed. The installers are there. See the instructions at the top of the release notes for how to install.

Due to a bug in the installer YOU MUST COMPLETELY UNINSTALL PREVIOUS VERSIONS BEFORE INSTALLING THIS. That includes preview 11/12 tools and transports installers. Uninstall via Windows Settings > Apps > Installed Apps