125
edits
Jestar jokin (talk | contribs) (→Early v5 - CD tracks: SOUN instead of SOU block for CD tracks) |
Jestar jokin (talk | contribs) (→iMUSE: replace dead external link with ScummVM wiki link) |
||
(4 intermediate revisions by 2 users not shown) | |||
Line 13: | Line 13: | ||
The redundant header is possibly due to building on a legacy implementation, or for easier identification in the table stored in the .000 index file. | The redundant header is possibly due to building on a legacy implementation, or for easier identification in the table stored in the .000 index file. | ||
The music block may contain any combination of ROL (Roland MT-32), ADL ( | The music block may contain any combination of ROL (Roland MT-32), ADL (AdLib/OPL FM), or SPK (PC speaker) blocks. They can also store a single SBL block for digitized sound (described in a later section). Aside from SBL, each of these blocks follow the same basic pattern. | ||
Block name 4 bytes ("ROL ", or "ADL ", or "SPK ") | Block name 4 bytes ("ROL ", or "ADL ", or "SPK ") | ||
Line 21: | Line 21: | ||
Every track is stored in MIDI format, in order to make use of the iMUSE technology through System Exclusive (SysEx) messages. | Every track is stored in MIDI format, in order to make use of the iMUSE technology through System Exclusive (SysEx) messages. | ||
Due to the predominance of the Sound Blaster and | Due to the predominance of the Sound Blaster and AdLib/OPL FM technology at the time, in at least MI2 every musical SOUN block contains an ADL block. | ||
==iMUSE== | ==iMUSE== | ||
Line 27: | Line 27: | ||
From SCUMM v5 onwards, LucasArts games used a dynamic music playback system called iMUSE. This basically consists of standard MIDI data, with embedded System Exclusive (SysEx) messages that act as markers in the song. iMUSE allows operations like conditional jumping & looping, adjusting the volume of parts, turning parts on and off, changing instruments, and detuning parts. | From SCUMM v5 onwards, LucasArts games used a dynamic music playback system called iMUSE. This basically consists of standard MIDI data, with embedded System Exclusive (SysEx) messages that act as markers in the song. iMUSE allows operations like conditional jumping & looping, adjusting the volume of parts, turning parts on and off, changing instruments, and detuning parts. | ||
You can find the original patent document [http://pat2pdf.org/pat2pdf/foo.pl?number=5315057 here], and some technical details can be found | You can find the original patent document [http://pat2pdf.org/pat2pdf/foo.pl?number=5315057 here], and some technical details [[SCUMM/Technical Reference/iMuse data|can be found here]]. | ||
==Mac0== | ==Mac0== | ||
Line 80: | Line 80: | ||
Block size 4 bytes | Block size 4 bytes | ||
Sound header 4 bytes ("AUhd" or "WVhd") | Sound header 4 bytes ("AUhd" or "WVhd") | ||
Block size 4 bytes | |||
Unknown 3 bytes (always 00 00 80) | Unknown 3 bytes (always 00 00 80) | ||
Data header 4 bytes ("AUdt" or "WVdt") | Data header 4 bytes ("AUdt" or "WVdt") | ||
Block size 4 bytes | |||
VOC data variable | VOC data variable | ||
AUhd and AUdt are used in Monkey Island, while WVhd and WVdt are used in the non-interactive demo of Sam & Max. The actual sound data is stored in the Creative VOC format, without the | AUhd and AUdt are used in Monkey Island, while WVhd and WVdt are used in the non-interactive demo of Sam & Max. The actual sound data is stored in the Creative VOC format, without the header information. The implied data offset is 0x1A, and the VOC version is 0x010A. | ||
==Early v5 - CD tracks== | ==Early v5 - CD tracks== | ||
Line 110: | Line 112: | ||
Block name 4 bytes ("VCTL") | Block name 4 bytes ("VCTL") | ||
Block size 4 bytes | Block size 4 bytes | ||
Lip-sync tags variable | Lip-sync tags variable * 2 bytes LE | ||
Sound data variable ("Crea" block / VOC file) | Sound data variable ("Crea" block / VOC file) | ||
The lip-sync tags provide timing information. In v5 the number of tags is stored in the calling text, according to the formula | The lip-sync tags provide timing information, and are 16-bit LE values, representing positions in the speech file. Lip synching is basically just toggling the speaking animation on and off whenever the speech goes past the positions listed in the lip-synch tags. In v5 the number of tags is stored in the calling text, according to the formula (num_tags << 1) + 8. The "Crea" block is an entire Creative VOC file. | ||
===Compressed=== | ===Compressed=== | ||
Line 147: | Line 149: | ||
TOWS - FM Towns | TOWS - FM Towns | ||
SBL - Sound Blaster digitized sound (Creative VOC file) | SBL - Sound Blaster digitized sound (Creative VOC file) | ||
ADL - | ADL - AdLib (OPL FM) | ||
AMI - Amiga MOD | AMI - Amiga MOD | ||
ROL - Roland MT-32 | ROL - Roland MT-32 |
edits