Ads keep us online. Without them, we wouldn't exist. We don't have paywalls or sell mods - we never will. But every month we have large bills and running ads is our only way to cover them. Please consider unblocking us. Thank you from GameBanana <3

Create sound/music mods for BotW (Switch)

A Tutorial for The Legend of Zelda: Breath of the Wild (Switch)

No ads for members. Membership is 100% free. Sign up!

Updates

Create sound/music mods for BotW (Switch) 2y
  • Addition Added methods for .bfstp files

Custom audio for BotW

INFO:

This tutorial is going to cover multiple different types of audio replacements, such as music, voices, and sound effects. Some programs you will need to find on your own, but can be found with a quick Google search.

What you'll need for either

  1. Switch BotW dump of basegame, update + DLC (This tutorial by CraftyBoss will help)
  2. BCFSTM-BCFWAV-Converter by Aboood40091
  3. Sarc_tool by Aboood40091
  4. Foobar2000 and the vgmstream plugin
  5. HxD
  6. Python 2.7 and 3.7
  7. Notepad++

LINK VOICES, SOUND EFFECTS

What you'll need:

  1. MK8 Voice Tools
  2. BotW Tools (RepackBars.py) by Aaaboy97
  3. Switch .bars extractor QuickBMS script by RandomTalkingBush

Assuming you have your dump of the game, you first want to find the .bars file you want to change. PlayerVoice (Link's voice) and others are in TitleBG.pack, and others can be found in other .packs. (romfs\Pack) To extract a .pack, drag it onto sarc_tool.exe, and it will output a folder with the contents. Other sound effects and voices can be found in romfs\Sound\Resource. To extract a .bars file, open QuickBMS, and open your script with it, then the .bars file, and a folder to save your files in. It should extract your sound effects. You can open these .bfwav files with foobar2000. Now, you need your sounds that you want to add into the game. They must be in wav 16-bit format and the same Hz as the original .bfwav. (you can check by opening the .bfwav in foobar2000, it says at the bottom) They also need to be the same name and be shorter than the original. Once you have your files ready, convert them to .bfwav using NW4F_WaveConverter.exe, and remove .dspadpcm from all of them. Now they need to be converted from big endian to little endian with BCFSTM-BCFWAV-Converter. If you open up an original .bfwav in HxD, look at the first line. It will say FWAVÿþ (or FF FE in offsets 04 and 05 respectively.) This is a little endian file. Open up your newly converted .bfwav and it will say FWAVþÿ (FE FF) which is big endian. Put all your new .bfwav files into the same directory as main.py. Create a new text file, open it with notepad++, and put this into it.

for /r %%i in (*.bfwav) do main.py -format FWAV -bom 1 "%%i"

Now, save it as a .bat file called something like convertFWAV.bat. Run this file, and it should show every file being converted. If not, and it says it will close in 5 seconds, open the .bat file and add python between do and main.py, so it looks like:

for /r %%i in (*.bfwav) do python main.py -format FWAV -bom 1 "%%i"

Now, every file should be converted to little endian. To make sure, open your new .bfwav with HxD and it should say FWAVÿþ (FF FE) at the beginning. We are now ready to inject the new .bfwavs with RepackBars.py. Create a new folder, call it something like NewFiles, and put all of your NEW .bfwavs in it. Put all of the ORIGINAL .bfwavs in a new folder called something like OldFiles. Put the original x.bars next to those folders. Open the BotW tools and find RepackBars.py, shift click the window and open command window here. Type RepackBars.py, drag x.bars into the cmd, then drag your OldFiles folder into the cmd, put a space, then drag your NewFiles folder into the cmd, and hit enter. It should list every .bfwav in the .bars file and whether it's being replaced, and create output.bars in the same folder as the script. If it doesn't work, add python before RepackBars.py and try it again. Rename output.bars to the original .bars file name. Skip to the end if this was what you wanted to replace.

BFSTP Files

Some .bars files may contain .bfstp files instead of .bfwav files. You can listen to the .bfstp files by converting them to .bfstm with BCFSTM-BCFWAV-Converter. Put your .bfstp in the same directory as main.py. Create a new text file, put this in it, convert it to .bat and run it.

for /r %%i in (*.bfstp) do main.py -format FSTM -bom 1 "%%i"

There should now be a new file with the same name but with the extension .bfstm, which you can listen to in foobar2000. To convert your .bfstm to .bfstp, create a new text file, put this in it, convert to .bat and run.

for /r %%i in (*.bfstm) do main.py -format FSTP -bom 1 "%%i"

You should be able to use the method at the end of the previous section, but have the .bfstp's instead of the .bfwav's.

MUSIC

What you'll need:
  1. Looping Audio Converter
This is a lot easier than modifying sound effects. Open the dump of BotW, find the music clip you want to replace. Most .bfstms can be found in romfs\Sound\Resource\Stream. I don't believe any are in .pack files, but you can extract .pack files by dragging them onto sarc_tool.exe. You can open up the .bfstm files in foobar2000. When you find the music you want to replace, take note of the Hz the file is in foobar2000, at the bottom bar.  Get your custom music and make sure it is about the same volume as the original, and the same Hz. Use looping audio converter. Change the output format to BFSTM, choose an output folder, and loop it if you want. Open the original .bfstm in HxD, and on the first line it will say FSTMÿþ (or FF FE in offsets 04 and 05 respectively) which is little endian. Open up your newly made .bfstm with HxD and it will say FSTMþÿ (FE FF) which is big endian. We want the new file to be little endian. Put the new file in the same directory as main.py (BCFSTM-BCFWAV-Converter) create a new text file, and open it with notepad++. Put this in:

for /r %%i in (*.bfstm) do main.py -format FSTM -bom 1 "%%i"

and save it as a .bat file called something like convertFSTM.bat. It should list the file and close fast. If it says exiting in 5 seconds, add python between do and main.py so it looks like this:

for /r %%i in (*.bfstm) do python main.py -format FSTM -bom 1 "%%i"

Now it should be converted to little endian. To check open the new .bfstm in HxD and it should say on the first line, FSTMÿþ (FF FE) Rename the new file to the same name as the original.

REPACKING .PACK

If your sound effect or music file did not come from a .pack file, skip this. Find sarc_tool, and your extracted files. Find the original file in the filesystem, and replace it with your new one. Now drag and drop your folder onto sarc_tool.exe. Wait for it to close automatically, and it should create a file called x.sarc. You can just change the .sarc to .pack and it will work.

USING IT IN-GAME

Open your sd card, and go to atmosphere\titles\01007EF00011E000\romfs. Now, put the new file you created where the original file was. Most .bars files go into romfs\Sound\Resource, and most .bfstm files go into romfs\Sound\Resource\Stream. If you needed to edit a .pack file, it goes in \Pack. You can use this tutorial I made to use LayeredFS.
Sign up to access this!
  • Evolnotion avatar
    Evolnotion Joined 2y ago
    Offline
    146 points Ranked 61851st
    access_time 10mo
    I just wanna say thank you for writing this guide. I was able to get Linkle's voice from the 1.6.0 WiiU version working on my Switch thanks to this, but I'm having an issue with modding the music.

    The custom music itself plays fine in game, but not before a distorted version of the original music plays for like a second or so. I can't figure out what I'm doing wrong here.
    Bananite
    URL to post:
  • LandisSeralian avatar
    LandisSeralian Joined 2y ago
    Offline
    787 points Ranked 42478th
    access_time 1y
    This tutorial needs to be updated to include instructions about using the compiled version of the bfstm converter rather than the source code.
    Bananite
    URL to post:
  • ttgalax avatar
    ttgalax Joined 1y ago
    Offline
    access_time 1y edit 1y
    hi it won't work when i want to convert the bfstm file fron big indian to litle indian help me plz i do excatly what it sayed
     in the tutorial for replace music. thank  :)
    Bananite
    URL to post:
  • access_time 1y
    quite usefil indeed

    Bananite
    URL to post:
  • EmpYoshi avatar
    EmpYoshi Joined 3y ago
    Offline
    51 points Ranked 56785th
    16 medals 1 legendary 1 rare
    • Returned 5000 times Medal icon
    • Returned 1000 times Medal icon
    • One month a member Medal icon
    • 6 months a member Medal icon
    • Returned 100 times Medal icon
    • 1 year a member Medal icon
    access_time 2y
    I'm trying to make a music mod and I followed all the steps and I have both Python versions but the both versions of the main.py scripts and they don't work. Please help
    Vienna Schnitzel
    URL to post:
  • leeanderthal avatar
    leeanderthal Joined 3y ago
    BotW Manager
    Offline
    5,943 points Ranked 1137th
    16 medals 4 rare
    • Became a Game Pioneer Medal icon
    • Achieved Game Manager clearance Medal icon
    • Submitted 50 Skins Medal icon
    • 10 submissions featured Medal icon
    • One month a member Medal icon
    • 6 months a member Medal icon
    access_time 2y
    What tools can be used for converting to BFSTP? Some BOTW sounds are in BFSTP format, like the "Npc_DressFairy_00-03" sounds in Sound/Resources 
    Bananite
    URL to post:

