Skip to content

Removing some friction: SDK interim developer preview 002

Pre-release
Pre-release
Compare
Choose a tag to compare
@Psychlist1972 Psychlist1972 released this 02 Jul 21:57
· 1088 commits to main since this release
e29b263

Similar use as the previous release: this is primarily for testing that you can build your apps against the SDK.

Note: As before, many method calls will result in no-impl errors. This is by design. To know which methods are supposed to be working, look at the sdk-core-cpp-winrt-tests project and look at the test cpp files in there. All tests in the SDK project are currently passing.

Updated Targets in NuGet Package

The dll, winmd, and pri files are all copied to the output directory now. The Pri file isn't currently used, but will be in the future. The WinMD file is needed for compilation, but not to run. The DLL is required with your application.

When compiling an app using the SDK

  • Add the NuGet package (use a local package respository. I use D:\peteb\Documents\GitHub\microsoft\midi\publish\ and have it set up in the NuGet Package Manager in Visual Studio
  • If you see an error about a missing MIDI header file, build or rebuild the project.

New dependency for building the SDK

You don't need to build the SDK, but if you want to, you'll need the new dependency.

The Windows MIDI Services SDK has a dependency on boost 1.82 header libraries because I hate reinventing things. The root Boost install folder should be in the system environment variable %BOOST_ROOT% and in your Visual Studio project include path for all build configurations. This is internal, though, and only a consideration if you are building the SDK yourself.

Breaking changes in SDK

  • CheckForWindowsMidiServices has different signature and updated return type now
  • MidiSession uses an IMapView instead of IVector for the list of endpoint connections. This gives you O(1) access to the endpoints without you having to keep your own list
  • Session.ConnectToEndpoint has the redundant boolean parameter removed
  • Probably a few others, but we're not yet at the point where we track them that closely

Faked results

Some calls, like MidiServices::CheckForWindowsMidiServices() return fake results right now.

Updated Sample

The sdk-client-basics sample has been updated to use the NuGet directly, and to be in line with the SDK changes. I've also commented out a few lines that throw exceptions right now so you can run it without getting thrown into the debugger.

SDK-local inproc loopback for testing

This has not yet been implemented, but you may see some of the code and wonder about it.

  • This is an SDK-only MIDI loopback that you'll be able to use for testing in future builds. It has no dependency on the MIDI Services Windows Service or API.
  • I've started implementing this, but it is not currently functional beyond creating the stub of the endpoint. If you try to use it beyond simply creating the two UMP Endpoints, expect errors.

NuGet and Code below are in sync. I will not update this release in any way that gets them out of sync

Thanks to Geil Bremmers and muzak for their testing of the previous preview!