BASS.NET API for the Un4seen BASS Audio Library

MidiSysExMessageManufacturer Property

BASS.NET API for the Un4seen BASS Audio Library
Gets the manufacturer ID from a system-exclusive message (or -32768 if not applicable or no Message data buffer is present).

Namespace:  radio42.Multimedia.Midi
Assembly:  Bass.Net (in Bass.Net.dll) Version:

public short Manufacturer { get; }

Property Value

Type: Int16

The first data byte (after the StatusType), should be a Manufacturer's ID.

Since a midi data byte can't be greater than 0x7F, that means there would only be 127 IDs to dole out to manufacturers. Well, there are more than 127 manufacturers of MIDI products.

MMA has assigned particular values of the ID byte to various manufacturers, so that a device can determine whether a SysEx message is intended for it. For example, a Roland device expects an ID byte of 0x41. If a Roland device receives a SysEx message whose ID byte isn't 0x41, then the device ignores all of the rest of the bytes up to and including the final 0xF7 which indicates that the SysEx message is finished.

To accomodate a greater range of manufacturer IDs, the MMA decided to reserve a manufacturer ID of 0 for a special purpose. When you see a manufacturer ID of 0, then there will be two more data bytes after this. These two data bytes combine to make the real manufacturer ID. So, some manufacturers have IDs that are 3 bytes, where the first byte is always 0. Using this "trick", the range of unique manufacturer IDs is extended to accomodate over 16,000 MIDI manufacturers.

For example, Microsoft's manufacturer ID consists of the 3 bytes 0x00 0x00 0x41. Note that the first byte is 0 to indicate that the real ID is 0x0041, but is still different than Roland's ID which is only the single byte of 0x41.

To accomodate this and differentiate between single-digit manufacture IDs and three digit manufacture IDs, this member will return posivive values for single-digit manufacture IDs and negavive values for all three digit manufacture IDs.

So in the above example Microsoft's ID would be returned as -65, wheres Roland's ID would be returned as 65.

There are also three special manufacturer ID reserved: Educational, RealTime and NonRealTime. The later two relate to universal SysEx messages.

Note: If no manufacturer ID is actually present in the Message data buffer, this member might anyhow return a value, since this property simply evaluates the first data bytes after the initial StatusType.

See Also