MIDI is a really cool and widely used protocol for connecting digital instruments and controllers with computers. However, there are times where I just wish my devices could do a little bit more for a lot less money. I began thinking about making a DIY MIDI controller with an Arduino with some features which my current devices lacked. However, I cannot currently advance that project as I have loaned my Arduino parts to someone else.
Instead, I began thinking about writing software which would listen to input from a normal MIDI device and send the output to a virtual MIDI port created on the computer. This would allow the MIDI signal to be modified in real time by the software leaving numerous possibilities. The more I started thinking about what these possibilities entailed, the more this idea began to make sense.
Numerous devices on the market have minor glitches in their behavior or quirks which distract from the otherwise natural interface the device creates between the user and the music they are creating. I realized that Midifire had the potential to correct many of these flaws. For example, some keyboards output a MIDI signal which software interprets as a musical note rather than as foot-pedal input. Midifire has the potential to correct this by dropping all foot-pedal signals and emulating the normal functionality by delaying the normal "note-release" signals until the foot-pedal is let up.
Additionally, Midifire has many other possibilities such as removing jitters from touch-based controllers. This specific type of controller is often subject to jittering because there is a low-friction touch-sourface which is used to provide input to the MIDI device. This means that the user's hand is likely to slip during use, especially during the start and end of input. This effect can be rectified by averaging inputs over a short time frame so that a small jitter does not produce a large effect.
Finally, many other possibilities exist outside the scope of MIDI signal "corrections." Midifire will be able to add additional features to MIDI controllers. These features can include knobs which have an exponential effect as opposed to a linear effect, changing absolute controls to relative controls, and even looping/recording sequences of MIDI signals (especially useful for drum beats or layering).
Midifire is not available yet, but a simple pass-though feature is now available. If you would like to hack on the code, please check it out on Github. More information about the goals and licensing of the project can be found in the README.