FMOD Sample Bank Extraction Tool
FSB Extractor - FMOD Sample Bank Extraction Tool
With the tool, you can display and extract the sound samples contained within an FSB file. FSB stands for "FMOD Sample Bank". FSB files are a common filetype for storing audio in some games. Supports the FSB3, FSB4 and FSB5 file formats.
This program was originally made to open the FSB files of "Dragon Age", but has since been expanded into a general FSB Extractor.
Extracted sound samples are written to "%TEMP%\FsbExtractor\". You can open this directory from the Show menu or by pressing [F12].
You can also choose to extract to a specific folder by pressing [F6]. Make sure you have write access.
When using the "Extract & Run" feature, it's possible to use a "Custom Sound Player" to play the extracted file. Might be useful for ADPCM.
This feature will circumvent your system's file association. See below for more info.
Games Using FSB Files
Here is a very incomplete list of games with FSB files, based on which files this tool has been tested on.
Have you tried this tool on any games not listed here? If so, I would love to hear which one and the version of FSB files its using.
- BioShock FSB3. ADPCM format.
- BioShock 2 Singleplayer: FSB4, Multiplayer: FSB3.
- Dragon Age: Origins FSB4.
- League of Legends FSB4. MP3 frames have space between them, use the option "MP3 Frame Verification".
- Natural Selection 2 FSB5. Used to have FSB4 during alpha/beta.
- Orcs Must Die! FSB4.
- Orcs Must Die! 2 FSB4.
- The Witcher 2 FSB4. All samples here makes use of the Ogg CELT format. Google "tw2unfsb".
- Don't Starve FSB5. The "MP3 Frame Verification" option should be on.
- PlanetSide 2 FSB5. The FSB files are inside the many "Assets_XXX.pack" files. ADPCM and Ogg Vorbis format.
- DuckTales Remastered FSB5.
- Deus Ex: HR FSB4. Contained within the BIGFILES.
- Alan Wake FSB4.
- Mafia II FSB4.
- The Walking Dead FSB4. Requires the option "MP3 Frame Verification" to be on.
- World of Tanks FSB4.
- World of Warplanes FSB5 (Closed Beta).
- MechWarrior Online FSB5.
- Strike Suit Zero FSB4. Has some interleaved multichannel MP3 samples.
- War Thunder MMO FSB4. Headerless Ogg samples.
- Kingdoms of Amalur FSB4. Some samples have basic headers.
- Shantae: Risky's Revenge FSB5. Mainly MP3.
FSB Extractor Changes | 2016 Oct 21
- The "Set Offset" action was changed to "Scan from Offset". Before a header had to be exactly at the given offset, or it would fail, now it will begin a search from the given offset.
- Header size of the opened FSB file is now specified in the statusbar. The other header size refers to the combined header size of all samples.
- Fixed an issue with writing sample data in rare cases where not all the data could be read. Previously, invalid data could be written.
- FSB5: With verbose logging on, the file data offset and size of a sample's extra properties are now reported.
- Sample Tab: Sample attributes are now aligned to make things a little easier to read.
- Improved the error message for failing to open an FSB file, to also mention that the file content may be encrypted.
- Added a column sort indicator glyph for both listviews.
- Replaced several icons, including the main icon.
- Double-clicking on the directory listing path header, will allow you to edit the current path.
- Fixed loading of FSB5 samples without nametable.
- FSB5: Samples without an extra freqency header now properly take their freqency value from the mode/flags value.
- Added warning on the Sample tab for multichannel samples. That is samples which have more than 2 (stereo) audio channel.
- Reworked the entire configuration system. This unfortunately means that previous settings from an older version no longer works.
- Moved the "Entries" menu items to a new right-click popupmenu for the listview.
- Added a "Copy Sample Names" to the right-click menu. It will copy the names of selected samples to the clipboard, respecting the current sort order.
FSB Extractor Changes | 2014 Mar 10
- Fixed some IO errors that could occur in cases of bad FSB files. This was especially noticeable in the directory listing.
- FSB5 Samples stored in Celt (12) format is now detected as Ogg Vorbis instead of unknown.
- The INI settings file is no longer just named "config.ini", but will have the same name of the main EXE file, but with an INI extension. So if the EXE file is renamed, it will use a different INI file.
- The directory listing now shows all sub-directories in addition to FSB files.
- Listview columns headers are now loaded dynamically, depending on which columns are needed for the given FSB version.
- Added detection for XMA samples.
- There is now an option to allow only one instance of the program to run. If you have FSB files associated with the program, it will open it in the instance that already exists.
- Fixed some data offset issues for certain FSB5 samples, which made the extracted files unable to be played.
- Corrected the bits used to read the FSB5 sample's extra type (8 to 7 msb) and size (23 to 24).
- The default path used to save the extracted samples was changed to "%TEMP%\FSB Extractor\". This path can be changed in the INI file.
- New feature to scan for sub-FSB-files [F8] within the current file. This makes it possible to find FSB files that are stored within larger container files, as seen in some games.
- New command line slash command "/S". This can be used to toggle deep scan when doing command line extraction. It will then scan for sub-FSB-files within the main file. Use the parameters "/S[0|1]" to toggle.
- Removed a few keyboard shortcuts for the options menu.
- Made it possible to clear the Sound Bank log [Ctrl+B], just like it was possible to clear the Extraction log [Ctrl+E].
- Fixed a rare error that could happen with the MP3 Frame Verifier on. If a valid frame was found near the end of the sample data buffer, it would read past the end of the buffer.
- Because file handles now remain open even after FSB headers and samples have been read, it is now possible to close the current file [Ctrl+W].
- Fixed the WAVE header of ADPCM files having their "bitsPerSample" written as 5 instead of 4.
FSB Extractor Changes | 2013 Jul 23
- Fixed sample sorting by duration, which got broken in the last release.
- The Directory Listing is now still updated, even if the file opened was invalid and failed.
- Fixed sorting error for certain columns in the main sample listview.
- Fixed sorting error on the directory listing tab.
- Added notice for Ogg samples that they are headerless and unplayable after extraction.
- Sample names of FSB files with basic headers, will now continue the numbering of the first sample's name if possible, otherwise they just start from zero.
FSB Extractor Changes | 2013 Mar 09
- Now supports FSB files with basic sample headers.
- The column previously named "Length" has been renamed to "Duration" to make it more clear what it means.
- Sample duration is now shown without unused time units. E.g. a sample with the duration less than a minute, will not show minutes as being zero.
- The path of the directory listing is now shown in a header.
- It's now possible to go to the parent directory from the directory listing tab.
- Added option to open the extraction folder under the Show menu. Shortcut is [F12].
- New option to show or hide the log tabs at the bottom.
- When trying to open an invalid FSB file, the first 4 bytes or "FileID" is shown in parentheses.
FSB Extractor Changes | 2013 Feb 11
- When writing a WAVE header for any non PCM format, a "fact" chunk is now written into the RIFF.
- Odd length sample data is now padded with an extra byte in the RIFF header.
- Proper sample mode flags are now used for FSB3 and FSB4 files.
- If the program is opened without any parameters, the directory listing will now show the content of the last opened file.
- It is now possible to set the extraction path by editing the INI file. By default the "Dumps" directory in the program folder is used.
FSB Extractor Changes | 2013 Jan 13
- Fixed an error that could happen at times when you would drag and drop an FSB file into the program to open it.
- Corrected a display error when reporting the ID of an unknown sample extra type.
- Fixed detection of MP3 sample data in FSB3 and FSB4 files. Was being detected as PCM due to an error.
- FSB5 sample format is now properly detected from the header sample format ID.
- Ogg Vorbis sample format is now supported. This format is displayed as a yellow icon.
- No longer adds a file extension, when the extracted filename has a valid one already.
- Fixed command line log saving having many duplicate log entries when more than one FSB file were handled. Was caused by the log not being cleared between each file open.
- Added command line switch to enable or disable verbose logging. The command is "/V[0|1]". See "readme.txt" for more information.
- Message box errors will no longer annoyingly be displayed while extracting files from console mode.
FSB Extractor Changes | 2013 Jan 04
- Better descriptions of the various sample flags.
- Added Directory Listing tab at the bottom. This will list all the FSB files in the same directory as the currently opened one. Quite useful for jumping between files of the same game.
- Reworked a few of the stored variables, so if you're upgrading a previous release, some minor settings will be reset.
- If an FSB file has multiple entries with the same sample name, they will be tagged with (2), (3) etc to avoid conflict.
- The bottom logs and directory listing tabs now display how many entries they each contain.
- It is now possible to specify more than just one FSB file in the command line.
- Fixed a couple of errors that could occur when the log lists were being cleared and populated.
FSB Extractor Changes | 2012 Dec 20
- Greatly increased the usefulness of the log by splitting it into "Sound Bank", "Sample" and "Extraction" specific details.
- Added a verbose mode option, which is on by default. It will cause more details to be reported to the different logs during the opening and extraction process.
- Log font changed from Courier New to default system font. This can be customised from the "config.ini" file if desired.
- Added support for command line parameters, use "/?" or see help file for specifics. Let me know if there are more commands that would be useful.
FSB Extractor Changes | 2012 Jul 03
- Improved FSB5 file handling. Now extra sample parameters are properly loaded, such as loop data. This also fixed the issue in previous versions where FSB5 files with more than one extra were not read properly.
- Greatly improved MP3 sample detection.
- Chosen sound app is now saved between sessions.
- The right side log listbox, now remembers its width between sessions.
- Will now write the correct wave header tag (3) for floating point sample data.
- No longer writes WAVE header for samples in MP3 format, no matter what the "Add Wave Header" setting is. There really was no point in doing that.
- Selecting or deselcting many samples at once should no longer slow down responsiveness due to log listbox updates.
- Corrected the calculation for the last sample data size of FSB5 files. It failed to adjust for FSB header sizes.
FSB Extractor Changes | 2012 Jun 29
- Fixed how a few of the options failed to get saved between sessions.
- Now uses a modern style open file dialog.
- The sample time duration now shows milliseconds as well. Invalid entries shows nothing at all.
- If column widths are changed, they are now remembered between sessions.
- Added an "MP3 Frame Verification" option. A full explanation of this option be found in the readme file. Samples extracted from "League of Legends" requires this option to play.
- Will now properly use the system font for the listview and statusbar instead of always using "Tahoma".
FSB Extractor Changes | 2012 Jun 26
- Pressing enter on an entry will now properly use the chosen sound player app.
- Default colors for background and text now loads from windows preference.
- New column showing the format type of the sample. Format 17 is ADPCM, 85 is MP3 and 1 is just raw PCM.
- Can now detect MP3 files whose headers doesn't start until offset 0x20.
- WAVE headers are now written for MP3, when the option to do so is enabled.
- Added option to append file extension to the extracted file. The extension is determined by the sample format.
- Made an option to toggle the use of the selected player app. It's more useful to use proper file association, now that file extensions can be automatically added.
- Fixed a "BitsPerSec" rounding error when writing WAVE headers. This could in some cases cause the extracted file to be unplayable in most players.
- Added icons to each sample which are determined by the sample format. Unknown/invalid = black; PCM = green; ADPCM = teal; MP3 = red.