Kernel Streaming
Property | Value |
---|---|
Transport Id | {26FA740D-469C-4D33-BEB1-3885DE7D6DF1} |
Abbreviation | KS |
Overview
Kernel Streaming is the mechanism through which MIDI 1.0 and MIDI 2.0 devices using the new UMP-based class driver are enumerated and communicated with.
In addition, any third-party UMP drivers will also route through this service.
Compatibility
The best experience for Windows MIDI Services will be with applications using the new Windows MIDI Services SDK.
API | Compatible | Notes |
---|---|---|
Windows MIDI Services Native | Yes | This provides the best experience for applications. |
WinRT MIDI 1.0 | Yes | Data is translated between UMP and MIDI bytes (MIDI 1.0 data format) as required. |
WinMM MIDI 1.0 | Yes | Data is translated between UMP and MIDI bytes (MIDI 1.0 data format) as required. |
When creating WinMM and WinRT MIDI 1.0 endpoints for applications using the older APIs, we first use the declared Function Blocks. If there are no function blocks, we use the Group Terminal Blocks. If there are no declared group terminal blocks, we currently create 16 input ports and 16 output ports – 1 for each group in each direction. However, we’re likely to change this in the future and require the user to specify if they want more than 1 group in each direction because creating the backwards compatible WinMM ports is costly.
Configuration
Endpoints for this transport are not created through the configuration file, but certain properties, such as the name and description, are updatable through it.
"endpointTransportPluginSettings":
{
"{26FA740D-469C-4D33-BEB1-3885DE7D6DF1}":
{
"_comment": "KS MIDI (USB etc.)",
"SWD: \\\\?\\SWD#MIDISRV#MIDIU_KS_BIDI_6799286025327820155_OUTPIN.0_INPIN.2#{e7cce071-3c03-423f-88d3-f1045d02552b}":
{
"_comment" : "Native Instruments Kontrol S61",
"userSuppliedName" : "Pete's Kontrol S61",
"userSuppliedDescription" : "This is my Kontrol S61. There are many like it, but this one is mine. My Kontrol S61 is my best friend. It is my life. I must master it as I must master my life. Without me, my S61 is useless. Without my S61, I am useless."
}
}
}
TODO: Need to add options for the WinMM port numbers and more
If you want to see how Windows sees any given device at the Kernel Streaming interface level, run the SDK tool
midiksinfo
. That will list all KS devices as they are seen before we create MIDI endpoints for them.