| facebook


by subpixel,


A small application made with Processing to produce MIDI control messages from a live audio feed. Auto-levelling frequency band meters are used to obtain "peak" output values across the entire audio spectrum analysed (whereas it is usual to have strong bass response with weaker treble response), and easing is applied to make the levels less erratic.

10 separate monitor outputs are supplied, where each monitor is attached to one of the frequency band meters and that meter's output is scaled to the particular output range for the monitor, allowing for a reduced final output range as well as inverted ranges. Drop-down menus are provided to select the MIDI input and output devices, as well as the MIDI channels to use.

This app has been used to control VJ applications Resolume and Neon v2, allowing simultaneous control from an external MIDI controller on the same channel (using loopMIDI as a virtual MIDI driver and MIDI-OX for routing).

Monitoring audio on Windows 10

The "Stereo Mix" device only exists for some audio hardware. To do monitoring in Windows 10 when there is no "Stereo Mix" requires using a 3rd party driver. See How to Get Stereo Mix in Windows 10.

As of v11.3, spxlAudioToMidi searches for a mixer name starting with strings listed in a text file in the data directory called "mixer-prefs.txt", listed in order of preference., for example:

VoiceMeeter Output
CABLE Output
Stereo Mix

which should match the primary output of Voicemeeter from VB-Audio Software (tested with Voicemeeter Potato), VB-CABLE Virtual Audio Device, also from VB-Audio Software, or the Stereo Mix, if any of those are available. If you are using a different audio device, or want to change the order of preference, simply edit the text file and restart the app.


Latest version

Older versions

Demo videos


Note: These screenshots are from an earlier version running on Windows 7. The appearance and operation is similar in this version.

Default state

Select MIDI device

Link to meter part 1

Link to meter part 2

Hover to show value

Set max output
Click (and drag)

Set min output
Click (and drag)

Random links,
random output ranges

Select MIDI channel

Pause + mute