SBI Format

From ModdingWiki
Jump to navigation Jump to search
SBI Format
Format typeMusic
Notation typeInstrument-only
Max channel count1
Max track count0
Max pattern countUnknown
Max order countUnknown

The SBI (Sound Blaster Instrument) Format stores a single instrument suitable for playback on a sound card with an OPL2 or OPL3 chip.

File format

The file is structured as follows:

Data type Name Description
char[4] signature "SBI" followed by 0x1A
char[32] name Instrument title (must be NULL-terminated)
BYTE[16] inst Instrument settings (see below)

Some files generated with JuceOPLVSTi erroneously use byte 0x1D instead of 0x1A in the signature.

Instrument settings

The instrument is in the following format. This is identical to the format used for each instrument in CMF Format songs and IBK Format instrument banks.

Data type Name OPL base register Description
UINT8 iModChar 0x20 Modulator characteristic (Mult, KSR, EG, VIB and AM flags)
UINT8 iCarChar 0x23 Carrier characteristic (Mult, KSR, EG, VIB and AM flags)
UINT8 iModScale 0x40 Modulator key scaling/output level
UINT8 iCarScale 0x43 Carrier key scaling/output level
UINT8 iModAttack 0x60 Modulator attack/decay level
UINT8 iCarAttack 0x63 Carrier attack/decay level
UINT8 iModSustain 0x80 Modulator sustain/release level
UINT8 iCarSustain 0x83 Carrier sustain/release level
UINT8 iModWaveSel 0xE0 Modulator wave select
UINT8 iCarWaveSel 0xE3 Carrier wave select
UINT8 iFeedback 0xC0 Feedback/connection
BYTE[5] Padding to bring instrument definition up to 16 bytes. Sometimes a byte is missing, resulting a 51-byte file rather than a 52-byte file. It is probably safer to not expect this padding to exist at all.

Percussive instruments

In the basic SBI format, there is no indication as to whether a given instrument should be played in melodic or percussive mode. Playing an instrument destined for one mode in the other usually sounds quite bad.

SBI format extension

The SBTimbre editor takes advantage of the 5-byte padding area to store additional information. If any percussion-related fields have non-zero values, the timbre can be identified as a drum instrument.

Data type Name Description
UINT8 iPercVoc Percussion voice number (BassDrum=6, Snare=7, Tomtom=8, Cymbal=9, HighHat=10)
INT8 iTranspos Note offset in semitones
UINT8 iPercPitch Fixed percussion pitch (MIDI note 0-127)
BYTE[2] Reserved


The following tools are able to work with files in this format.

Name PlatformPlay? Create new? Modify? Convert/export to other? Import from other? Access hidden data? Edit metadata? Notes
SBTimbre DOSYesNoNoYes; .sbiYes; manyNoNo Can import or export instruments in SBI format
SBANK DOSNoNoNoYes; manyYes; manyNoNo Сan convert SBI between AdLib INS format
OPL3 Bank Editor Linux, Windows, macOSYesNoNoYes; manyYes; manyNoNo Can import or export instruments in SBI format