How to get PERFECT custom music

A Tutorial for Mario Kart 8 Deluxe

Members see zero ads. Membership is 100% free
So I have heard people trying to make custom music for Mario Kart 8 Deluxe, and unfortunately there are speed issues, static, or other bizarre occurrences when trying to mod the music. This tutorial demonstrates how to mod the music correctly to avoid any of these issues.

What you will need:

1. A full dump of Mario Kart 8 Deluxe (with the .nca containing the game fully extracted) and your BGM.bars
2. A copy of Mario Kart 8 Deluxe (Physical or Digital)
3. A microsd card (duh)
4. Audacity
5. slashiee's StreamTool
6. AboodXD's BFSTM-BCFWAV-Converter
7. BARSViewer
8. A hex editor such as HxD
9. The latest release of Python
10. A song of your choosing
11. A brain

FOR MULTI CHANNEL BFSTMS:

1. BrawlBox
2. Multi BRSTM Converter GUI

1. Converting the music

In Audacity, open up the song of your choosing. You may alter the song as much as you like. Once ready, go to file -> export -> export to wav, and name the song to the exact same name of the song you are going to replace in-game. A full list of songs can be found here. *Note: The N at the end of the name is for laps 1 & 2, and the F is for lap 3. 

Next, extract the contents of slashiee's streamtool to wherever you desire. Then double click on the ~SETUP.bat file. Once ready, you will be redirected to the ffmpeg download website. Select the 32-bit nightly shared version of ffmepg, and download the archive. Extract all of the contents of the bin folder (Not the bin folder itself!) into the streamtool folder. Next drag your .wav of your song into the streamtool folder. Then drag the song onto this batch: "Convert to BFSTM (Switch PCM16).bat", and wait for it to convert.

Download the latest version of Python, and when installing it, you will see a box saying "Add python to PATH". Click on this box and make sure it has a check mark inside of it. After Python has installed, download AboodXD's BFSTM-BCFWAV-Converter, extract it, and move the bfstm of your song to the folder. Click on the address bar in file explorer and type in cmd, then hit enter. In the command prompt, type in this command: 

main.py -format FSTP -bom 1 "name of your bfstm.bfstm"

Replace "name of your bfstm" with the actual name of your song. If done correctly you should have a .bfstp of your song.

FOR MULTI CHANNEL BFSTMS:
Some songs use 6+ channels, which will require the exact same amount of channels in your bfstm. This includes Water Park, Super Bell Subway, Electrodrome, Mt. Wario, Cloudtop Cruise, and Dolphin Shoals. For this we will copy the song about 2 more times in audacity, and split all the channels to mono, giving us 6 channels. Go to the 2 channels below the top 2 channels and silence them. Next go to file -> export -> export multiple, and make sure they are .wav files. Download and extract the multi brstm gui builder and export all of the channels (as individual songs) to the wav folder inside of the Multi BRSTM Builder GUI folder. Rename each channel to these EXACT numbers from top to bottom: 1, 2, 3, 4, 5, 6. It should look something like this:

Go back to the main folder and startup the Multi BRSTM Gui application. Select the exact amount of channels your song has and then open up brawlbox. Go to file->new->new brstm audio stream, and open any of the wav files in the wav folder. In Multi BRSTM Gui tick the "Loop" box and in brawlbox copy the values in the END box and paste them in the end box in Multi BRSTM Gui. Then in the box for naming, name the file to the song you will replace and click "Build batch file". Then run build.batch in the Multi BRSTM Gui Builder folder. *This will take a while, please be patient!

Once it has finished, go into the out folder and move your brstm into the streamtool folder, and go to the "Convert to BFSTM (Switch PCM16" batch, right click on it and edit it in note pad. Look in the text for any thing that says .wav, and replace it with .brstm. *Make sure to change these back to .wav for later once you are finished! Save it, and drag your brstm onto the batch file, and wait for it to convert. Then convert to a bfstp as stated above.

2. Replacing the header in BGM.bars

BGM.bars is the file used to make sure our music is played properly in-game so there will be no issues. You will find this file in your out put folder\Audio\Static. *It is recommended you keep a backup of this file in case if anything goes wrong! Now download BARSViewer and extract it to whereever, and open it up. Select your BGM.bars, and extract all of the contents of it. It should be in a folder called BGM. Now download and install HxD, and open up your BGM.bars, the bfstp of your custom bfstm, and the original bfstp header inside of the BGM folder. (Make sure it is named to the song you are about to replace!) Rename your custom bfstp to something like "pBGM_WU_TECHNO_N(mod).bfstp". In the original BFSTP header, select a couple of lines and copy them, They don't have to be specfic, we are only using these to find the header inside of BGM.bars. Copy these. Go to BGM.bars and go to search->find, then go to hex values. Paste the hex values you just copied from the original bfstp into here, and you will find the original BFSTP header. Click in front of the VERY FIRST value, like right here:

Now go back to your original BFSTP and hit Ctrl + A to select ALL of the bytes. You should be able to see a length at the bottom, as shown here: 

Now go to your custom BFSTP, and go to edit -> selct block, and then click on legnth and type in the EXACT length of the original BFSTP, like here:

