Difference between revisions of "SND (AdLib)"

From Video Game Music Preservation Foundation Wiki
Jump to: navigation, search
m (Instrument Names)
(? to SND)
(24 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
{{Infobox Format
 
{{Infobox Format
| Title      = Sound Bank
+
| Title      = Ad Lib Sound Bank
 
| Format      = SND (AdLib)
 
| Format      = SND (AdLib)
| Developer  = Unknown
+
| Developer  = [[Ad Lib|Ad Lib, Inc.]]
 
| Header      = Custom
 
| Header      = Custom
 
| Content    = Instrument
 
| Content    = Instrument
Line 10: Line 10:
 
| OutputFM    = Yes
 
| OutputFM    = Yes
 
| OutputPSG  = No
 
| OutputPSG  = No
| Released    = 1989-??-??
+
| Released    = 1988-06-29
 
| FirstGame  = [[Kung Fu Louie Vs. The Martial Art Posse (DOS)]]
 
| FirstGame  = [[Kung Fu Louie Vs. The Martial Art Posse (DOS)]]
 
| Extension01 = *.snd
 
| Extension01 = *.snd
 +
| Extension02 = *.tim
 
}}
 
}}
  
 
An [[AdLib]] '''''Sound Bank (SND)''''' file doesn't store music, but it does contain the definitions for instruments to be played in [[MUS (AdLib)|MUS]] files. Since this format isn't actually an audio format, the list of players don't actually "play" SND files, but rather utilize them when playing a MUS file.
 
An [[AdLib]] '''''Sound Bank (SND)''''' file doesn't store music, but it does contain the definitions for instruments to be played in [[MUS (AdLib)|MUS]] files. Since this format isn't actually an audio format, the list of players don't actually "play" SND files, but rather utilize them when playing a MUS file.
  
 +
Technically the format is very similar to [[BNK]], which in many ways can be regarded as the successor to this format.  SND was developed first (1988) as a way of storing all the instruments necessary to play a single song, and then when the utility of this became apparent, BNK was developed (1989) which stores the data more efficiently and also adds additional fields to make managing instrument libraries easier.
  
 
==Players==
 
==Players==
Line 22: Line 24:
  
 
* [[AdLib Play]] - DOS
 
* [[AdLib Play]] - DOS
 +
* [[Camoto]] - Linux, Windows
  
 +
==Converters==
 +
<div style="float:right;">([[:Category: SND (AdLib) Converters|Category]])</div>
 +
 +
===SND to ?===
 +
* [[Camoto]] - Linux, Windows - [all supported OPL formats]
 +
* [[MIDIPLEX]] - Windows 32 - [[BNK]], [[MDI]]
 +
* [[Vinyl to CMF]] - DOS - [[CMF]]
 +
 +
===? to SND===
 +
* [[AdLib Convert]] - DOS - [[INS]]
 +
* [[MIDIPLEX]] - Windows 32 - [[MDI]], [[SOP]]
  
 
==Games==
 
==Games==
Line 28: Line 42:
 
Since ''SND'' files do not store music, there are no samples, but this is a list of the games that use ''SND'' files.
 
Since ''SND'' files do not store music, there are no samples, but this is a list of the games that use ''SND'' files.
  
{{Table Header
+
{| class="wikitable" |
| Color    = FFF0FF
+
! Released
| Caption01 = Released
+
! Title
| Caption02 = Title
+
|-
}}
 
 
| 1989-??-??
 
| 1989-??-??
 
| [[Kung Fu Louie Vs. The Martial Art Posse (DOS)]]
 
| [[Kung Fu Louie Vs. The Martial Art Posse (DOS)]]
Line 38: Line 51:
 
| 1989-??-??
 
| 1989-??-??
 
| [[Weird Dreams (DOS)]]
 
| [[Weird Dreams (DOS)]]
 +
|-
 +
| 1990-??-??
 +
| [[DarkSpyre (DOS)]]
 
|-
 
|-
 
| 1990-??-??
 
| 1990-??-??
Line 55: Line 71:
 
|-
 
|-
 
| 1992-??-??
 
| 1992-??-??
| [[Regatta (DOS)]]
+
| [[The Summoning (DOS)]]
 
|-
 
|-
 
| 1992-??-??
 
| 1992-??-??
 
| [[Vetka (DOS)]]
 
| [[Vetka (DOS)]]
 +
|-
 +
| 1993-??-??
 +
| [[Regatta (DOS)]]
 +
|-
 +
| 1993-??-??
 +
| [[Veil of Darkness (DOS)]]
 
|-
 
|-
 
| 1994-??-??
 
| 1994-??-??
 
| [[Nine (DOS)]]
 
| [[Nine (DOS)]]
 
|-
 
|-
 +
| 1994-??-??
 +
| [[Popo Car (DOS)]]
 +
|-
 +
| 1995-??-??
 +
| [[Vinyl Goddess From Mars (DOS)]]
 
|}
 
|}
 
  
 
