ROM Hack Project Let's Sing Custom Songs (any version) and Deluxe Mod

  • Thread starter Thread starter ratnapatka
  • Start date Start date
  • Views Views 253
  • Replies Replies 1
  • Likes Likes 2

ratnapatka

Member
Newcomer
Joined
Aug 9, 2025
Messages
19
Reaction score
16
Trophies
0
Age
37
XP
164
Country
Croatia
Hello everyone, using these tools you can easily add custom songs to your Let's Sing game.

Let's Sing UltraStar Converter - used to convert UltraStar karaoke files into the Let's Sing DLC format
Let's Sing Deluxe Mod (made by @Omnia) - used to extract the official songs from all previous Let's Sing games, the extracted songs can be imported into the newest versions of the game (2025/2026+)


Let's Sing UltraStar Converter​

This tool helps you add custom songs to an installed DLC for Let's Sing. It converts UltraStar karaoke files (downloaded from https://ultrastar-es.org or https://usdb.animux.de - best by using usdb_syncer) to the Let's Sing DLC format.

But let me start off with some credits first:
  • Major props go to dh4rry, the original creator of the ultrastar2singit script used for converting the UltraStar text files into Let's Sing's vxla format. Here is the link to the original post focusing on Let's Sing 2019 with discussions on how to replace the original DLC files with custom songs.
  • Many props go to MRJPGames for writing a comprehensive tutorial on how to prepare all the needed files for adding new songs instead of replacing them for Let's Sing 2022.
  • Overwhelming props go to kosei, for writing a script to automate this whole conversion process in the same thread. Kosei's converter script was the jumping off point for my contributions.
  • Special thanks to omnialord also from gbatemp for contributing to the project with bug fixes and fresh ideas, as well as for helping keep this game's modding scene alive.
Using the scripts above you can already add custom songs to any Let's Sing version prior to 2024 (more recent versions of the game require the bink video format and are a bit different overall), but due to poor standardization and certain features of the UltraStar files you might not be satisfied with the result. While tweaking these scripts to cover the many many edge cases I'd encountered (desync, random loudness, crashing, etc.), I'd accidentally turned this into a whole project.

One thing led to another, and now we've got a GUI to help make the whole conversion process more streamlined. Using this converter, you don't even need to have Python, you will still need to have FFmpeg and RAD Video Tools installed though.

Here is what the GUI looks like, basic inputs on the left, preview on the right. If your version of the game is not listed, you can select the 'other' option and manually fill in the TitleIDs.

1779488207367.png


You can find the download link on my github

All the requirements and instructions are written up on github as well as in the converter itself, but I will include them below as well:

Requirements​

Instructions​

  1. Install Let's Sing on your console and install one DLC song pack.
  2. Download a FFmpeg release to your PC. I used gyan's release from https://www.gyan.dev/ffmpeg/builds/.
  3. Install RAD Video Tools from https://www.radgametools.com/bnkdown.htm (needed for Let's Sing 2024 and onward, skip for earlier versions).
  4. Create a folder (e.g., "My Songs") containing all the UltraStar song folders you want to convert. This is what your "My Songs" folder should look like:
    My Songs/
    ├── Oasis - Wonderwall/
    │ ├── Oasis - Wonderwall.aac
    │ ├── Oasis - Wonderwall.png
    │ ├── Oasis - Wonderwall.txt
    │ └── Oasis - Wonderwall.webm
    ├── R.E.M. - Man on the Moon/
    │ ├── R.E.M. - Man on the Moon.jpeg
    │ ├── R.E.M. - Man on the Moon.mkv
    │ ├── R.E.M. - Man on the Moon.ogg
    │ └── R.E.M. - Man on the Moon.txt
    └── Scatman John - Scatman (Ski-Ba-Bop-Ba-Dop-Bop)/
    ├── Scatman John - Scatman (Ski-Ba-Bop-Ba-Dop-Bop).jpg
    ├── Scatman John - Scatman (Ski-Ba-Bop-Ba-Dop-Bop).mp3
    ├── Scatman John - Scatman (Ski-Ba-Bop-Ba-Dop-Bop).mp4
    └── Scatman John - Scatman (Ski-Ba-Bop-Ba-Dop-Bop).txt​
  5. Run the 'Let's Sing UltraStar Converter' and fill in your game and dlc versions.
    If your game/DLC versions aren't listed, choose 'other' and manually fill out the fields. If your base game is 2024 or newer, you will need to fill the 'DLC JSON Name' field as well. This name can be found in the name.txt file located in [DLC TITLEID]/romfs/name.txt, use DBI to browse the installed game folders.
  6. If FFmpeg or RAD Video Tools fields are empty, point them to the executables for FFmpeg and RAD Video Tools, respectively
  7. Point the Input folder to your "My Songs" folder.
  8. Check the preview on the right to make sure your Input folder is loaded correctly. Green ticks will be displayed for each existing UltraStar file type (or a red X if it is missing). If you've run the converter before with your input folder, a blue checked-file icon may also appear next to the first icon. This icon means that a cached version of this file type is already present in the input song's folder (you can delete these by using the Clear cache button).
  9. Select an output folder for the converted songs. WARNING - The selected folder will be purged before starting the conversion, make sure you're not selecting an important folder! There are some guardrails put in place to prevent deleting something important, the contents of the selected folder are checked upon selection. The selected folder will be allowed only if it is empty or if it contains only folders named as Title IDs (i.e., from a previous conversion), but still be careful.
  10. Start the conversion and track the progress in the preview table above.
  11. When the conversion is done, copy the contents of the output folder to your SD card sd:/atmosphere/contents.
  12. Launch the game and Sing!


