It's still a little rough around the edges and won't automatically detect where sample data is located, so the sound data offset needs to be entered manually. I hope to be able to simplify this, but it's difficult - I'll keep trying.
In the case of Crash Team Racing, run the program with these arguments: psfisolate filename.psf 0x9000
Some important things to note:
It does not yet support miniPSF (which CTR is, technically); this means that, if additional samples are loaded from separate PSFLIBs, those will still play. To be on the safe side, you can convert the PSF set to standard self-contained PSFs (this would be necessary for the "Intro", "Map" and "Dingo Canyon" themes) beforehand using this Python script:
If you do convert to standard PSFs, change the sound data offset to 0xC1000: psfisolate filename.psf 0xC1000
Finally: if something comes out silent, it most likely means the respective sample wasn't played. psfisolate has no knowledge of which samples are utilized or not, so just skip those. There are a lot of samples that are not used in some cases. For instance, the first 38 samples of Crash Cove are never played.
For posterity's sake, here's what I found out about the Crash Team Racing PSF set:
* the PSF driver is badly patched, so only PSF players that are forgiving or "aware" of this rip should actually play it * sequence data is stored at ~ 0x800C8200 * soundbank is stored at ~ 0x800D0000 * kart.hwl is stored at ~ 0x800C0CA4 * the sequence data contains a table of instrument attributes (including volume), near the top * the table preceding the sample data contains 16-bit indexes which maps into the first kart.hwl table * indexes maps to sample sizes, in the same order the sample data is stored, so indexes cannot be changed unless respective sizes are the same * kart.hwl structure / binary template for 010 Editor (w/ some guesses and probably incorrect info)