Thanks to all the folks who came out to hear my talk last night at CapArea.NET on “Communicating with the Internet of Things”. I’m embedding my slides from the talk below, including some additional resource links:
One of the things I love most about developing for the .NET platform is the wide variety of devices and form factors that I can write for using a single language, namely C#. With Microsoft’s recent announcements about the reach of Universal Apps, that’s more true than ever. But it’s not just true for Windows devices, you can also develop for devices and IoT using C#. And you don’t need to wait for the Windows 10 port for Raspberry Pi 2, either.
At the end of what’s been a kind of tough week, with a spring cold making its way through my entire family (one of the perils of having young kids at home), I got a nifty package in the mail. Inside was an anti-static foil bag containing the parts for a nifty addition to my Gadgeteer hardware collection, the new MIDI Module created by my friend and fellow Microsoftie Pete Brown. I should have thought to snap a photo of the kit before assembling it, but I was sufficiently excited I could hardly wait to heat up the soldering iron. Here’s what the finished module looks like:
So, OK, you might ask. Looks neat, and all, but what does it DO?
Well, for the uninitiated, MIDI stands for Musical Instrument Digital Interface, and the short definition is that it’s a serial protocol specification that lets musical instruments “talk” to one another. MIDI allows devices to communicate musical information (which note to play, how loudly to play it, etc.) digitally in a highly efficient format. Instead of creating a waveform and pushing it through limited bandwidth pipes, MIDI allows a controller device to simply provide instructions on what note should be played, which channel it should be played on (MIDI supports up to 16 channels per interface), along with any information on the specific sound (referred to in MIDI parlance as a patch) and parameters (referred to as control change) for the target device. Then the controller leaves the actual generation of the sound up to the receiving device.
So what Pete’s module does is allow a .NET Gadgeteer program to act as a sender or receiver of MIDI data. Which can be pretty fun stuff, with just a little work.