OPL2/OPL3 FM Bank Editor for Windows/Linux/MacOS X

Emulation of old PCs, PC hardware, or PC peripherals.

Re: OPL2/OPL3 FM Bank Editor for Windows/Linux/MacOS X

Postby Wohlstand » 2019-2-15 @ 11:09

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.
User avatar
Wohlstand
Newbie
 
Posts: 36
Joined: 2016-6-12 @ 20:25
Location: Moscow, Russia

Re: OPL2/OPL3 FM Bank Editor for Windows/Linux/MacOS X

Postby bristlehog » 2019-2-15 @ 12:53

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:

Code: Select all
;               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:

Code: Select all
     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:

Code: Select all
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/master/docs/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:

Code: Select all
  █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█
  █ 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   █
  █                  not have any notes/instruments in channel 2..9, just  █
  █                  effects.                                              █
  █                                                                        █
  █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█


(taken from here: https://www.3eality.com/productions/reality-adlib-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
User avatar
bristlehog
Oldbie
 
Posts: 1634
Joined: 2013-4-11 @ 17:56
Location: Russia

Previous

Return to PC Emulation

Who is online

Users browsing this forum: collector, filipetolhuizen and 1 guest