First post, by Srecko
I finally got to finishing the MIDI input support that I started in early 2007.
Location:
http://sourceforge.net/tracker/index.php?func … 551&atid=467234
Please test it if you have interest in midi input functionallity (but also GUS and SB MIDI output).
Changes:
-alsa and win32 midi input (sysex and MIDI)
-subsctiption port created for Alsa sequencer, in addition to trying to connect to a specified input port
-refactored midi configuration code (midi input/output config is separate, and few more options)
-added midi.h header which contains all common midi functions
-all devices output to their own channel handled by midi.cpp (later merged to a same host port)
-GUS UART MIDI input and output (GUS had plain serial port UART chip on board for that)
-SB UART MIDI input and output (uses SB DSP input buffer and SB IRQ)
-SB16 MIDi input (via port 330/1, active when intelligent=false)
-largely rewritten MPU401 intelligent mode code (reference tables, restructuring of code, few bugs corrected...)
-input in intelligent mode: tested on Ballade, Prism, Texture and Midisoft recording session (win 3.11fw)
->mode for synchronisation to external midi clock
->metronome sound generator
->MIDI through channel (not captured)
->separation of realtime and normal messages (for capturing MIDI)
missing/TODO:
-system/realtime messages on Alsa
-midi input for mpu401 uart mode with running on irq 2/9 (now pure uart mode will call SB16 irqs)
(if you know any app that uses this, let me know)
-sb uart timestamps (now they're set to 0, not used by apps AFAIK)
-add API dependant hook to use port 331 TX status throttling (AFAIK not possible on win32, but might be with Alsa)
-implement alsa rawmidi backend (maybe).
-try to create build integrated with the MT-32 latency patch (by a request)
-test if sysex input works (only limited testing for now)
-improve metronome: and check that minor/major tick dfference is audible enough
-add forwarding of various midi channels (gus,sb,mpu401 and midi through) to different midi output ports?
-improve input device autodetection
To activate, please put a device number to inconfig parameter, and in midioptions one of: inputgus, inputsbuart,inputmpu401 or inputauto
I mostly tested it using Renoise and MIDI Yoke, and vkeybd & timidity on Fedora 8.
Attached is a win32 VS2008 build (should require pdcurses.dll, SDl.dll, SDL_net.dll, maybe also libpng and zlib, and probably VS2008 c++ runtime files).