Ask HN: Moving MIDI
We currently have an app running in Windows that is sending out basic general MIDI commands to a COM port, which in turn is driving via a serial cable a Edirol SD-20 tone generator. Our needs are pretty basic, we're doing just general MIDI, picking various voices (clarinet, oboe etc). What we want to be able to do is drop the external tone generator and re-route/pickup the MIDI traffic that's on the COM port (i.e. Device Manager -> COM1/2/3/45 etc) and then route that basic GM data to a software based tone generator. We don't need or want a super sophisticated DAW ( Microsoft GS Wavetable synth may be enough). Our client bass are health care professionals, so it needs to be easy, intuitive for the uninitiated.
I've been in IT for a long time, but never worked on something like this before. Thanks for the read. If the above text isn't clear enough, please let me know.
5 comments
[ 4.0 ms ] story [ 27.4 ms ] threadIt runs a Windows Scripting Host interface, which you should be able to use with most scripting languages to send the incoming data into MIDI-OX, and then route it directly to Microsoft GM.
If I were doing this project I would probably try going down this route, using the ActivePython distribution and pySerial. There might be simpler alternatives but this way looks pretty straightforward.
If you have access to the app source you should be able to rewrite the code to use DirectSound or FluidSynth to play MIDI rather than touch the serial port.
If not, two dirty-hack options come to mind: you can loop the serial line's output back into the computer with a USB MIDI device(classically, MIDI goes over a 9-pin connection, presumably you already have a solution for serial-to-9-pin with the original setup) or you might be able to poll outgoing serial traffic and remap it with some code.