Loading standalone at9 files in FMOD Studio Low Level (1.08) for PS4


If I understand correctly, this version of FMOD should be built with at9 support. AT9 is the recommended format for PS4 as per the documentation.

I’m trying to load up some standalone .at9 files (not banks) converted with the Sony PS4 SDK at9tool.exe tool (not fmod).

Whenever I call System::createSound() on one of them I always get FMOD_ERR_FORMAT, and libfmodL says:

[LOG] SystemI::createSoundInternal : filename = /app0/sounds/phy/wood/crate_scrape.wav.at9 : mode 00200208
[ERR] CodecFSB5::readHeader : Header check failed. Not an FSB5
[ERR] CodecOggVorbis::openInternal : failed to open as ogg
[ERR] CodecMOD::openInternal : ‘M.K.’ etc ID check failed [??B?]
[ERR] CodecS3M::openInternal : ‘SCRM’ ID check failed [?B?G]
[ERR] CodecXM::openInternal : 'Extended Module: ’ ID check failed [RIFF]
[ERR] CodecIT::openInternal : ‘IMPM’ etc ID check failed [RIFF]
[ERR] CodecMIDI::openInternal : ‘HThd’ ID check failed [RIFF]

I’ve also tried setting suggestedsoundtype = FMOD_SOUND_TYPE_AT9 in FMOD_CREATESOUNDEXINFO with no luck.

Does this mean I have to encode them differently (perhaps in fsb banks with the SoundBank Generator), or that this lib has no built-in at9 support?
Any help would be greatly appreciated.
Thanks in advance

That is correct, AT9 is the recommended format for PS4 however we do not support loading standalone .at9 files encoded with the Sony tool. To encode AT9 for use with FMOD please use FMOD Studio (creating banks), FSBank Tool (creating FSBs) or FSBankLib (creating FSBs).

Thanks for the info.

This is a port. Therefore rearranging the sounds in a bank-friendly way would be a very time-consuming task. The two approaches I came up with are:

  • Creating a single sound bank per audio file
  • Creating a big fat bank with everything and load it as a streaming bank and accessing audio files as subsounds as if they were loose files on disk.

What would be the best approach?

I’d recommend encoding each audio file into a single sound FSB, you should be able to mirror your existing workflow quite simply that way.