{"id":20950667,"url":"https://github.com/suglasp/fallout4_fallout76_sfx_conversionkit","last_synced_at":"2025-08-24T10:13:58.572Z","repository":{"id":65279509,"uuid":"243094354","full_name":"suglasp/fallout4_fallout76_sfx_conversionkit","owner":"suglasp","description":"Fallout 4 and Fallout 76 sound (sfx) and music conversion kit in Powershell. Extract your favorite soundsamples in bulk and convert them to WAV (wave) or MP3. Fallout archive file (*.ba2) are native processed in Powershell code. Conversion of sfx files is done through use of external utils you need to download (see the README).","archived":false,"fork":false,"pushed_at":"2023-10-04T08:44:14.000Z","size":498,"stargazers_count":7,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2023-10-04T18:12:09.961Z","etag":null,"topics":["ba2","bethesda","cli","extract","fallout","fallout-76","fallout4","fallout76","fo4","fo76","fuz","music","riff","sfx","sound","soundsample","tool","utility","wave","xwma"],"latest_commit_sha":null,"homepage":"https://github.com/suglasp/fallout4_fallout76_sfx_conversionkit","language":"PowerShell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/suglasp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2020-02-25T20:20:48.000Z","updated_at":"2023-10-03T18:44:41.000Z","dependencies_parsed_at":"2023-10-04T14:33:17.336Z","dependency_job_id":null,"html_url":"https://github.com/suglasp/fallout4_fallout76_sfx_conversionkit","commit_stats":null,"previous_names":[],"tags_count":10,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/suglasp%2Ffallout4_fallout76_sfx_conversionkit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/suglasp%2Ffallout4_fallout76_sfx_conversionkit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/suglasp%2Ffallout4_fallout76_sfx_conversionkit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/suglasp%2Ffallout4_fallout76_sfx_conversionkit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/suglasp","download_url":"https://codeload.github.com/suglasp/fallout4_fallout76_sfx_conversionkit/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225275698,"owners_count":17448388,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ba2","bethesda","cli","extract","fallout","fallout-76","fallout4","fallout76","fo4","fo76","fuz","music","riff","sfx","sound","soundsample","tool","utility","wave","xwma"],"created_at":"2024-11-19T00:50:20.842Z","updated_at":"2024-11-19T00:50:23.210Z","avatar_url":"https://github.com/suglasp.png","language":"PowerShell","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Fallout 4 and Fallout 76 sound (sfx) and music Powershell conversion kit for PC.\r\n\r\n-----\r\n\r\n**What is does**\r\n\r\nToolkit that reads Fallout 4 or 76 game files, and extracts the audio/sound/music/sfx\r\nto a folder on your local computer/disk.\r\n\r\n-----\r\n\r\n**Notice**\r\n\r\nThis code or kit has nothing to do with Bethesda Softworks/Microsoft/Zenimax,\r\nand is only a small project I work on during my free hours.\r\nSecondly, this tool does not change or edit anything to the game files.\r\nIt only reads the game data files and extracts data from within the compressed/archived files.\r\n\r\n-----\r\n\r\n**Conversion kit updates, fixes and patches**\r\n\r\nUpdate 19/03/2020:\r\n- 'fo76_ba2_archive_extract_sounds.ps1' is a backport of script 'fo76_ba2_archive_extracter_early_test.ps1'.\r\nThe first one extracts only sound files (*.xwm and *.fuz files). The latter extracts all files from a 'General BA2' Archive type of files.\r\n- There are 3 Fallout BA2 known archive types:\r\n1. GNRL = General Archive  -\u003e supported to unpack\r\n2. DX10 = Textures Archive -\u003e unsupported to unpack\r\n3. GNMF = PS4 Archive      -\u003e unsupported to unpack\r\n\r\nUpdate 22/04/2020:\r\n- Since Wastelanders update for Fallout 76, ba2 archives with voice files (like for example \"SeventySix - Voices\".ba2) do not contain xWMA (*.xwm) formats anymore, but the Skyrim Fuze (*.fuz) format.\r\nFuze files (*.fuz) are actually a format with xWMA data and also include lipsync meta data (*.lip).\r\nIn fact, a fuze file, is a file with two combined files stitched together.\r\n\r\nUpdate 05/01/2020:\r\n- Made some small fixes to the script.\r\n- Main functions arguments where not passed.\r\n- Arguments datatype is now pre-defined as string array\r\n- Extract path used a dot notation (Powershell), changed this so the script fill's in full path. Extract would fail to the Windows System folder when ran with a standard powershell startup shell.\r\n- Now extracts the *.fuz files and *.xwm files\r\n- Added new script convert_fuz_to_xwm.ps1 to convert fuz to xwm files.\r\n- Convert scripts now start conversion tools with High priority, for faster processing.\r\n\r\nUpdate 06/01/2020:\r\n- Convert scripts now support a custom path through the parameter -CustomDir \u003cdir\u003e\r\n- Script \"convert_wav_to_mp3.ps1\" got a bug that didn't trigger ffmpeg.exe\r\n- Updated comments in scripts with info how to run scripts and optional parameters.\r\n\r\nUpdate 07/01/2020:\r\n- The sfx extract script, fo76_ba2_archive_extract_sounds.ps1, will now auto include \u003cFallout install path\u003e\\Data when a custom path is entered.\r\n- Added -help parameter for cli help\r\n\r\nUpdate 11/01/2021:\r\n- Improved Fallout default game installation path checking in the main script(s)\r\n- Fixed a few typo's in comments\r\n\r\nUpdate 04/10/2021:\r\n- Small optimization in code.\r\n\r\nUpdate 22/02/2022 (NOTICE):\r\n- Bethesda.net launcher will be retired between April-May 2022. After that time, i will update the scripts to point default to the Steam version.\r\n\r\nUpdate 11/01/2023:\r\n- Changed routine to hunt down install paths for FO4, FO76, FO76PTS.\r\n  Bethesda.net launcher code is removed and also the \"fixed\" Steam installer locations.\r\n  The code now hunts down the paths from Valve Steam installer locations in Windows registry. (*)\r\n  (*) I've noticed, if you install a game in Steam, and later move it to an other Game Library in your Steam account,\r\n      Steam does not update the installation path of the moved game in Windows Registry. This is a bug in Steam.\r\n      In this case, fo76_ba2_archive_extract_sounds.ps1 will give you a warning the game path is not found.\r\n      To fix this, you need to use .\\fo76_ba2_archive_extract_sounds.ps1 -InstallPath \"\u003cdriveletter\u003e:\\SteamLibrary\\steamapps\\common\\\u003cgame_name\u003e\\\".\r\n\r\nUpdate 14/01/2023:\r\n- Script 'convert_fuz_to_xwm.ps1' is rewritten, so it does not need any 3rd party tools for extracting xwm data from all Fuze files.\r\n  The \"fuze\" subfolder and utility BmlFuzDecode.exe are made obsolete in order for the script to work.\r\n\r\nUpdate 29/09/2023:\r\n- Since a recent update of the FO76 ba2 archives, most \"SeventySix - Interface*.ba2\" files, localization and Miscclient archives only\r\n  returned a single file. Powershell converts this to System.String instead of System.Array (or System.Collections.Array).\r\n  This spawned sometimes errors while extracting.\r\n- Refactored small pieces of code and made some DataType improvements.\r\n- Did some research on the xwm file format. Seems to be a very specific format of the WMA Pro/WMA2 file format. Created for Xbox.\r\n  Only the FFMpeg open source project supports this data type. The once leaked W2K3 code, contains parts of early code for the format.\r\n  Technically, we could try to write or convert it natively in Powershell/.NET. But in the end it will be more error prone\r\n  to write this code and cost me lots of time reversing it. The header of xwm files, are quite simple RIFF format headers.\r\n  So I decided to stick with FFMpeg to decode and convert the xwm files to wave.\r\n\r\n-----\r\n\r\n**In high level overview, these are the steps we do**\r\n\r\n- Search inside the *.ba2 Fallout archive files for *.xwm (or now more recent also *.fuz) files.\r\n- Extract these files and write to disk.\r\n- Run a second tool to convert the *.fuz files to *.xwm.\r\n- Run a third tool to convert the *.xwm files to RIFF (wav files) - relies on FFMpeg.\r\n- Run a fourth tool to convert the *.wav files to mp3 [optional] - relies on FFMpeg.\r\n\r\n----\r\n\r\n**Future project steps**\r\n\r\n- (done) Include Powershell code for in bulk, read and extract *.fuz files natively in Powershell.\r\n         Container format that holds .lip + .xwm and extract the xmw file data.\r\n- (skip) Include Powershell code for in bulk, read and decode *.xwm files natively in Powershell.\r\n         Same format as Microsoft XAudio2 xWMA format, and convert it to wav files.\r\n- (todo) Make it so, if we detect Powershell version 7+, we process in parallel.\r\n\r\n-----\r\n\r\n**Current method to extract**\r\n\r\nSteps:\r\n1. This step takes the longest. This will generate a lot of Gigabytes of data!\r\nDownload the Extraction tool [here](https://github.com/suglasp/fallout4_fallout76_sfx_conversionkit/blob/master/fo76_ba2_archive_extract_sounds.ps1) or download the [B.E.A. Tool](https://www.nexusmods.com/fallout4/mods/78/?).\r\n\r\nParameters (optional):\r\n\r\n`.\\fo76_ba2_archive_extract_sounds.ps1 [-InstallPath \u003cfallout4_fallout76_installpath\u003e] [-Fallout \"Fallout4\"|\"Fallout76\"|\"Fallout76PTS\"] [-ExtractDir \u003cextract_dir\u003e]`\r\n\r\nOpen powershell and run `.\\fo76_ba2_archive_extract_sounds.ps1 -Fallout \u003cFO_game_you_want\u003e -ExtractDir \u003cfolder_to_extract\u003e`.\r\n\r\nDefault, the script will search in the Steam installation folders it finds in Windows Registry.\r\nIf you installed FO4 of FO76 in a custom path, use the flag `.\\fo76_ba2_archive_extract_sounds.ps1 -InstallPath \u003cpath\u003e`.\r\nThe script above will search all *.ba2 files, and will start extracting all *.xwm files or *.fuz files automatically.\r\n\r\nDefault, the script will target 'Fallout76'. If you want Fallout 4 or Fallout 76 PTS,\r\nthen use the flag `.\\fo76_ba2_archive_extract_sounds.ps1 -Fallout \"Fallout4\"` or `.\\fo76_ba2_archive_extract_sounds.ps1 -Fallout \"Fallout76PTS\"`.\r\n\r\nDefault, the script will create a subfolder \"extracted_sfx\" in the folder from where it is ran.\r\nIf you want to change the extraction path, use the flag .\\fo76_ba2_archive_extract_sounds.ps1 -ExtractDir \"\u003cfull path to folder\u003e\"\r\n\r\n\r\nFor your information, the files of interest are for each Fallout[4|76] game in the \"\u003cgame install folder\u003e\\Data\".\r\n\r\nFor FO76, you want mainly these files for sfx/music extraction:\r\n- SeventySix - Sounds01.ba2\r\n- SeventySix - Sounds02.ba2\r\n- SeventySix - Voices.ba2\r\n- SeventySix - Startup.ba2\r\n- SeventySix - ??UpdateStream.ba2  (Where ?? is a double number from 00, 01, 02 to .. for each Fallout 76 released Bethesda patch)\r\n\r\nFor FO4, you want these files for sfx/music:\r\n- Fallout4 - Sounds.ba2\r\n\r\nThe extract script will locate the archive files automatically.\r\nWhen running the script, it will index all *.ba2 files and start extracting all files.\r\n\r\n\r\n2. Prepare for conversion of xwm files to wav/mp3\r\nCopy convert_wav_to_mp3.ps1, convert_fuz_to_xwm.ps1 and convert_xwm_to_wav.ps1 to the extract folder.\r\n- Make a subfolder \"ffmpeg\"\r\n- Make a subfolder \"xWMAEncode\"\r\n- Download [xWMAEncode.exe](https://www.nexusmods.com/skyrim/mods/32075/?tab=files) or [xWMAEncode.exe](https://www.microsoft.com/en-ca/download/details.aspx?id=6812) to the folder \"xWMAEncode\" and extract to folder \"xWMAEncode\".\r\n- Download [ffmpeg](https://ffmpeg.org/download.html#build-windows) static compiled for Windows to \"ffmpeg\" and extract to folder \"ffmpeg\". (*)\r\n\r\n(*) Inside the \"ffmpeg\" folder, there needs to be a \"bin\" folder (so, ..\\ffmpeg\\bin) where you put the ffmpeg.exe file.\r\n\r\n\r\n3. follow each step as described. This will generate a lot of Gigabytes of data!\r\n- `Start powershell`\r\n- `Set-Location \u003cpath_of_ExtractDir\u003e` (see above with fo76_ba2_archive_extract_sounds.ps1)\r\n- `.\\convert_fuz_to_xwm.ps1`    \u003c- this converts all *.fuz to *.xwm files (raw)\r\n- `.\\convert_xwm_to_wav.ps1`    \u003c- this converts all *.xwm to *.wav files (raw)\r\n- `.\\convert_wav_to_mp3.ps1`    \u003c- this converts all *.wav to *.mp3 files (compressed)  [optional]\r\n\r\nParameters (optional):\r\n`.\\convert_XXX_to_XXX.ps1 [-CustomDir \u003ccustom_path_dir\u003e]`\r\n\r\n\r\n\r\nHave fun,\r\nPieter De Ridder aka Suglasp\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsuglasp%2Ffallout4_fallout76_sfx_conversionkit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsuglasp%2Ffallout4_fallout76_sfx_conversionkit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsuglasp%2Ffallout4_fallout76_sfx_conversionkit/lists"}