DLS

From Video Game Music Preservation Foundation Wiki
Jump to: navigation, search
Downloadable Sounds
DLS.png
Developer: IASIG, MMA
Header: RIFF
Content: PCM
Instruments: Intrinsic
Target Output
Output - Digital Audio.png Output - MIDI - No.png Output - FM Synthesis - No.png Output - PSG - No.png
Released: 1990-??-??
First Game: ?
Extensions
  • *.dls

The DownLoadable Sounds (DLS) file format was firstly created by Interactive Audio Special Interest Group (IASIG) in 1990 and continued by MIDI Manufacturers Association (MMA) later. The file doesn't store music, but it does contain the digital audio samples for instrument collections.

Some audio hardware has native DLS support for wavetable synthesis, for example:

Since not many sound cards have native DLS support, Microsoft has developed DirectMusic Synthesizer, firstly bundled with DirectX 6.1, which uses DLS sound banks by design. Also the DirectMusic proprietary format was created to extend MIDI capabilities.

Mainly DLS is used in music formats like RMI or SGT, but some games can use it to store sound effects.

Players

(Category)

Editors

(Category)

Converters

(Category)

DLS to ?

? to DLS

Games

(Category)
Released Title Usage
1999-02-03 DirectX Diagnostic Tool (W32) Music Instruments
2000-01-25 Final Fantasy VIII (W32) Music Instruments
2000-09-22 Midtown Madness 2 (W32) Music Instruments
2000-11-09 No One Lives Forever (W32) Music Instruments
2001-04-13 Analog Devices Sound Demo (W32) Music Instruments
2001-01-26 Monkey Brains (W32) Music Instruments
2001-11-15 Gothic (W32) Music Instruments
2002-05-15 Elite Forces: Navy SEALs (W32) Sound Effects
2003-03-03 Shutokou Battle Online (W32) (首都高バトルONLINE) Sound Effects
2003-08-18 Donuts 4: Revenge of the Space Torus (W32) Music Instruments
2003-08-21 Gothic II: Night of the Raven (W32) Music Instruments
2003-10-28 Gothic II (W32) Music Instruments

Technical

All DLS files use RIFF tree structure, and the identifier is "DLS " (with space at the end).

RIFF Tree Structure

File Root
│
└─ RIFF:DLS                  - RIFF DLS header
   ├─ colh                   - Number of instruments in collection
   ├─ vers                   - Version (optional)
   ├─ msyn                   - "msyn" chunk (proprietary, appears in gm.dls only)
   ├─ LIST:lins              - Instruments list
   │  ├─ LIST:ins            - Instrument #1
   │  │  ├─ insh             - Instrument header: bank and program number
   │  │  ├─ LIST:lrgn        - Regions list
   │  │  │  ├─ LIST:rgn      - Region #1
   │  │  │  │  ├─ rgnh       - Region header: key range, velocity range
   │  │  │  │  ├─ wsmp       - Sample information: Loop points, tuning, gain, root key
   │  │  │  │  ├─ wlnk       - Link information: sample ID within the wave pool
   │  │  │  │  └─ LIST:lart  - List of articulators (Local zone)
   |  |  |  |     └─ art1    - Articulator chunk: parameter connections for the instrument (think SF2 generators and modulators)
   │  │  │  ├─ LIST:rgn      - Region #2
   │  │  │  └─ ...
   │  │  ├─ LIST:lart        - List of articulators (Global zone)
   │  │  │  └─ art1          - Articulator chunk: parameter connections for the instrument (think SF2 generators and modulators)
   │  │  ├─ LIST:INFO        - Information container
   │  │  │  └─ INAM          - Instrument name
   │  │  └─ ...
   │  ├─ LIST:ins            - Instrument #2
   │  └─ ...
   ├─ ptbl                   - Reference table to digital audio data (byte offset to each LIST:wave chunk)
   ├─ LIST:wvpl              - Samples list
   │  ├─ LIST:wave           - Wave sample #1
   │  │  ├─ fmt              - Wave format header: type, channels, sample rate, bit depth
   │  │  ├─ wsmp             - Sample information: Loop points, tuning, gain, root key
   │  │  ├─ data             - Waveform data: Usually PCM, but other formats such as A-Law may appear
   │  │  ├─ LIST:INFO        - Information container
   │  │  │  ├─ INAM          - Sample name
   │  │  │  └─ ICOP          - Copyright of the sample (optional)
   │  │  └─ ...
   │  ├─ LIST:wave           - Wave sample #2
   │  └─ ...
   └─ LIST:INFO              - Information container
      ├─ INAM                - Name / Title
      ├─ ICOP                - Copyright
      ├─ ICMT                - Comment
      ├─ ISBJ                - Subject
      ├─ ISFT                - Software
      └─ ...

Differences between DLS 1 and 2

There are some key differences between these two versions of the format.

Level 1

  • Regular instruments are limited to one global articulator chunk.
  • Drum instruments cannot have a global articulator and each sample has to have its own articulator chunk.
  • Region header is rgn . Note the space at the end.
  • Articulators use lart and art . Note the space at the end.

Level 2

  • Both regular and drum instruments can have both global and local articulators.
  • There are more connection types and parameters.
  • Envelope delay and hold time introduced.
  • A second LFO called Vibrato LFO introduced.
  • Region header is rgn2.
  • Articulators use lar2 and art2.

Links