Electronic Arts AS4 / ASF Music

From Just Solve the File Format Problem
(Difference between revisions)
Jump to: navigation, search
(PRONOM)
(Added sample files)
 
Line 7: Line 7:
  
 
== Description ==
 
== Description ==
 
 
AS4 / ASF files are an audio file format used in many video games created by Electronic Arts. Note that extensions other than those listed may be AS4 / ASF files as Electronic Arts often change file extensions for different games.
 
AS4 / ASF files are an audio file format used in many video games created by Electronic Arts. Note that extensions other than those listed may be AS4 / ASF files as Electronic Arts often change file extensions for different games.
  
 
== Information ==
 
== Information ==
 
 
The basic structure of AS4 / ASF files is similar to that of [[RIFF]], with each file divided into blocks (although, unlike [[RIFF]], the format does not have a global file header).
 
The basic structure of AS4 / ASF files is similar to that of [[RIFF]], with each file divided into blocks (although, unlike [[RIFF]], the format does not have a global file header).
  
Line 32: Line 30:
  
 
=== Header Block ===
 
=== Header Block ===
 
 
Block ID:'''1SNh'''
 
Block ID:'''1SNh'''
  
Line 67: Line 64:
  
 
=== Sound Data ===
 
=== Sound Data ===
 
 
Block ID: '''1SNd'''
 
Block ID: '''1SNd'''
  
Line 90: Line 86:
  
 
=== Loop Block ===
 
=== Loop Block ===
 
 
Block ID: '''1SNl'''
 
Block ID: '''1SNl'''
  
Line 96: Line 91:
  
 
=== End Block ===
 
=== End Block ===
 
 
Block ID: '''1SNe'''
 
Block ID: '''1SNe'''
  
Line 102: Line 96:
  
 
== Software ==
 
== Software ==
 
 
* http://bim.km.ru/gap/
 
* http://bim.km.ru/gap/
 +
 +
== Sample files ==
 +
* {{DexvertSamples|audio/eaASF}}
  
 
== Links ==
 
== Links ==
 
 
* http://www.extractor.ru/articles/electronic_arts_audio_file_formats_description
 
* http://www.extractor.ru/articles/electronic_arts_audio_file_formats_description
  
 
[[Category:Electronic Arts]]
 
[[Category:Electronic Arts]]

Latest revision as of 21:21, 28 December 2023

File Format
Name Electronic Arts AS4 / ASF Music
Ontology
Extension(s) .as4, .asf
PRONOM x-fmt/137

Contents

[edit] Description

AS4 / ASF files are an audio file format used in many video games created by Electronic Arts. Note that extensions other than those listed may be AS4 / ASF files as Electronic Arts often change file extensions for different games.

[edit] Information

The basic structure of AS4 / ASF files is similar to that of RIFF, with each file divided into blocks (although, unlike RIFF, the format does not have a global file header).

Each block starts with a standard header:

struct ASFBlockHeader
{ 
char szBlockID[4]; 
DWORD dwSize; 
};

Where:

  • szBlockID gives the string ID for the block
  • dwSize gives the size of the block (including the header) in bytes.

Each file then consists of a number of blocks, each of which are described below.

[edit] Header Block

Block ID:1SNh

This is the first block in an ASF / AS4 file, describing the audio stream.

struct EACSHeader 
{ 
char szID[4]; 
DWORD dwSampleRate; 
BYTE bBits; 
BYTE bChannels; 
BYTE bCompression; 
BYTE bType; 
DWORD dwNumSamples; 
DWORD dwLoopStart; 
DWORD dwLoopLength; 
DWORD dwDataStart; 
DWORD dwUnknown; 
};
  • szID - the ID string, should always be "EACS"
  • dwSampleRate - the sample rate for the file
  • bBits - the resolution of the decompressed sound data, divided by 8 (i.e. 1 = 8-bit, 2 = 16-bit)
  • bChannels - the number of channels. There are only two options: 1 for mono, 2 for stereo
  • bCompression - if this is equal to 0x00, the audio data consists of signed 8 or 16-bit PCM. If it is equal to 0x02, the audio data consists of compressed IMA ADPCM
  • bType - the type of file (this should always be 0x00 for AS4 / ASF files)
  • dwNumSamples - the number of samples in the file
  • dwLoopStart - where the beginning of the repeat loop should start (in terms of samples). If this is 0xFFFFFFFF, there is no loop
  • dwLoopLength - the length of the repeat loop (again in samples). If this is 0, there is no loop
  • dwDataStart - this is not used for AS4 / ASF files
  • dwUnknown - as the name suggests, the function of this would appear to be unknown

[edit] Sound Data

Block ID: 1SNd

The next block following the header is the sound data block. Confusingly, the first chunk of sound data will be contained in the 1SNh block.

struct ASFChunkHeader 
{ 
DWORD dwOutSize; 
LONG lIndexLeft; 
LONG lIndexRight; 
LONG lCurSampleLeft; 
LONG lCurSampleRight; 
};
  • dwOutSize - the size of the uncompressed (8 or 16-bit PCM) data in the chunk (in terms of samples).
  • lIndexLeft, lIndexRight, lCurSampleLeft, lCurSampleRight - these are the initial values for the IMA ADPCM decompression routine.

As mentioned above, if no compression is used these blocks consist simply of signed 8 or 16-bit PCM audio. Also note that for mono files, there is no lIndexRight or lCurSampleRight value.

[edit] Loop Block

Block ID: 1SNl

This consists of a single value, DWORD value, which defines the looping jump position relative to the start of the song. This block may be followed by a number of further 1SNd blocks.

[edit] End Block

Block ID: 1SNe

An 8-byte block containing no data that defines the end of the audio stream. If there is a loop, the jump should be made from here. Note that some files contain further audio data beyond this.

[edit] Software

[edit] Sample files

[edit] Links

Personal tools
Namespaces

Variants
Actions
Navigation
Toolbox