Embed

Share banner
Image URL
HTML embed code
BB embed code
Markdown embed code

Credits

Author
ExecutiveKrab
ExecutiveKrab Joined 2y ago
Offline
242 points Ranked 54053rd
Author
Tool Creators
Aaaboy97
Aaaboy97 Joined 2y ago
Offline
105 points Ranked 68743rd
BotW Tools
Aboood40091
Sarc_Tool, BCFSTM-BCFWAV-Converter
RandomTalkingBush
Switch .bars extractor QuickBMS script
Other
CraftyBoss
CraftyBoss Joined 2y ago
Offline
Guide for dumping BotW update + DLC from Switch
BravelyPeculiar
BravelyPeculiar Joined 2y ago
Offline
BCFSTM-BCFWAV-Converter .bat Script

Submitter

ExecutiveKrab avatar
ExecutiveKrab Joined 2y ago
Offline
242 points Ranked 54053rd
ExecutiveKrab
Creator
  • Paypal Donate
Sign up to access this!
Sign up to access this!
Sign up to access this!

Game

Sign up to access this!

Category

Details

Difficulty Level
Intermediate

Attributes

Share

  • Share on Reddit
  • Share on Twitter
  • Share on Facebook
  • 3
  • 17.7k
  • 8
  • 2y
  • 2y
  • 2y

More from Submitter

More Other/Misc Tutorials