MidiThru v1.1 (includes MidiMate and MidiFix)

The software midi-thru that records your excellent midi keyboard playing in real time to midi file!

This site is dedicated to providing some audio tools I really wanted but could not find online. The software here, MidiThru, Asio Link Driver, MidiMate and MidiFix have been developed by me and I use them all daily.

All the software here runs on Windows XP, Vista, Win7, Win8 (64 or 32 bit editions). Sadly I don't have a Mac to port them across.

MidiThru performs live recording of midi keyboard events to a midi file while also doing midi through to the midi ports you wish to output to. You also get my "MidiMate Virtual Midi Cable" driver which will allow you to output to up to 32 virtual midi device cables using them as inputs in the DAW or music program. Or you can output to use a synthesizer directly while knowing everything is being recorded.

MidiThru can be purchased via the Paypal button. If you purchase you will be emailed a product key to register the trial.
The price starts at $14.95 (USD) for a single machine license. To try before buying you can download MidiThru but after 5 minutes it will close and prompt you to save your midi file. Also, the MidiMate cables will only send midi data for the first 5 minutes. The documentation is here MidiThru v1.1.pdf. Also, Chuck has made a video on you tube here here.

Download MidiThru (includes MidiMate and MidiFix).

Installs required
Here's my keyboard set up in MidiThru showing the key status and all the key signatures and notes.
Picture of MidiThru user interface

What I was trying to do was record midi events in real time to a file so all keyboard events were recorded so I coded Midithru. MidiThru cuts out the middle man and writes the events in real time directly into a midi file. It also routes midi events from input devices to 0 or more output devices.

MidiThru records all midi events received from all selected input devices with millisecond accuracy so it uses the default midi tempo of 120 bpm with 500 ticks per quarter note. This means there are 1000 ticks per second => millisecond resolution for each midi event. This is the maximum resolution the windows midi API supports so there was no point having higher event resolution.

MidiThru minimizes to the system tray to save processing power when not being displayed. You can set it to minimize by default on start up by clicking File->Start Minimized.

But wait, there's more..

MidiThru also allows remembering the values of controllers and sending them to the DAW on startup (or from the file menu at any time). My M-AUDIO Keystation Pro 88 had a neat feature where you could hit a button and "send all controller values" to the DAW to sync it with the keyboard. On my MPK88 there is no such function (I cannot believe the cheaper keyboard has this essential function yet this one doesn't).

Anyway, on my MPK88 there are 2 kinds of controllers:

Static controllers These are controllers that stay at the same value after a power down (like faders, pitch bend).
Non static controllers These are controllers that reset after power down (the rotary pots that turn endlessly and reset to zero after power down).

MidiThru allows you to set your static controllers (in the menu) by moving them. And upon startup you can send either both static and non static, just static or both types of controllers to the DAW. If you restart your DAW you can send the controllers to resync it without having to move every controller (AKAI really needed to add a "send all controllers" button like M-AUDIO).

When you run MidiThru for the first time you will see this dialog.

Picture of MidiThru user dialog to selected devices

You can pick multiple devices as inputs and outputs, all inputs are routed to all outputs in an additive way. What I do is set my keyboards to output on different channels. Each input device will become a seperate track in the output midi file. You can access this dialog at any time from the file menu.

When you run MidiThru at any other time, and after you select the input devices, you will see this dialog.

Picture of MidiThru user dialog to load controllers

This is where you choose to load the saved controller values, either just static after a cold start, both after a restart of MidiThru but not your keyboard and none if you don't wish to send any controller values to the DAW.

The following dialog is from the file menu 'Set Static Controllers', from the selected input devices from the previous step you can pick a device to set the static controllers for. Once you do that a small dialog will pop up with just a button to click when you've moved all the controlers so MidiThru can pick them up. You should see them appear below the keys when you move them. The 'Preserve Old Statics' check box is so you don't have to "remove" all controllers if you forget one. I usually move my faders and pitch bend and modulation wheels as they are the only static controllers on the MPK-88.

Picture of MidiThru user dialog to set static devices

When you exit from Midithru you will see the following dialog, you can cancel the save here or save it as the filename suggested or save it as any file name. Note, MidiThru never deletes files, it sends them to the recycle bin incase you accidentally hit cancel. Also, there will be individual midi files for each input device in the recycle bin e.g. 'midi-2012-04-10 18.38.16dev4.mid' so if you want the single device midis, they are there.

Picture of MidiThru user dialog to save midi file