A cross platform, hardware independant framework for the design of custom MIDI controllers