Let's Sing Deluxe Mod​

Credits:
  • ratnapatka for the Ultrastar2singit repo, specially for his contributions on BK2 conversion and general script that served as a base for this one
  • larsenv for the obscure mo2mp4 tool to convert wii video format into mp4
This project was made for creating a "deluxe version" for Let's Sing 2025 (it should also work for 2026 and possibly future releases). While this could technically be adapted to work for 2022/23 versions, it's very likely the game will just crash after a certain amount of songs played, so newer versions are highly recommended.

If you own multiple Let's Sing versions you quickly learn it's quite cumbersome switching between different game versions to sing just a few songs you like from each.

Let's Sing games contain 431 unique songs in Nintendo Switch releases with all DLCs as of 2026 and that grows to 576 if you happen to have older Wii versions as well.

This mod let's you put all songs you want into a single game, it can also be paired with the custom songs from Ultrastar converted through Let's Sing UltraStar Converter

The script will automatically convert all game files from previous versions to the correct format for the 2025 base game, you can use a simple spreadsheet to mark which game versions and DLCs you own and which songs you would like to keep, letting you save disk space for the jams you actually enjoy singing.

You can find the download link on Omnia's github

The instructions are written on his github, but I will include them here as well:
Before starting the conversion process, you need the actual files from the games you own, for this you will need to dump them, I won't focus on this here as there's plenty of tutorials around for the Switch (e.g. Nxdumptool) or Wii (e.g. dolphin).

You will also need to have the 2025 or 2026 version of the game with the free Song Pack DLC installed (International or Regional versions, e.g. German Hits, French Hits, etc), this is what we will mod through LayeredFS so you have the extra songs in your main game.

Besides the files in this project you will also need to have FFmpeg (I used gyan's release from here) in the same folder as the script and RAD Video Tools installed in your program files.

For base games, cover images are a little cumbersome to get, you will need to extract these with Asset Studio Mod (or similar) from the "resources.assets" file. Unfortunately there's no way to automate this, so instead, in case you don't have expected files in the folder, this will automatically run a Deezer search for alternate cover images.

After you have everything ready, you should have the following folders in place: videos, vxla, vxla_duet (or vxla_feat), audio, audio_preview, covers

To be clear, this is what your folder should look like

LetsSingDeluxeMod/
├── Lets Sing Deluxe DB - CSV.csv
├── songs_XX.json (optional)
├── lsdeluxe.py
├── MoDecoder/
│ ├── LibMobiclip.dll
│ ├── MobiclipDecoder.exe
│ └── NAudio.dll
├── ffmpeg
│ ├── bin
│ └── ...
├── audio
│ ├── 2BeLoved.ogg
│ ├── 7Years.ogg
│ └── ...
├── audio_preview
│ ├── 2BeLoved_preview.ogg
│ ├── 7Years_preview.ogg
│ └── ...
├── covers
│ ├── 2BeLoved.png
│ ├── 7Years.png
│ └── ...
├── video
│ ├── 2BeLoved.mp4
│ ├── 7Years.mo
│ └── ...
├── vxla
│ ├── 2BeLoved.vxla
│ ├── 7Years.vxla
│ └── ...
└── vxla_duet / vxla_feat
├── 2BeLoved_DUET.vxla
├── 7Years_feat.vxla
└── ...​

Next, make a copy of this spreadsheet, this is our song database, you will use this to define which songs you want to export, just click the checkbox for any songs you would like, then go to the main tab and click the "Export DB" button. Alternatively, I also included an offline version of the csv in this repo if you prefer using excel or just want to run the full list.

The list will cross check against the files you have in the folder, it will only attempt to convert a specific song if you have all required files in the folders (video, audio, vxla), otherwise it will skip that song to avoid crashes. To reduce issues with duplicate songs, make sure to only select a single version in the sheet and avoid selecting songs that are already present in the base game used to apply the mod.

If you want to keep your original DLC songs, copy the songs_XX.json (found in DLCID\romfs) file from the dumped game installation to the project folder.

Run with lsdeluxe.py in the same folder you have the files' folders, the ffmpeg build and the mo2mp4 folders. You should also have RAD Video Tools installed in your computer.

When you run, it will ask you for your supported game version, this is only used to define the folder ID for LayeredFS and the JSON song database name. Optionally you can choose to skip the original music videos, so it creates the files based on cover images (which is a lot faster and lightweight)

Please be aware that depending on the amount of songs, this will probably take a couple hours to finish, however you can stop anytime and resume from the last converted file by running the script again. The script will loop through all files you have in the folders and only convert the ones you have marked in the DB sheet.

If you have .mo (Wii) video files, these are first converted to .mp4, then all mp4 are converted to bk2. VXLA files also go through some reformatting depending on the version. Remaining files are left untouched.

At the end you should have all files ready in a folder to move to the Atmosphere Switch folder (e.g. sd:/atmosphere/contents)
 
  • Like
Reactions: Omnia and Mazamin

Site & Scene News

Popular threads in this forum