mimo's MidiOut

type: Effect
version: 1, 0, 0, 1 (very beta)
author: mimo@restoel.net
home:  restoel.net/mimo

why another MidiOut?

there are already some machines around which do the same better-but they didnt work on my machine. I think this has to do with the fact that the other one's use the m$win midimapper. this machine bypasses the midimapper and it works for me.

usage

MidiOut comes together with MidiGen which is used as the midi generator (yes!). Use MidiGen to generate MidiSignals and route it into MidiOut (=connect it to MidiOut). ook up the device number in MidiOut's Midi-Info (right-button menu) or set it through the buzz-double-click menu. In Midi-Info you will see a list of all midi-devices that m$win found in your system, on the left you'll see the number (for later use in MidiGen) followed by one of these symbols:
            | the output is in use by some other application-check view|preferences|midi output and disable the device if you want to use it in MidiOut
            - the device is free and can be wired to MidiOut
            ~ the device is wired to MidiOut and may be used by multiple tracks
            ! the device is "bogus"-m$win couldnt query its capabilities  (haven't had this one yet)

Edit the pattern in MidiGen - you will need to set a device and a channel even if you selected one already in MidiOut - otherwise you want hear anything (the device you set in MidiOut will override all other device selections you make in MidiGen)

hints

limitations

programming

yes, you can develop your own midi generators sendig data to a MidiOut. Create a header file with the following content:
typedef enum { 
 c0_Nothing,
 c0_FirstDevice = 128, //meaning not more than 120 devices possible
 c0_LastPossibleValue=128+32
}ECommand0;
typedef enum {
 c1_FirstChannel=0,
 c1_LastChannel=15,
 c1_NoChannel,
 c1_OmniChannel,
 c1_OpenDevice = 128,
 c1_CloseDevice,
 c1_LastPossibleValue
}ECommand1;
MidiOut accepts commands with this syntax send to its Work-method (MidiOut is a mono-machine, the float * is converted to an unsigned char * ):
unsigned char ucDevice,ucChannel,ucMidiStatus,ucMidiData1,ucMidiData2;  == 5 Bytes
ucDevice:   ECommand0 (see above):128+device number
ucChannel:ECommand1(see above):channel(0-15),or Open/Close Device; rest is not implemented yet
ucMidiStatus: Midi Status Byte: 0x8 for Note Off; 0x9 for Note On, ...
ucMidiData1: Midi Data Byte 1 (eg .Note)
ucMidiData2: Midi Data Byte 2 (eg. Velocity)
 

(C) mimo@restoel.net. MidiOut is of course donationware on a voluntary basis.