This simple interface allows MATLAB to read incoming MIDI data from a MIDI device or another MIDI program. For instance, if a MIDI keyboard is connected to the computer running MATLAB, this interface could be used to see what keys the user is playing, what knobs he's twisting, what pedals he has down, etc.
% Open an interface; the tool will prompt to select a device.
% Play some notes on a connected keyboard or wiggle some knobs on a MIDI controller.
% Read all the new MIDI messages.
messages = midi_interface();
% Close the device.
This currently only works on Windows (32/64-bit) and only supports one MIDI device at a time. If this tool proves useful for people, we could take it further, so just let me know!
Hi Sima H,
The messages this tool outputs use a standard MIDI format consisting of several integers per "message". You can read about their meanings online; a simple search for "MIDI messages" ought to do it. Also, a few of the most basic messages (note on/off and velocity) are covered as part of the MidiDemo.m in the Real-Time Audio Processor, available here:
Hi. I wonder if you give me a brief explanation about the massages.
Sorry, had a problem with the cable. Now working. Great code, very helpful. Thanks!
I wonder, why do I always get an empty messages matrix?
I open the interface, select the device, play some notes on the keyboard and execute messages = midi_interface() which always returns an empty matrix.
very helpful! thank you!
The output timestamps of the MIDI data were wrong and aren't any more. (Thanks Janne.)
Updated copyright information.