Best way to Extract PS2 ADPCM Music? by NoVaX8000 at 1:54 PM EST on February 7, 2011
Hi,
I'm wanting to know what would be the best way to obtain PS2 ADPCM music, more specifically located in a file such as PAK or 000 for example.
Programs like MFAudio or Cube Media Player fails in this scenario since I have to find the Interleave myself. Even so, some of the music I can never get to sound correctly (a lot of crackling, channels never in the correct channel if that made sense).
Is there some type of Hex-Editing involved or something? I tried hex editing out the music in MUSICTS.PAK from TimeSplitters 3 as I would like to have the music in the ADPCM format, but vgmstream had interleaving issues.
What could I possibly be doing wrong? How do other people do it?
A) Depends on what format we're dealing with B) The size of the archive C) DON'T USE MFAUDIO OR CUBE MEDIA PLAYER (OUTDATED TOOLS) D) When "hexing," do you see a "magic" word in the stuff? Literally a word in plain text. E) I can do stuff due to constantly ripping and learning from the best after 3 years :P F) For stuff like this I would go for VGMToolbox unless another custom extractor or quickbms script exists. G) If it sounds wrong, you might be extracting the data incorrectly (size or cutting out data) but who knows.
But yea, post a sample if you want. Or rather a few MBs from the beginning of the archive (like 16MB or w/e since small stuff in kb doesn't quite work most of the time)
I agree with bxaimc on all of his points. Since it is headerless most of the time, you need to understand what it looks like in a hex editor. Fortunately, it's the easiest to identify of all streams. Hop on the tracker and grab some PS2 streams with "Sony ADPCM" in the title. Open them in a hex editor and look at the data. You'll see what I mean.
Also, join the IRC channel and ask questions. People don't mind helping those who are really trying to understand how to do it right.
If you simply do not want to take the time to learn (or have more important things to do), I would recommend FastElbJa's ADPCM Player. It's the best automatic PS2 ADPCM ripper, but you still need to figure out interleave, etc... when you listen or add generic headers. Also, given the headerlessness (making automated ripping very hard) of Sony ADPCM, it can screw up too.
I'm unsure on what is actually needed. The 1GB PAK file? One of the tracks extracted by the tools suggested? I don't see how cutting out data in the file with hex editing would help..
Tried both VGMToolbox and FastElbJa's ADPCM Player. I was still running into issues.
I couldn't even get the ADPCM Player to actually play anything & it kept on displaying "unhandled exception has occurred in your application" messages (sometimes unavoidable). It did extract fine though, but I still have crackling and pops in the music (even when the program does detect the interleave)..
Although I did notice some sort of pattern in a hex editior at the beginning of some other adpcm files before the numbers really kick in (even tried copying them into another file). Which hasn't exactly helped, yet.
Sorry for not replying earlier, as I was quite busy.
Anyway, here's a sample of the first 16MB of the PAK file from TimeSplitters 3. http://www.multiupload.com/49O4NEVP8N
Also, while I'm at it, I thought I might as well upload some problematic tracks from TimeSplitters 2 (as-is on the original disk), which vgmstream doesn't play properly (interleaving problem it seems). Only 4 tracks, the rest seem to play fine. http://www.multiupload.com/R9A4O2SB3Q
There were changes that went on with the MIB support that we had that now it causes some problems with files that previously worked. Anyway, here's a fix to the TS2 files.
I just did my own hex rip of TimeSplitters Future Perfect a couple of months ago. Most of the music files play fine in Winamp with VGMStream but some jitter. I just used MFAudio to play the problematic files. If it helps any, here are my notes from when I manually hex ripped the music from the PS2 MUSICTS.PAK file:
Please note that I only ripped the music and not all of the cut-scene files (in several languages). If you want the hex values for the cut-scenes, I can post them as well.
Thanks a lot for the help, much appreciated. I've listened to the fixed tracks, and they're perfect. I have only started using vgmstream recently, so I didn't know the 4 tracks previously worked.
Is there absolutely no way to bypass the annoying jitter/pops/crackles in vgmstream with some tracks? If there's a way, I'd really like to know.
I prefer not to use MFAudio that much anymore since I know it clips off the end of the tracks, same with Cube Media.
How exactly do you input the Interleave with hex editing by the way? I'm a complete newbie when it comes to hexing.
-snip-
Edit: Well I hex-ripped out Breaking and Entering using those offset values specified above, but the track plays at 44100Hz instead of 32000Hz in vgmstream? o.O
Is there absolutely no way to bypass the annoying jitter/pops/crackles in vgmstream with some tracks? If there's a way, I'd really like to know.
Sony ADPCM is headerless and vgmstream's interleave detection is not perfect for .mib files. You can add a GENH (GENeric Header) header to force a specific interleave. VGMToolbox has a GENH creator or you can find the original GENH Creator (sorry, cannot find the link now).
Is it possible to hexedit the file so vgmstream will play at the correct frequency?
I'm still a bit lost on this. With the offsets, how exactly did you figure them out? It would be good if I knew, because it would sure help me for other games if hex editing is indeed the best way on extracting ps2 adpcm files.
I kinda tried to copy the way you chose the offsets, and tried it on the very first track (The Year Is 2401. Humankind finds itself...). The offset I chose was "800-43B46A". Is this correct?
Anyway, please do list the Cutscene information. Just English will do (not interested in other languages :P). Thanks.
I'm not really keen on spending $80 on a Hex Editing program :p The program I'm using now is HxD, and I don't see a Hex Calculator accessible within the program.
Edit: @snakemeat: Thanks, I'll give that a try. Edit: Oh cool. I used the Vgmtoolbox GENH creator to fix up the tracks that do not play at the correct frequency/interleave in vgmstream. Thanks for that, it works quite well.