VOGONS


Reply 40 of 41, by Wohlstand

User metadata
Rank Newbie
Rank
Newbie
bristlehog wrote:

.ins files written by Bank Editor are not recognized by Reality Adlib Tracker 2.0. Are there different .ins standards?

`.ins` are saved by OPL3-BE are AdLib instruments in original format. I had no experience with Reality Adlib Tracker except the case I have made the importer which can extract instruments from RAD songs. Has RAD own .ins format, or it is intended to deal with standard AdLib instruments I have referred? If RAD does use of own `.ins` format, I must to implement the support for them to save proper .ins file that RAD will eat.

Reply 41 of 41, by bristlehog

User metadata
Rank Oldbie
Rank
Oldbie

I've digged a bit and found that Reality Adlib Tracker uses HSC Tracker's INS format, which is different from Adlib INS.

Seemingly HSC Tracker INS file is a 12-byte file of this structure:

;               Instruments values are:   AM/VIB/EG/KSR/Multi Carrier    
; AM/VIB/EG/KSR/Multi Modulator
; KSL/VOLUME Carrier
; KSL/VOLUME Modulator
; ATTACK/DECAY Carrier
; ATTACK/DECAY Modulator
; SUSTAIN/RELEASE Carrier
; SUSTAIN/RELEASE Modulator
; FEEDBACK/FM
; WAVEFORM Carrier
; WAVEFORM Modulator
; SLIDE (signed)

Example:

     DB 240,207,0,0,245,240,244,132,14,0,0,0
DB 242,242,4,0,32,16,241,241,0,3,2,0
DB 48,192,8,0,243,168,244,95,8,0,0,0
DB 48,192,8,0,243,168,244,95,8,0,0,0
DB 242,242,4,0,32,16,241,241,0,3,2,0
DB 242,242,4,0,32,16,241,241,5,3,2,0
DB 242,242,4,0,32,16,241,241,0,3,2,0
DB 240,207,0,0,245,240,244,132,14,0,0,0
DB 48,192,8,0,243,168,244,95,8,0,0,0

Code taken from here: http://pascal.sources.ru/sound/hsc_src.htm

Another description of HSC instrument structure:

Instrument Structure
--------------------

Byte: Equals OPL2 register(+channel):
1 0x23
2 0x20
3 0x43
4 0x40
5 0x63
6 0x60
7 0x83
8 0x80
9 0xc0
10 0xE3
11 0xE0
12 finetune (signed; add to frequency)

(taken from here: https://github.com/cmatsuoka/libxmp/blob/mast … formats/hsc.txt)

So, this looks pretty similar to SBI files, sans the header and with somewhat different register order. Sometimes this 12-byte sequence is followed by a string with instrument name. It doesn't break the HSC compatibility as HSC reads first 12 bytes and populates OPL2 registers, effectively ignoring the rest of the file.

When RAD tracker saves an instrument, it is claimed that the resulting file is HSC compatible, but it's nowhere like it. Here's the format description:

  █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█
█ INSTRUMENTS █
█────────────────────────────────────────────────────────────────────────█
█ Next come the instruments: █
█ █
█ Offset 00:No. of instrument that follows (or 0 for no more) █
█ Offset 01..?:The instrument definition: █
█ █
█ Offset 00:Length of name █
█ Offset 01..?:Name █
█ █
█ There are currently two types of instruments in RAD; FM and MIDI. The █
█ type affects the remaining bytes. █
█────────────────────────────────────────────────────────────────────────█
█ OPL3 FM instrument: █
█ █
█ Offset 00:Bit 7 - Instrument has a riff █
█ Bit 6..5 - Operator 3 & 4 stereo panning █
█ Bit 4..3 - Operator 1 & 2 stereo panning █
█ Bit 2..0 - Algorithm (0..6) █
█ Offset 01:Bit 7..4 - Operator 3 & 4 feedback value █
█ Bit 3..0 - Operator 1 & 2 feedback value █
█ Offset 02:Bit 7..4 - Detune value █
█ Bit 3..0 - Riff's default speed █
█ Offset 03:Bit 5..0 - Volume █
█ █
█ Followed by four operator definitions (even for the 2-op algorithms): █
█ █
█ Offset 00:Bit 7 - Tremolo on █
█ Bit 6 - Vibrato on █
█ Bit 5 - Sustain on █
█ Bit 4 - Scale rate █
█ Bit 3..0 - Multiplier █
█ Offset 01:Bit 7..6 - Scaling level █
█ Bit 5..0 - Volume (inverted; 0 = loudest) █
█ Offset 02:Bit 7..4 - Envelope attack value █
█ Bit 3..0 - Envelope decay value █
█ Offset 03:Bit 7..4 - Envelope sustain level (inverted) █
█ Bit 3..0 - Envelope release value █
█ Offset 04:Bit 2..0 - Waveform number █
█────────────────────────────────────────────────────────────────────────█
█ MIDI instrument: █
█ █
█ Offset 00:Bit 7 - Instrument has a riff █
█ Bit 2..0 - Algorithm (7) █
█ Offset 01:Bit 7..4 - Port (equipment dependent) █
█ Bit 3..0 - Channel █
█ Offset 02:Bit 7..4 - Version (0) █
█ Bit 3..0 - Octave (0..7) █
█ Offset 03: - Program (1..128, 0 = none) █
█ Offset 04: - Bank LSB (1..128, 0 = none) █
█ Offset 05: - Bank MSB (1..128, 0 = none) █
█────────────────────────────────────────────────────────────────────────█
█ Following both types of instruments is the instrument riff, if the █
█ riff flag is set: █
█ █
█ Offset 00:Low byte of number of bytes in riff █
█ Offset 01:High byte of number of bytes in riff █
█ Offset 02..:Refer to the PATTERNS section below for the line/ █
█ channel/note encoding. Note, instrument riffs will █
Show last 5 lines
  █                  not have any notes/instruments in channel 2..9, just  █
█ effects. █
█ █
█▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█

(taken from here: https://www.3eality.com/productions/reality-a … ib-tracker/docs)

Thus, this is completely another INS file, understandable only by RAD Tracker 2.0. It's not compatible with HSC, since HSC uses first 12 bytes to populate OPL2 registers, and in this case it would read the 'RAD INST V10' which is a signature. However, this is of low concern as RAD Tracker reads 12-byte HSC INS files as well as its own INS format. If OPL3-BE could save HSC instruments, it would already allow to import them to RAD.

Hardware comparisons and game system requirements: https://technical.city