Tutorial  Updated

Guide - Animal Crossing New Horizons Custom Music

Mod custom music into Animal Crossing: New Horizons

Things you'll need:
* BWAV encoder (https://github.com/ic-scm/openrevolution, or https://github.com/Gota7/Citric-Composer) or a BWAV file from https://smashcustommusic.net/
* Automatic BARS patcher on your Switch (https://gbatemp.net/threads/automatic-bars-patcher.579473/)
* A dump of the game's files or at least the /Sound directory, you can dump the game with nxdumptool.
* (Optional) An audio player with the vgmstream plugin to preview your BWAV files. Not necessary if you compiled openrevolution and have the brstm_rt program. https://github.com/vgmstream/vgmstream

Optional step 0: Dump the game's sound files
You don't need to do this if you already have the dumped files from the correct version of your game.

Open nxdumptool on your Switch, choose gamecard or SD depending on which version of ACNH you have, and go into RomFS options in Animal Crossing: New Horizons.
Make sure that "Save data to CFW directory" is set to no, and "Use update/DLC" is set to the newest game update. It's very important that you dump the updated version of the game. Then press "Browse RomFS section", navigate to the "Sound" and then "Resource" directory in the file browser, then press the Y button to dump the sound files. This can take some time, depending on your SD card and environment.



Step 1: Find a song
Find the song that you want to mod into your game.
If the song you want is from another game, you can search for it on smashcustommusic.net, download a BWAV directly from the website and skip steps 2-3.



Step 2: Prepare the song
The openrevolution file converter requires a WAV at it's input so if your song is a different format like mp3, ogg, flac or other you'll have to convert it to WAV first.

The easiest way to do that is to open the file in a program like Audacity and to export it as WAV. You can also use ffmpeg directly or any other program capable of that. While you're in Audacity you can also pick out the loop points, see the next step.

If you want to replace a K.K. song, you will have to mix the song into a 1 channel mono file.

You can also use Citric Composer instead of openrevolution to encode your BWAV files, but I am unable to provide any help or assistance with that software.



Step 2.1: Loop points
The usual loop point stuff: open your file in Audacity or similar program, set the time counter to display the sample number, find a good loop point and copy the sample number.
If you need more details about this look on other Nintendo game custom music guides.
You can also skip this step if you don't care about having a proper loop and just set the loop point to 0 later.



Step 3: Encode the BWAV file (openrevolution brstm_converter)

Run this command:
./brstm_converter yourfile.wav -o youroutputfile.bwav -l [Put your loop sample number here]
If using Windows, replace "./brstm_converter" with "brstm_converter.exe".
If the conversion was successful, you should now have a BWAV file at your output file path.

You can also use Citric Composer for this step instead, but I am unable to provide any help or assistance with that software.



Step 4: Put the files in the game
Name your files correctly and put them in the game's files using whatever methods for modding switch games there are.

When replacing the album versions of K.K. music, you also have to copy your custom file for all 4 versions of the K.K. song (Hifi, Phono, Retro, Cheap).

If you're using Atmosphere, you can just put your files in /atmosphere/contents/01006F8002326000/romfs/.
(For example: /atmosphere/contents/01006F8002326000/romfs/Sound/Resource/Stream/BGM_Title.bwav)



Step 5: Patching the BARS file
You'll need to patch the BARS file in the game for the songs to play correctly.

Make sure you have the original dumped sound files from the game somewhere on your Switch, and open the Automatic BARS patcher tool.
Select Animal Crossing: New Horizons.

The tool will now show you 4 different file paths.
Original BARS file should be the original unmodified Bgm_Base.bars file from the game.
Original BWAV folder should be the original unmodified /Sound/Resource/Stream/ folder.
Modded BWAV folder should be the location of your modded BWAV files.
Patched BARS output should be the location for the Bgm_Base.bars file in the mod. (For example: /atmosphere/contents/01006F8002326000/romfs/Sound/Resource/Bgm_Base.bars)

If these file paths are correct, press A to continue. If not, you can press B to make the necessary changes.
The tool should now show how many tracks it patched, and say "Success!".

Press + to exit the tool, and open Animal Crossing: New Horizons. You should now have your custom music correctly playing in the game.

All of the songs in /Sound/Resource/Stream should be in /Sound/Resource/Bgm_Base.bars
Copy the BARS file and the BWAV file you want to replace into some local work directory. If you're replacing K.K. music (aircheck versions) copy all 4 versions of the BWAV files (Hifi, Retro, Cheap, Phono).

Patching the file with the command line patcher:
Compile the patcher with a standard C++ compiler without any special flags
./bars-patcher -i Bgm_Base.bars -o Bgm_Base.bars.patch -og BWAV_file_from_the_game.bwav -patch Your_custom_BWAV.bwav

Online patcher:
https://smashcustommusic.net/onlinetools/bars-patcher/
Put the Bgm_Base.bars file in the BARS file field, the BWAV from the game in the Original BWAV field and your custom BWAV file in the Patch BWAV field.

If you can't use the solutions above and you really hate yourself you should also be able to manually do it in a hex editor:
Open the BARS file, original BWAV file and your custom BWAV file in the hex editor.
From the original file copy the 4 bytes at offset 0x08 (CRC32 checksum).
Switch to the BARS file and use a search function to find those 4 bytes.
Switch to the custom BWAV file and copy all the bytes from the beginning until a chunk of 00's (should be around 160/0x9F bytes in 2 channel files).
Switch to the BARS file, make sure you're in overwrite mode and paste the copied bytes in the correct place (so the BWAV word is in the same place as before).



K.K. music file name list:
Code:
Agent K.K.       - BGM_Live_068_Keiji
Aloha K.K.       - BGM_Live_019_Aloha
Animal City      - BGM_Live_092_Town
Bubblegum K.K.   - BGM_Live_088_Idol
Café K.K.        - BGM_Live_050_Paris
Comrade K.K.     - BGM_Live_044_Showakayo
DJ K.K.          - BGM_Live_039_Eurobeat
Drivin'          - BGM_Live_093_Drive
Farewell         - BGM_Live_094_Sayonara
Forest Life      - BGM_Live_057_Morinoseikatsu
Go K.K. Rider    - BGM_Live_046_Kekerider
Hidden Song 1    - BGM_Live_901_Hazure01
Hidden Song 2    - BGM_Live_902_Hazure02
Hidden Song 3    - BGM_Live_903_Hazure03
Hypno K.K.       - BGM_Live_076_Utatanenoyume
I Love You       - BGM_Live_054_Daisuki
Imperial K.K.    - BGM_Live_023_China
King K.K.        - BGM_Live_062_Daimyo
K.K. Adventure   - BGM_Live_080_Hollywood
K.K. Aria        - BGM_Live_009_Maria
K.K. Ballad      - BGM_Live_043_Ballad
K.K. Bazaar      - BGM_Live_082_Roma
K.K. Birthday    - BGM_Live_091_Birthdaysong
K.K. Blues       - BGM_Live_032_Blues
K.K. Bossa       - BGM_Live_011_Bossa
K.K. Calypso     - BGM_Live_012_Caripso
K.K. Casbah      - BGM_Live_024_Turkey
K.K. Chorale     - BGM_Live_001_Sanbika
K.K. Condor      - BGM_Live_021_Peru
K.K. Country     - BGM_Live_041_Country
K.K. Cruisin'    - BGM_Live_035_Urban
K.K. D&B         - BGM_Live_037_Drumnbass
K.K. Dirge       - BGM_Live_047_Kowaiuta
K.K. Disco       - BGM_Live_090_Disco
K.K. Dixie       - BGM_Live_060_Dixie
K.K. Étude       - BGM_Live_007_Etude
K.K. Faire       - BGM_Live_018_Haisai
K.K. Flamenco    - BGM_Live_086_Flamenco
K.K. Folk        - BGM_Live_026_Minyo
K.K. Fusion      - BGM_Live_006_Fusion
K.K. Groove      - BGM_Live_084_Raregroove
K.K. Gumbo       - BGM_Live_030_Neworleans
K.K. House       - BGM_Live_074_House
K.K. Island      - BGM_Live_078_Doubutsunoshima
K.K. Jazz        - BGM_Live_005_Jazz
K.K. Jongara     - BGM_Live_085_Jongara
K.K. Lament      - BGM_Live_045_Enka
K.K. Love Song   - BGM_Live_036_Lovesong
K.K. Lullaby     - BGM_Live_008_Lullaby
K.K. Mambo       - BGM_Live_014_Mambo
K.K. Marathon    - BGM_Live_061_Gamelan
K.K. March       - BGM_Live_002_March
K.K. Mariachi    - BGM_Live_052_Senor
K.K. Metal       - BGM_Live_070_Metal
K.K. Milonga     - BGM_Live_083_Milonga
K.K. Moody       - BGM_Live_087_Bolero
K.K. Oasis       - BGM_Live_081_Maharaja
K.K. Parade      - BGM_Live_051_Parade
K.K. Ragtime     - BGM_Live_029_Ragtime
K.K. Rally       - BGM_Live_069_Ondo
K.K. Reggae      - BGM_Live_015_Reggae
K.K. Rockabilly  - BGM_Live_067_Kekebily
K.K. Rock        - BGM_Live_027_Rock
K.K. Safari      - BGM_Live_025_Afro
K.K. Salsa       - BGM_Live_013_Salsa
K.K. Samba       - BGM_Live_010_Samba
K.K. Ska         - BGM_Live_016_Ska
K.K. Sonata      - BGM_Live_075_Sonata
K.K. Song        - BGM_Live_053_Kekesong
K.K. Soul        - BGM_Live_034_Soul
K.K. Steppe      - BGM_Live_022_Cossack
K.K. Stroll      - BGM_Live_077_Osanpo
K.K. Swing       - BGM_Live_004_Swing
K.K. Synth       - BGM_Live_089_Electronica
K.K. Tango       - BGM_Live_017_Tango
K.K. Technopop   - BGM_Live_038_Technobeat
K.K. Waltz       - BGM_Live_003_Waltz
K.K. Western     - BGM_Live_048_Western
Lucky K.K.       - BGM_Live_020_Irish
Marine Song 2001 - BGM_Live_064_Hunauta2001
Mountain Song    - BGM_Live_063_Alpine
Mr. K.K.         - BGM_Live_049_Sensei
My Place         - BGM_Live_056_Bokunobasho
Neapolitan       - BGM_Live_065_Napolitan
Only Me          - BGM_Live_040_Onlyme
Pondering        - BGM_Live_059_Kangaechu
Rockin' K.K.     - BGM_Live_028_Rocknroll
Soulful K.K.     - BGM_Live_033_Gospel
Space K.K.       - BGM_Live_079_Minimal
Spring Blossoms  - BGM_Live_072_Harunokomorebi
Stale Cupcakes   - BGM_Live_071_Blueonigiri
Steep Hill       - BGM_Live_066_Nidanzaka
Surfin' K.K.     - BGM_Live_042_Eleki
The K. Funk      - BGM_Live_031_Funk
To the Edge      - BGM_Live_058_Naminami
Two Days Ago     - BGM_Live_055_Ototoi
Wandering        - BGM_Live_073_Horo
Welcome Horizons - BGM_Live_095_Minnaatsumare
----- 2.0 update songs -----
K.K. Fugue       - BGM_Live_096_Fugue
K.K. Polka       - BGM_Live_097_Polka
K.K. Slack-Key   - BGM_Live_098_Slackkey
K.K. Chorinho    - BGM_Live_099_Choro
Chillwave        - BGM_Live_100_Chillwave
K.K. Dub         - BGM_Live_101_Dub
K.K. Lovers      - BGM_Live_102_Lovers
K.K. Bashment    - BGM_Live_103_Bashment
K.K. Hop         - BGM_Live_104_Hiphop
K.K. Break       - BGM_Live_105_Break
K.K. Khoomei     - BGM_Live_106_Khoomii
K.K. Robot Synth - BGM_Live_107_Android

Please let me know if you have any issues or feedback.
 
Last edited by IC_,

FrostyBits

Member
Newcomer
Joined
Jul 30, 2017
Messages
10
Trophies
0
Age
27
XP
72
Country
United Kingdom
Yeah I know not everyone can use this right now but I will add BWAV downloads on smashcustommusic and an online version of the BARS patcher soon and update the guide then
can you convert this file to .bwav for me please? I want this to be playing in all hourly musics.
 

Attachments

  • bgm_xy_silence.dspadpcm.7z
    552 bytes · Views: 188
Last edited by FrostyBits,

spiller

Well-Known Member
Newcomer
Joined
Jan 16, 2017
Messages
99
Trophies
0
Age
29
XP
146
Country
Norway
i tried to follow ur guide but it wont let me run the cmd i even tried to cd to the folder

--------------------- MERGED ---------------------------

do i need to compile the source from your git hub if so can you please help me compile the tool
 

IC_

GBAtemp's ???
OP
Member
Joined
Aug 24, 2017
Messages
1,569
Trophies
1
Location
The Forest
XP
5,405
Country
Antarctica
i tried to follow ur guide but it wont let me run the cmd i even tried to cd to the folder

--------------------- MERGED ---------------------------

do i need to compile the source from your git hub if so can you please help me compile the tool
Yeah you need to compile it with the build script there or with another C++ compiler
 

IC_

GBAtemp's ???
OP
Member
Joined
Aug 24, 2017
Messages
1,569
Trophies
1
Location
The Forest
XP
5,405
Country
Antarctica
so i need to run it in a compiler tool or what is the cmd to compile to a exe file
Depends on your system, the command in the build script is just "g++ -O2 -std=c++0x src/converter.cpp -o brstm_converter"
If you're using windows then you also can try using that citric composer thing, I think it has a BWAV encoder too
 

spiller

Well-Known Member
Newcomer
Joined
Jan 16, 2017
Messages
99
Trophies
0
Age
29
XP
146
Country
Norway
i tried citric but it wont compile back to bwav

--------------------- MERGED ---------------------------

cant figure out how

--------------------- MERGED ---------------------------

and g++ terminal say
'g++' is not recognized as an internal or external command,
operable program or batch file.
 

IC_

GBAtemp's ???
OP
Member
Joined
Aug 24, 2017
Messages
1,569
Trophies
1
Location
The Forest
XP
5,405
Country
Antarctica
i tried citric but it wont compile back to bwav

--------------------- MERGED ---------------------------

cant figure out how

--------------------- MERGED ---------------------------

and g++ terminal say
'g++' is not recognized as an internal or external command,
operable program or batch file.
Try 'c++' instead of 'g++' maybe?
 

spiller

Well-Known Member
Newcomer
Joined
Jan 16, 2017
Messages
99
Trophies
0
Age
29
XP
146
Country
Norway
same :(

--------------------- MERGED ---------------------------

is there not a tool i can use to compile it to exe

--------------------- MERGED ---------------------------

and why couldnt you post the exe on github
 

IC_

GBAtemp's ???
OP
Member
Joined
Aug 24, 2017
Messages
1,569
Trophies
1
Location
The Forest
XP
5,405
Country
Antarctica
same :(

--------------------- MERGED ---------------------------

is there not a tool i can use to compile it to exe

--------------------- MERGED ---------------------------

and why couldnt you post the exe on github
There probably is, use a web search engine to search for c++ compilers for windows or something like that
I can't post exe files on github because I don't have a windows computer to make them
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • SylverReZ @ SylverReZ:
    @Maximumbeans, I'm doing alright, thanks.
    +1
  • Maximumbeans @ Maximumbeans:
    That must be rough. Productive I'm sure but hard to balance with daily life
    +1
  • SylverReZ @ SylverReZ:
    @Maximumbeans, Indeed. I've been working on getting this Infecutus chip to work on my PS2. But after soldering, I realised that a plastic piece was missing from the power ribbon cable to the power and eject buttons.
  • SylverReZ @ SylverReZ:
    Now I could go with soldering the contacts from the cable to the connector on the mobo, but doesn't sound like a good permanent solution.
  • Maximumbeans @ Maximumbeans:
    Man, that's beyond my brain :rofl: I'm no good with hardware for now. I'd like to get into hardmods in future though
  • SylverReZ @ SylverReZ:
    @Maximumbeans, Maybe start practice soldering. Get a cheap-ass soldering iron and follow some good YouTube tutorials.
    +1
  • SylverReZ @ SylverReZ:
    Least my experience has gotten better than over a decade ago. My iron would constantly bump into components and break them.
  • Maximumbeans @ Maximumbeans:
    Sounds good. I actually did soldering but like 16 years ago for school so uuuuh probably rusty haha
  • SylverReZ @ SylverReZ:
    @Maximumbeans, Same here. I did soldering at school from a teacher who I honestly liked since he had plenty of good electronics experience.
    +1
  • Maximumbeans @ Maximumbeans:
    I wish I could play chess well
    +1
  • Maximumbeans @ Maximumbeans:
    Useless but a true art
    +1
  • SylverReZ @ SylverReZ:
    @Maximumbeans, I had a friend who had a glass chess set for their birthday.
  • SylverReZ @ SylverReZ:
    It was like all clear and fancy. Tbf I'm not too experienced with chess, but would like to learn someday.
  • Maximumbeans @ Maximumbeans:
    That sounds really cool
  • Maximumbeans @ Maximumbeans:
    I know the basics but no strategy at all :rofl:
    +1
  • Veho @ Veho:
    Watch chess streamers on Twitch and you'll pick up a thing or two.
    +1
  • Veho @ Veho:
    Not to mention there's an infinite number of chess games for every possible platform.
    +1
  • DinohScene @ DinohScene:
    just play it, get beaten a few times and start dominating
    +1
  • K3Nv2 @ K3Nv2:
    Nude chess is best
    +1
  • DinohScene @ DinohScene:
    strip checkers > nude chess
    +1
  • K3Nv2 @ K3Nv2:
    Nude checkers get jumped
    +1
  • SylverReZ @ SylverReZ:
    @Veho, I guess you'd pick up something while watching tub streams.
  • SylverReZ @ SylverReZ:
    @K3Nv2, Dick fights. :tpi:
  • Veho @ Veho:
    Turkish olive oil wrestling.
    +1
    Veho @ Veho: Turkish olive oil wrestling. +1