Resident Evil (PS1) Director's Cut / Dual Shock OST - Impulse Tracker (.it) Conversions

Kippykip

CEO of cancelled
THE ONE
So the PS1 versions of Resident Evil 1 use sequenced music loaded from .VAB files. Meaning the soundtrack could be converted to Modtrackers pretty easily.
Resident Evil 1 Soundtrack in OpenMPT


Resident Evil 1 - Standard / Directors Cut .IT Soundtrack:
Click to download this file via CDN CDN Download

Resident Evil 1 - Directors Cut Dualshock .IT Soundtrack:
Click to download this file via CDN CDN Download

Dualshock Basement .IT Extras:
(Was trying to see if they used the wrong sound bank for the infamous basement theme DS_SEP1A_seq1, but with other sound banks from both games)
Click to download this file via CDN CDN Download

sep2it.py Converter Source Code:
Click to download this file via CDN CDN Download

Code:
Resident Evil (PS1) Director's Cut / Dual Shock - sequenced music converted to Impulse Tracker (.it)
====================================================================================================

WHAT'S HERE
  DC\   194 total .it files across both folders. DC = Director's Cut (SLUS-00551), DS = Dual Shock Ver. (SLUS-00747)
  DS\   Naming: <version>_SEPxx_seqN.it  (SEPxx = PSX\SOUND\SEPxx.HSB, seqN = Nth sequence inside it, from 1)
  compare\  MP3 renders of the three "old sequence + new Dual Shock instruments" cases, DC vs DS
  sep2it.py  the converter (Python 3, no dependencies)

SOURCE FORMAT (what the game actually uses)
  Each SEPxx.HSB = Sony VAB header (instruments: programs, key-split tones, ADSR, tuning)
                 + Sony SEP block (up to 3 MIDI-like sequences, 48 ticks/beat)
                 + VB body (PS-ADPCM samples; starts 4 bytes after where the header size implies).
  Loops use Sony's NRPN markers (CC99=20 loop start, CC99=30 loop end, count 127 = forever).

HOW THE CONVERSION WORKS
  * One IT instrument per VAB tone (key split), one 16-bit sample per decoded VAG, tuned with the
    tone's centre note + fine tune (44.1 kHz at the centre note, like the PS1 SPU).
  * The SPU ADSR is simulated sample-accurately and fitted to an IT volume envelope (sustain loop at
    the end of the held phase); the release rate becomes the instrument fadeout. Note-offs are written
    as note-fade (~~~) so the release plays out.
  * Timing is not quantised: the game's sequences are "humanised", so 1 row = 1 or 2 sequence ticks
    at speed 1 (24 or 48 rows per beat). Patterns are long but timing is exact. Tempo changes -> Txx.
  * Max 24 simultaneous voices, same as the PS1 SPU; voices are stolen like hardware would.
  * Velocity x CC7 x CC11 -> volume column; tone/program/CC10 pan -> Xxx; pitch bend -> fine and
    extra-fine slides (linear slides on), using each tone's bend range.
  * The infinite loop becomes a Bxx jump back to the loop-start pattern.

KNOWN LIMITS
  * No PS1 hardware reverb (most tones have the reverb flag set). Add reverb in your player/DAW.
  * Envelopes are timed for the song's starting tempo. Songs that change tempo will drift a little.
  * Very large pitch bends glide over a few rows (IT's fine slides max out at 15/16 semitone per row).
  * Some seqs are short jingles or sound effects, not songs. Seqs with no notes were skipped.
 
Top