11 March 2016 - Forum Rules

Main Menu

Final Fantasy X convert voices to wave format

Started by SaiyanER, January 09, 2014, 04:16:04 PM

Previous topic - Next topic


Hello all,

I have extracted all voices from Final Fantasy X. I would like to convert them into wave format because for the moment I can't play them. The orginal format is .vs (vagstream I think).

So, I would like to create a programm (in C++ or others) to decode and convert them into wave format.

Can anyone tell how can I do that.

Thank you.

January 09, 2014, 10:52:24 PM - (Auto Merged - Double Posts are not allowed before 7 days.)

No one can help me ?


I'm afraid I can't help all that much, but since nobody else does I'll try to do what I can.

I'm very familiar with the SNES audio compression format, BRR, as I've written a WAV->BRR and BRR->WAV converted. Seach the Utilities sections for "BRRTools".

The sound processor used in the SNES was made by Sony, and the sound units in the PS1 and the PS2 are direct sequels of it. The PS1 uses a similar format called VAG/VAB. I've always been willing to add it to BRRTools, but was too lazy to do so so far. Pehaps someday.

Basically the main difference is that it uses blocks of 2-byte header and 28 samples (stored as nibbles in 14 bytes) totalizing in 16 bytes blocks (the SNES uses 1-byte header + 16 samples : total 9 bytes).
The idea however is the same : There is a shift count, and a prediction (aka filter) lookup number + a loop and end flag in the header of each sample.

I don't know how much the PS2 format differes from the PS1 (if it does at all) but that's already a start.

PS : Anyways, you should search for a tool called "PSound". This converts PS1 audio, but could also work with PS2 if the format is the same ?


I have already tried  vgmstream but it didn't work.

Any idea on how decode a ADPCM compressed sound ? I think I have to follow this way to play the sound I  have extracted

Below, it's the header of .vs file. At offset 0x0c we have the lenght of the file in sector. But I dont know the meaning of the offset 0x11 and 0x14. Can anyone help me ? I know the song is played at 48000Hz Mono 16bit but I don't find a link between those offsets and the song format.


Obviously this is the same format as the one the PS1 uses (and that I already mentioned). you can see columns of 0x02 which is the flags for a looped sample, the byte that is before it is the lookup index and shift amount for prediction, and the 14 following bytes are sound data. The format is described on nocash's website. I have no idea how the header works unfortunately.

You should really try PSound.


Ok thank you Bregalad.

Can you give me the link to the site who describes the format.

January 12, 2014, 10:50:41 PM - (Auto Merged - Double Posts are not allowed before 7 days.)

I have already PSound, but I would like to build my own app.