SBI Format
Format type | Music |
---|---|
Notation type | Instrument-only |
Instruments | OPL |
Max channel count | 1 |
Max track count | 0 |
Max pattern count | Unknown |
Max order count | Unknown |
Tags? | Title |
Games | None |
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 |
Tools
The following tools are able to work with files in this format.
Name | Platform | Play? | Create new? | Modify? | Convert/export to other? | Import from other? | Access hidden data? | Edit metadata? | Notes |
---|---|---|---|---|---|---|---|---|---|
SBTimbre | DOS | Yes | No | No | Yes; .sbi | Yes; many | No | No | Can import or export instruments in SBI format |
SBANK | DOS | No | No | No | Yes; many | Yes; many | No | No | Сan convert SBI between AdLib INS format |
OPL3 Bank Editor | Linux, Windows, macOS | Yes | No | No | Yes; many | Yes; many | No | No | Can import or export instruments in SBI format |