I have a Yamaha Disklavier, an acoustic piano with MIDI output. My son improvises on it when he is in the mood, which is quite frequently. It's good stuff and I'd like to capture the MIDI output of his sessions, without him having to do anything but play.

I'm looking for something that would continuously monitor the MIDI output from the piano and record it whenever the piano is played. I'm open to software, hardware, Raspberry Pi, Arduino, free or for-pay. I do have software development skills but I don't need another project right now and hoping to find an off-the-shelf solution, or close to that.

All suggestions for how to approach this problem are welcome.

[Update] The brainstorm utility mentioned in the accepted answer does just what I want on Windows. But I'm having trouble figuring out how to use it on Linux. The syntax is

brainstorm <input fifo> <filename prefix> <timeout in seconds>

What do I use for the input fifo?

Here's some info about MIDI on this system:

$ aconnect -i
client 0: 'System' [type=kernel]
    0 'Timer           '
    1 'Announce        '
client 14: 'Midi Through' [type=kernel]
    0 'Midi Through Port-0'
client 20: 'masterkey 49' [type=kernel]
    0 'masterkey 49 MIDI 1'

[Update 2] I got it to work by using abrainstorm. Given that I want to record from the masterkey 49 keyboard, the syntax is

abrainstorm --prefix myprefix_ --timeout 5 --connect 20 0

3 Answers 3


There is the brainstorm tool in Div's MIDI Utilities:

This command line utility functions as a dictation machine for MIDI. It listens for incoming MIDI events and saves them to a new MIDI file every time you pause in your playing for a few seconds. The filenames are generated automatically based on the current time, so it requires no interaction.


The Brainstorm program suggested by CL looks like a great option (apparently I don't have enough "points" to just post a comment).

I would also suggest taking a look at MIDIOX. I've used it a lot for MIDI troubleshooting. It can be setup to log anything that comes into the buffer.


Certainly, a solution could be devised with a little bit of programming to make it more ideal, but I think a basic answer to this problem is to run a midi sequencer program on a PC hooked up to the piano, and just have it record constantly. You can then crop areas of interest, and it should be very easy to just drop out empty space. In fact most such programs probably can be set up to do this automatically.

I don't know of a good simple sequencer that fits the exact profile of your requirements, but a nice DAW [Digital Audio Workstation] that does all this and more (and has its own scripting language, so it could technically do exactly what you want if you ever get enough time to tweak it) is Reaper - it is relatively inexpensive, and has a fully unlimited trial version that very politely requests that you register within a certain period of time.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.