-
Notifications
You must be signed in to change notification settings - Fork 28
Commit
More API docs, and the new mididmp command-line utlity
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,4 @@ | ||
<Include> | ||
<?define SetupVersionName="Developer Preview 5" ?> | ||
<?define SetupVersionNumber="1.0.24038.0149" ?> | ||
<?define SetupVersionNumber="1.0.24039.2143" ?> | ||
</Include> |
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
--- | ||
layout: api_page | ||
title: IMidiEndpointConnectionSettings | ||
parent: Connections | ||
grand_parent: Windows.Devices.Midi2 API | ||
has_children: false | ||
--- | ||
|
||
# IMidiEndpointConnectionSettings | ||
|
||
Settings which are optionally provided when connecting to an endpoint. Typically, the implementation of the endpoint will come with a concrete settings class which implements this interface, and translates the settings into JSON which is sent up to the service and read by the abstraction. | ||
|
||
## Properties | ||
|
||
| Property | Description | | ||
| -------- | ----------- | | ||
| `SettingsJson` | The JSON representation of the settings. | | ||
|
||
## IDL | ||
|
||
[IMidiEndpointConnectionSettings IDL](https://github.com/microsoft/MIDI/blob/main/src/api/Client/Midi2Client/IMidiEndpointConnectionSettings.idl) | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
--- | ||
layout: api_page | ||
title: IMidiEndpointConnectionSource | ||
parent: Connections | ||
grand_parent: Windows.Devices.Midi2 API | ||
has_children: false | ||
--- | ||
|
||
# IMidiEndpointConnectionSource | ||
|
||
Marker interface which is used to prevent circular references in the API, specifically with message processing plugins. This interface is only supported when used by the `MidiEndpointConnection` class. | ||
|
||
## IDL | ||
|
||
[IMidiEndpointConnectionSource IDL](https://github.com/microsoft/MIDI/blob/main/src/api/Client/Midi2Client/IMidiEndpointConnectionSource.idl) | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
--- | ||
layout: api_page | ||
title: IMidiMessageReceivedEventSource | ||
parent: Connections | ||
grand_parent: Windows.Devices.Midi2 API | ||
has_children: false | ||
--- | ||
|
||
# IMidiMessageReceivedEventSource | ||
|
||
Interface which contains the event definition used by any class which raises the `MessageReceived` event. This is defined in an interface so that message processing plugins and the `MidiEndpointConnection` type can be used interchangeably in an event handler. | ||
|
||
## Events | ||
|
||
| Event | Description | | ||
| -------- | ----------- | | ||
| `MessageReceived(source, args)` | The main message received event definition. | | ||
|
||
## IDL | ||
|
||
[IMidiMessageReceivedEventSource IDL](https://github.com/microsoft/MIDI/blob/main/src/api/Client/Midi2Client/IMidiMessageReceivedEventSource.idl) | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
--- | ||
layout: api_page | ||
title: MidiSendMessageResult | ||
parent: Connections | ||
grand_parent: Windows.Devices.Midi2 API | ||
has_children: false | ||
--- | ||
|
||
# MidiSendMessageResult | ||
|
||
When an application sends a message, it should check the result of sending to ensure that the message was transmitted. Each of the message sending functions returns a `MidiSendMessageResult` flags enum. Values in this enum are OR'd together to indicate success or failure, and in the case of failure, the reason. | ||
|
||
The `MidiEndpointConnection` type includes static helper functions to process the `MidiSendMessageResult` and determine success or failure. The application may then optionally look at the remaining data to see which failure reason(s) apply. | ||
|
||
```cpp | ||
auto sendResult = myConnection.SendMessageWords(MidiClock::TimestampConstantSendImmediately(), 0x28675309); | ||
|
||
if (MidiEndpointConnection::SendMessageSucceeded(sendResult)) | ||
{ | ||
// do something in the case of success | ||
} | ||
else | ||
{ | ||
// one or more failure reasons in the result. Use bitwise AND `&` operator to decipher. | ||
} | ||
|
||
``` | ||
|
||
## Properties | ||
|
||
| Property | Value | Description | | ||
| -------- | ----- | ----------- | | ||
| `Succeeded` | `0x80000000` | Indicates success. | | ||
| `Failed` | `0x10000000` | Indicates failure. The actual failure reason will be combined with the result. | | ||
| `BufferFull` | `0x00010000` | The message could not be sent because the outgoing buffer to the service was full | | ||
| `EndpointConnectionClosedOrInvalid` | `0x00040000` | The endpoint connection was closed or invalidated before the message could be sent. | | ||
| `InvalidMessageTypeForWordCount` | `0x00100000` | The number of words sent does not match the message type of the first word. | | ||
| `InvalidMessageOther` | `0x00200000` | The message sent was invalid for another reason. | | ||
| `DataIndexOutOfRange` | `0x00400000` | Reading a full message would result in overrunning the provided array, collection, or buffer. | | ||
| `TimestampOutOfRange` | `0x00800000` | The provided timestamp is too far in the future to be scheduled. | | ||
| `MessageListPartiallyProcessed` | `0x00A00000` | The message list was only partially processed. Not all messages were sent. | | ||
| `Other` | `0x01000000` | Other reason that cannot be determined. | | ||
|
||
## IDL | ||
|
||
[MidiSendMessageResult IDL](https://github.com/microsoft/MIDI/blob/main/src/api/Client/Midi2Client/MidiSendMessageResult.idl) | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
--- | ||
layout: api_page | ||
title: MidiEndpointDeviceInformationFilter | ||
parent: Endpoint Enumeration | ||
grand_parent: Windows.Devices.Midi2 API | ||
has_children: false | ||
--- | ||
|
||
# MidiEndpointDeviceInformationFilter Enumeration | ||
|
||
When enumerating devices, it is helpful to be able to filter for different types of devices. For example, an application providing diagnostic or development services may want to enumerate the diagnostic loopback endpoints. A Digital Audio Workstation, on the other hand, would only want to enumerate the normal UMP and Byte Stream native endpoints. | ||
|
||
## Properties | ||
|
||
| Property | Value | Description | | ||
| --------------- | ---------- | ----------- | | ||
| `IncludeClientUmpNative` | `0x00000001` | Include endpoints which are MIDI UMP endpoints natively. These are typically considered MIDI 2.0 devices even if they only send MIDI 1.0 messages in UMP. | | ||
| `IncludeClientByteStreamNative` | `0x00000002` | Include endpoints which are MIDI 1.0 byte stream endpoints natively. These are converted to UMP internally in Windows MIDI Services. | | ||
| `IncludeVirtualDeviceResponder` | `0x00000100` | Include endpoints which are virtual devices. Note that this is the device side of the endpoint, not the side available to other applications. Typically, you would not use this. | | ||
| `IncludeDiagnosticLoopback` | `0x00010000` | Use this value only when providing development, test, or diagnostic services for MIDI. | | ||
| `IncludeDiagnosticPing` | `0x00020000` | You would not normally include this in an enumeration. This endpoint is internal. | | ||
| `AllTypicalEndpoints` | `IncludeClientUmpNative | IncludeClientByteStreamNative` | This is the value most applications should use, and is the default. | | ||
|
||
## IDL | ||
|
||
[MidiEndpointDeviceInformationFilterEnum IDL](https://github.com/microsoft/MIDI/blob/main/src/api/Client/Midi2Client/MidiEndpointDeviceInformationFilterEnum.idl) | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
--- | ||
layout: api_page | ||
title: MidiEndpointDeviceInformationSortOrder | ||
parent: Endpoint Enumeration | ||
grand_parent: Windows.Devices.Midi2 API | ||
has_children: false | ||
--- | ||
|
||
# MidiEndpointDeviceInformationSortOrder Enumeration | ||
|
||
Specifies the sort order to use when enumerating a static list of devices. | ||
|
||
## Properties | ||
|
||
| Property | Value | Description | | ||
| --------------- | ---------- | ----------- | | ||
| `None` | `0` | No sort. Return in default order | | ||
| `Name` | `1` | Sort by the name of the endpoint | | ||
| `EndpointDeviceId` | `2` | Sort by the id of the endpoint (the SWD id) | | ||
| `DeviceInstanceId` | `3` | Sort by the device instance id | | ||
| `ContainerThenName` | `11` | Sort by the container and then by name. This is helpful when you want endpoints grouped by parent. | | ||
| `ContainerThenEndpointDeviceId` | `12` | Sort by the container and then by the endpoint id | | ||
| `ContainerThenDeviceInstanceId` | `13` | Sort by the container and then by the device instance id | | ||
| `TransportMnemonicThenName` | `21` | Sort by the transport mnemonic (example: "DIAG") and then by the device instance id | | ||
| `TransportMnemonicThenEndpointDeviceId` | `22` | Sort by the transport mnemonic and then by the endpoint id | | ||
| `TransportMnemonicThenDeviceInstanceId` | `23` | Sort by the transport mnemonic and then by the device instance id | | ||
|
||
## IDL | ||
|
||
[MidiEndpointDeviceInformationSortOrderEnum IDL](https://github.com/microsoft/MIDI/blob/main/src/api/Client/Midi2Client/MidiEndpointDeviceInformationSortOrderEnum.idl) | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
--- | ||
layout: api_page | ||
title: MidiEndpointDevicePurpose | ||
parent: Endpoint Enumeration | ||
grand_parent: Windows.Devices.Midi2 API | ||
has_children: false | ||
--- | ||
|
||
# MidiEndpointDevicePurpose Enumeration | ||
|
||
Indicates the intended purpose of the endpoint. Use this to help classify endpoints you show to users in your application. This value is also used internally when filtering endpoints per the `MidiEndpointDeviceInformationFilter` enumeration. | ||
|
||
## Properties | ||
|
||
| Property | Value | Description | | ||
| --------------- | ---------- | ----------- | | ||
| `NormalMessageEndpoint` | `0` | The endpoint is any number of normal messaging endpoint types. | | ||
| `VirtualDeviceResponder` | `100` | The endpoint is the device-side of an app-to-app MIDI connection. Only the device app should use this endpoint. | | ||
| `InBoxGeneralMidiSynth` | `400` | The endpoint represents the internal General MIDI Synthesizer | | ||
| `DiagnosticLoopback` | `500` | The endpoint is one of the static system-wide diagnostics loopback endpoints. These are not normally used in applications | | ||
| `DiagnosticPing` | `510` | The endpoint is the internal diagnostics ping endpoint. This endpoint should never be used by applications as it is reserved for the `MidiService` ping feature. | | ||
|
||
## IDL | ||
|
||
[MidiEndpointDevicePurposeEnum IDL](https://github.com/microsoft/MIDI/blob/main/src/api/Client/Midi2Client/MidiEndpointDevicePurposeEnum.idl) | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
--- | ||
layout: api_page | ||
title: Midi1ChannelVoiceMessageStatus | ||
parent: Messages | ||
grand_parent: Windows.Devices.Midi2 API | ||
has_children: false | ||
--- | ||
|
||
# Midi1ChannelVoiceMessageStatus Enumeration | ||
|
||
Status to use for MIDI 1.0 Channel Voice messages. Note that not all MIDI 1.0 messages are channel voice messages, so this is not an exhaustive list of MIDI 1.0 messages. However, this is the total set of MIDI 1.0 messages which can be used in a MIDI Universal MIDI Packet Message type 2. | ||
|
||
## Properties | ||
|
||
| Property | Value | Description | | ||
| -------- | ------- | ------ | | ||
| `NoteOff` | `0x8` | MIDI 1.0 Note Off message | | ||
| `NoteOn` | `0x9` | MIDI 1.0 Note On message | | ||
| `PolyPressure` | `0xA` | MIDI 1.0 polyphonic pressure message | | ||
| `ControlChange` | `0xB` | MIDI 1.0 control change message | | ||
| `ProgramChange` | `0xC` | MIDI 1.0 program change message | | ||
| `ChannelPressure` | `0xD` | MIDI 1.0 channel pressure message | | ||
| `PitchBend` | `0xE` | MIDI 1.0 pitch bend message | | ||
|
||
## IDL | ||
|
||
[Midi1ChannelVoiceMessageStatusEnum IDL](https://github.com/microsoft/MIDI/blob/main/src/api/Client/Midi2Client/Midi1ChannelVoiceMessageStatusEnum.idl) |