This will select a block of bytes the same legnth as the original BFSTP. Copy these bytes, and go back to BGM.bars. MAKE SURE YOUR TYPING CURSOR IS WHERE I TOLD YOU TO PLACE IT BEFORE, and go to edit -> paste write. This will paste the header of our custom bfstp into BGM.bars. Save the file and close HxD

3. Installing the mods.

Remove your microsd card from your switch (make sure it is powered off first!) and insert it into your pc. In the folder of your custom firmware, go to titles and make a new folder (if it isn't already there) and name it to the title id of Mario Kart 8 DX (This will vary from region to region, so look it up yourself.) Inside of that make a folder called RomFS, then inside that make a new folder called Audio. Inside of that make 2 new folders: once called static and one called resource. Move your BGM.bars to the Static folder, and inside of the Resource folder make a new folder called Stream. Place your bfstm in here. Eject your microsd card from your computer, boot into the cfw of your choosing, start Mario Kart 8 DX, and test out the song, hopefully it works!

F.A.Q

Q: I have speed issues (too slow or too fast)!

A: BGM.bars isn't present. Make sure it is in your cfw folder\titles\mario kart 8 dx titleid\RomFS\Audio\Static.

Q: I have static when my music starts!

A: You converted your song to a normal bfstm. Make sure it is a PCM16 bfstm and try again.

Q: My game crashed/My switch froze!

A: You did something wrong when replacing the bfstp header. Read the instructions over again carefully and try again.

Q: My song is muted!

A: You probably converted to a wii u BFSTM. Make sure it is the correct BFSTM.

Q: My switch is banned!

A: Your fault, you went online, can't do anything about that!

Q: Can I share/download someone else's BGM.bars?

A: NO! That is piracy, which is against the law.

Q: it doesnt work!!!!!1

A: First of all, before commenting your actual issue, read the rest of the FAQ and see if it has been already answered. Then comment your actual issue, and be descriptive please, or it will take longer.

For any other questions, contact any of the other helpers or me on Discord:
My discord username: Hellacia#7378

Mario Kart 8 Deluxe Modding: https://discord.gg/hKS9CBQ

Credits:

slashiee (StreamTool)
AboodXD (BFSTM-BCFWAV-Converter)
libertyernie (BrawlBox)
Audacity Team (Audacity)
masterf0x (BARSViewer)
  • BabyLuigiOnFire avatar
    BabyLuigiOnFire username pic Joined 2y ago
    Offline
    1,592 points Ranked 21449th
    8 medals 1 rare
    • 10 submissions featured Medal icon
    • One month a member Medal icon
    • Submission featured Medal icon
    • Returned 100 times Medal icon
    • 6 months a member Medal icon
    • Reached 1,000 Points Medal icon
    28d 27d
    Hey, I've got custom sound to work properly, but with a few different methods I've approached, since the Stream Master method just mutes my music files in conversion (foobar should play them fine).

    The tutorial outlined doesn't support looping .bfstms if you convert from .wav and if you want to convert to Switch .bfstm from Wii U .bfstm, I've used a fork of the LoopingAudioConverter that supports conversion of Wii U bfstm to Switch bfstm so that loop points are intact.

    https://github.com/eliboa/LoopingAudioConverter/releases/tag/2.1.0

    Just a few things when using LoopingAudioConverter. On the output on the right, select "BFSTM (Switch)" and on the right dropdown menu that has "GC-ADPCM" as its default format, switch that to "PCM-16".

    That should handle the bfstm conversion of the process. You could technically use Abood's conversion tool as well from Wii U bfstm to MK8 Switch BFSTM but...again also ran into issues on my end.

    But thanks a lot for the tutorial! Really nice to now have my songs now rocking as they should from the Switch system!
    Baby Luigi
    URL to post:
  • Hello!

    To start, thanks for this! While I struggled to even start adding custom music before, this looks like it may work really well.

     I've tried to follow this guide twice. The first Hex-Editor image refuses to load. As a result, I was forced to guess what you meant. I've tried to follow this guide twice. The first time, everything appeared to have worked until the song was replaced with heavy distorted static. The second time, the game crashed. Seeing as both attempts converted audio from .mp3 to 16-bit .wav to the listed Switch BFSTM PCM file successfully, I am drawn to believe I made an error on the hex editing portion of this process. This is also the most likely culprit as I'm still new to hex editing. 

    Thanks!
    I copy floppies
    URL to post:

Embed

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

Credits

Key Authors
Hellacia619
Hellacia619 Joined 1y ago
Offline
201 points Ranked 55223rd
Original Authors
Hellacia619
Hellacia619 Joined 1y ago
Offline
201 points Ranked 55223rd
Special Thanks
Anyone who worked on any of the amazing tools

Submitter

Hellacia619 avatar
Hellacia619 Joined 1y ago
Offline
201 points Ranked 55223rd
Hellacia619
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
  • Today's Pick
    Featured on Mar 12 2019
  • 3
  • 4.0k
  • 4
  • 2mo
  • 2mo

More Other/Misc Tutorials

bcp.crwdcntrl.net tracking pixel