How to read minipsf2 code and edit it or isolate individual samples? by marcoxD95 at 3:16 PM EST on January 10, 2026
I have a bunch of minipsf2 files and would like to play individual samples with Highly Experimental plugin so basically editing the data of the minipsf2 so that only a single instrument plays instead of all but I cannot read the code. Its just some garbled stuff like ÐópA°Ø!.

I already looked if there are any players who can do this but sadly doesnt seem to be the case. There is interestingly enough a tool called psfisolate on github by Nisto that can handle psf1 files but not psf2. I already tried reaching out to him on github but no idea if he is still around. Maybe here on the forum?

Anyway, because of this I wanted to do it the bruteforce way and just edit and split the minipsf2 code.

Any starting points or guides how this is done? I did try looking up some basic information but somehow all wikis lead to a website by some Neill Corlett and its no longer on the web. It would already help if I had readable code in the editor.


edited 3:17 PM EST January 10, 2026

edited 3:18 PM EST January 10, 2026
by WDLmaster at 4:15 PM EST on January 10, 2026
Yes, PSF looks garbled because it's zlib compressed. "VGM toolbox" can unpack some of them: goto xSF tools -> PSF2 -> PSF2 unpacker. Drag your minipsf files onto the panel. It creates subfolders with uncompressed RAW data in it. Depending on the game (more precisely the driver) it can't unpack everything. But samples are no individual files! Those ADPCM samples are simply arranged in one big chunk without headers or anything.
by marcoxD95 at 5:59 AM EST on January 11, 2026
Hm, interesting.

The instructions you provided worked perfectly. Though the minipsf2 doesnt really contain much of anything except a list of libraries or archives it loads which are in one big driver psf2lib file.

And I guess you are correct. When extracting the psf2lib I just get a bunch of HD, BD and TD files (which are the raw Silent Hill 2 game extracted archives) which I can again extract with psf2 unpacker and then I get the raw actual files like soundcd.irx which probably includes all the samples as you said in one big ADPCM chunk... Which isnt really helpful in my case though. I could still try to bruteforce it and split the ADPCM file but then I have to arrange the samples exactly as they play in a rendered file which is coming close to recomposing the track from scratch and is a lot of work.

The game in question is Silent Hill 2 btw. My guess is Nisto just repacked all the sound data into an psf2lib. The thing is, for the first game I could actually extract individual samples via psfisolate that Nisto wrote as well but I guess its more complicated with the psf2 format?

Many of the tracks already are splitted into individual samples but thats more because they are dynamic pieces that keep fading in more samples the more the player progresses. But I wanted to do the same with the ambient pieces as well but they are not splitted into individual samples. Maybe some of the extracted files (cdvdnul.irx, fakesif.irx, libsd.irx, psf2.irx, sd_cd.irx, sdstr.irx, sh2.irx, soundcd.irx) actually includes the information what part of the ADPCM chunk is what sample but you guessed it, cant read the irx code. Supposedly irx files are for PS2 consoles.

Maybe since its Silent Hill 2, which I guess is considered rather popular, there are tools that can do what I want but couldnt find one yet than can extract individual samples from the music compositions.

EDIT: I actually tried to just load the raw extracted SH2 PS2 iso files into PSound and loaded files like TD 28 - BGM 50000.BD into it and that way I can actually play and extract the individual samples of the tracks! Still, I would need to re-arrange them completely how they play and loop in the tracks and thats hell of a lot of work but not impossible.

Kinda weird that there doesnt seem to be a better way to do this currently. I really hope someone like Nisto comes up with a tool like psfisolate that also works on psf2 files since I guess that doesnt exist yet, unless I am just too dumb to find it. (https://github.com/Nisto/psfisolate)

Edit2:
Did manage to extract the samples with a python script from Nisto's github named ps2-bankmod. Thing is, they are in Sony ADPCM .vag and I cannot seem to directly edit the audio in Audacity so probably have to convert it to wav and then back and then replace the samples directly in the BD, TD, HD and then repackage it as a psf2lib. Not optimal but its one way at least so far. Though I might actually first try to just delete all samples but one and repackage the minipsf2 and see if it actually still plays properly just with one sample.

Currently I do not seem to figure out how to compress all these BD, HD, TD files back into a big psf2lib file.

Edit3:
Hm, apparently there is a easier method since the documentation in Nisto's SH2 rip suggests I can edit the psf2.ini to actually specify a sample via sh2.irx hd bd td [id] [parts] where the last thing is basically the sample if I understand it correct. This way I could edit the minipsf2 to only play one of the samples but I do not find a way to pack the extracted psf2.ini back into the minipsf2 file or only edit the psf2.ini.

I did try that PSF2 settings updater in VGMToolbox but doesnt work and just makes the minipsf2 that come with Nisto's rip unplayable. But this sh2.irx command thing seems to be exclusive to Nisto's rip in general so I guess his files arent standard minipsf2 files or use a custom driver.

edited 1:18 PM EST January 11, 2026
by marcoxD95 at 9:10 AM EST on January 12, 2026
Pretty sure this stuff with the parts doesnt work for what I want. Now sure where the difference is between parts and samples but I did try to hexedit my psf2.ini change with lib compression on top back into the original minipsf2 file and the file just didnt play anything anymore.

Guess I try that method to replace all but one .vag sample with empty audio streams and then compress it with VGMToolbox into a minipsf and hope it only plays that single sample then. Whats weird is that VGMToolbox expects files like MODHSYN.IRX which just dont exist in Nisto's ripped driver module set. Have to source them from somewhere else via google but aside of that it also wants an SQ file and theres only TD... I guess I am stuck again.

Still looking for some input if anybody happens to have some knowledge regarding muting samples inside minipsf2 files. I did find some information regarding this even in this forum here but it seems mostly to be related to psf1 files.


Go to Page 0

Search this thread

Show all threads

Reply to this thread:

User Name Tags:

bold: [b]bold[/b]
italics: [i]italics[/i]
emphasis: [em]emphasis[/em]
underline: [u]underline[/u]
small: [small]small[/small]
Link: [url=http://www.google.com]Link[/url]

[img=https://www.hcs64.com/images/mm1.png]
Password
Subject
Message

HCS Forum Index
Halley's Comet Software
forum source