==Technical==
 
==Technical==
* There are very few technical details, because the format is not documented.
 
 
* File size can be calculated with this formula:
 
* File size can be calculated with this formula:
  FileSize = InstCount * 65 + 6
+
  FileSize = iInstCount * 65 + 6
  
===Header Details===
+
===File Header===
  
{{Table Header
+
{| class="wikitable" |
| Color    = FFF0FF
+
! Data type
| Caption01 = Offset
+
! Name
| Caption02 = Type
+
! Description
| Caption03 = Description
+
! Default value
| Caption04 = Default value
+
|-
}}
+
| <tt>UINT8</tt>                || <tt>iVerMajor</tt>    || Version major                  || 1
| 0x00
 
|  
 
| Unknown / Reserved
 
| 0x01
 
 
|-
 
|-
| 0x01
+
| <tt>UINT8</tt>                || <tt>iVerMinor</tt>    || Version minor                  || 0
|  
 
| Unknown / Reserved
 
| 0x00
 
 
|-
 
|-
| 0x02
+
| <tt>UINT16LE</tt>              || <tt>iInstCount</tt>  || Instrument count                ||  
| WORD
 
| Instrument Count
 
|  
 
 
|-
 
|-
| 0x04
+
| <tt>UINT16LE</tt>              || <tt>ofInstParams</tt> || Offset to instrument parameters || <tt>iInstCount * 9 + 6</tt>
| WORD
 
| Unknown
 
|  
 
 
|-
 
|-
| 0x06
+
| <tt>SND_NAME[iInstCount]</tt>  || <tt>aInstNames</tt>  || Array of instrument names      ||  
|  
 
| Instrument Names
 
|  
 
 
|-
 
|-
|  
+
| <tt>SND_PARAM[iInstCount]</tt> || <tt>aInstParams</tt>  || Array of instrument parameters  ||  
|  
 
| Instrument Parameters
 
|  
 
 
|}
 
|}
 
  
 
===Instrument Names===
 
===Instrument Names===
 
Each instrument name is null-terminated ANSI string with 8 fixed characters (9 bytes per name).
 
Each instrument name is null-terminated ANSI string with 8 fixed characters (9 bytes per name).
  
 +
===Instrument Parameters===
 +
Instrument parameters are expressed with this structure:
 +
 +
{| class="wikitable" |
 +
! Data type
 +
! Name
 +
! Description
 +
|-
 +
| <tt>SND_OPLREGS</tt> || <tt>oplModulator</tt> || Register values for the Modulator operator (op 0)
 +
|-
 +
| <tt>SND_OPLREGS</tt> || <tt>oplCarrier</tt>  || Register values for the Carrier operator (op 1)
 +
|-
 +
| <tt>UINT16LE</tt>    || <tt>iModWaveSel</tt>  || Modulator wave select (OPL base register 0xE0)
 +
|-
 +
| <tt>UINT16LE</tt>    || <tt>iCarWaveSel</tt>  || Carrier wave select (OPL base register 0xE0)
 +
|}
  
===Instrument Parameters===
+
The ''SND_OPLREGS'' structure is defined as:
Instrument parameters are expressed with 56-byte array for each instrument, it isn't inspected yet.
 
  
 +
{| class="wikitable" |
 +
! Data type
 +
! Name
 +
! Description
 +
! OPL base register
 +
|-
 +
| <tt>UINT16LE</tt> || <tt>ksl</tt>        || Key scaling level                  || 0x40 (bits 6-7)
 +
|-
 +
| <tt>UINT16LE</tt> || <tt>multiple</tt>    || Frequency multiplier                || 0x20 (bits 0-3)
 +
|-
 +
| <tt>UINT16LE</tt> || <tt>feedback</tt>    || Feedback [op 0 only, op 1 ignored]  || 0xC0 (bits 1-3)
 +
|-
 +
| <tt>UINT16LE</tt> || <tt>attack</tt>      || Attack rate                        || 0x60 (upper four bits)
 +
|-
 +
| <tt>UINT16LE</tt> || <tt>sustain</tt>    || Sustain level                      || 0x80 (upper four bits)
 +
|-
 +
| <tt>UINT16LE</tt> || <tt>eg</tt>          || Envelope gain (nonzero value is on) || 0x20 (bit 5)
 +
|-
 +
| <tt>UINT16LE</tt> || <tt>decay</tt>      || Decay rate                          || 0x60 (lower four bits)
 +
|-
 +
| <tt>UINT16LE</tt> || <tt>releaseRate</tt> || Release rate                        || 0x80 (lower four bits)
 +
|-
 +
| <tt>UINT16LE</tt> || <tt>totalLevel</tt>  || Total output level                  || 0x40 (bit 0-5)
 +
|-
 +
| <tt>UINT16LE</tt> || <tt>am</tt>          || Amplitude modulation (Tremolo)      || 0x20 (bit 7)
 +
|-
 +
| <tt>UINT16LE</tt> || <tt>vib</tt>        || Frequency Vibrato                  || 0x20 (bit 6)
 +
|-
 +
| <tt>UINT16LE</tt> || <tt>ksr</tt>        || Key scaling/envelope rate          || 0x20 (bit 4)
 +
|-
 +
| <tt>UINT16LE</tt> || <tt>con</tt>        || Connector [op 0 only, op 1 ignored] || 0xC0 (bit 0, inverted)
 +
|}
  
 
==Links==
 
