top band

Building a Python MIDI Controller

Decky Coss

Audience level:


This is a demonstration of how Python can be used to communicate with electronic musical instruments and devices using the MIDI protocol. It will show how a virtual MIDI device can be used as the base for a multitude of applications related to performance and play, from simple command-line music keyboards to interactive visual art installations.


This poster and interactive demonstration will show how the RtMidi Python library can be used to easily create a virtual MIDI device on compatible operating systems. Such a virtual device can be connected to any virtual or hardware device that communicates via MIDI, including synthesizers, drum machines, controllers, and digital audio workstations. The demonstration will consist of three example projects that use virtual MIDI devices: - The first example is a command-line MIDI keyboard that implements a variety of special functions (such as sustain pedals) and an entirely customizable keyboard layout. This can be considered a "base" RtMidi project from which others can spring. - The second example is a web application that allows MIDI messages to be triggered via API calls, thus creating a means for telematic (long-distance) music performance. - The third example is an interactive MIDI visualizer—a pyprocessing/Pyglet program that receives MIDI messages from a hardware controller and uses them to generate interesting animations. Because the visuals can respond to general MIDI control messages instead of just musical notes, this project has extramusical implications.
bottom band background