==Links==
 +
* [http://www.shikadi.net/moddingwiki/AdLib_Timbre_Bank_Format shikadi.net/moddingwiki/AdLib_Timbre_Bank_Format] - Modding Wiki.

Revision as of 06:55, 8 March 2017

Ad Lib Sound Bank
SND (AdLib).png
Developer: Ad Lib, Inc.
Header: Custom
Content: Instrument
Instruments: Intrinsic
Target Output
Output - Digital Audio - No.png Output - MIDI - No.png Output - FM Synthesis.png Output - PSG - No.png
Released: 1988-06-29
First Game: Kung Fu Louie Vs. The Martial Art Posse (DOS)
Extensions
  • *.snd
  • *.tim

An AdLib Sound Bank (SND) file doesn't store music, but it does contain the definitions for instruments to be played in MUS files. Since this format isn't actually an audio format, the list of players don't actually "play" SND files, but rather utilize them when playing a MUS file.

Technically the format is very similar to BNK, which in many ways can be regarded as the successor to this format. SND was developed first (1988) as a way of storing all the instruments necessary to play a single song, and then when the utility of this became apparent, BNK was developed (1989) which stores the data more efficiently and also adds additional fields to make managing instrument libraries easier.

Players

(Category)

Converters

(Category)

SND to ?

? to SND

Games

(Category)

Since SND files do not store music, there are no samples, but this is a list of the games that use SND files.

Released Title
1989-??-?? Kung Fu Louie Vs. The Martial Art Posse (DOS)
1989-??-?? Weird Dreams (DOS)
1990-??-?? DarkSpyre (DOS)
1990-??-?? DragonStrike (DOS)
1990-??-?? Faces ...tris III (DOS)
1990-??-?? X-Rock (DOS)
1992-??-?? Balda (DOS)
1992-??-?? Color Lines (DOS)
1992-??-?? The Summoning (DOS)
1992-??-?? Vetka (DOS)
1993-??-?? Regatta (DOS)
1993-??-?? Veil of Darkness (DOS)
1994-??-?? Nine (DOS)
1994-??-?? Popo Car (DOS)
1995-??-?? Vinyl Goddess From Mars (DOS)

Technical

  • File size can be calculated with this formula:
FileSize = iInstCount * 65 + 6

File Header

Data type Name Description Default value
UINT8 iVerMajor Version major 1
UINT8 iVerMinor Version minor 0
UINT16LE iInstCount Instrument count
UINT16LE ofInstParams Offset to instrument parameters iInstCount * 9 + 6
SND_NAME[iInstCount] aInstNames Array of instrument names
SND_PARAM[iInstCount] aInstParams Array of instrument parameters

Instrument Names

Each instrument name is null-terminated ANSI string with 8 fixed characters (9 bytes per name).

Instrument Parameters

Instrument parameters are expressed with this structure:

Data type Name Description
SND_OPLREGS oplModulator Register values for the Modulator operator (op 0)
SND_OPLREGS oplCarrier Register values for the Carrier operator (op 1)
UINT16LE iModWaveSel Modulator wave select (OPL base register 0xE0)
UINT16LE iCarWaveSel Carrier wave select (OPL base register 0xE0)

The SND_OPLREGS structure is defined as:

Data type Name Description OPL base register
UINT16LE ksl Key scaling level 0x40 (bits 6-7)
UINT16LE multiple Frequency multiplier 0x20 (bits 0-3)
UINT16LE feedback Feedback [op 0 only, op 1 ignored] 0xC0 (bits 1-3)
UINT16LE attack Attack rate 0x60 (upper four bits)
UINT16LE sustain Sustain level 0x80 (upper four bits)
UINT16LE eg Envelope gain (nonzero value is on) 0x20 (bit 5)
UINT16LE decay Decay rate 0x60 (lower four bits)
UINT16LE releaseRate Release rate 0x80 (lower four bits)
UINT16LE totalLevel Total output level 0x40 (bit 0-5)
UINT16LE am Amplitude modulation (Tremolo) 0x20 (bit 7)
UINT16LE vib Frequency Vibrato 0x20 (bit 6)
UINT16LE ksr Key scaling/envelope rate 0x20 (bit 4)
UINT16LE con Connector [op 0 only, op 1 ignored] 0xC0 (bit 0, inverted)

Links