Skip to content

MattEqualsCoder/MSUScripter

Repository files navigation

MSU Scripter

A cross platform application built for creating MSUs and related files. The application works as a wrapper around msupcm++, creating the necessary JSON and executing it to generate pcm files. Furthermore, it also creates YAML files for the MSU Randomizer to help it identify MSUs and their tracks and display the current playing song.

image

Features

  • Converts audio files into pcm files (msupcm++ required) - Through the UI you can enter almost any field available to msupcm++ and generate either all pcm files for the MSU-1 or even just single files for testing. The MSU Scripter will even verify that created pcms are valid and can run multiple instances of msupcm++ simultaneously for faster generation of MSUs.
  • Create MSU YAML files with song information - The MSU Scripter will write YAML files for the MSU Randomizer to pull information about the MSU and the songs such as the song name, artist, and album. These YAML files also double as generated user friendly track lists! View more information about the MSU Randomizer YAML files here.
  • Play generated pcm files - Built into the MSU Scripter is an audio player for playing pcm files, including an option to start playing near the end of the song to test loop points.
  • Audio balance analysis - After creating your MSU, run the Audio Analysis to scan through all of the generated files to look for songs that have an average volume or peak that is louder than the overall averages of all of the songs.
  • Auto loop detection (PyMusicLooper required) - By using the PyMusicLooper script, the MSU Scripter can attempt to find a loop point for you.
  • Import audio metadata - Automatically pulls in mp3 and flac metadata for song names, artists, and playlists.
  • Alt file support - Want to include different options for people for particular tracks? Add multiple songs to a track, and it will generate different pcm files for each track. Optionally, the MSU Scripter will even generate a .bat (batch) file for swapping between the original base file and the alt files.
  • Auto create split ALttPR and VARIA files for SMZ3 MSUs - Creating an SMZ3 MSU and want to allow people to change it to work with ALttPR or VARIA randomizers? The MSU Scripter will create separate MSUs and their YAML files and then create a .bat file for swapping between combined SMZ3 and split ALttPR and VARIA MSUs.
  • Import previously created MSUs - Already have an MSU you want to create YAML files for or make updates to the pcm files? Simply point the MSU Scripter to a previously created MSU and, if msupcm++ is being used, the msupcm++ json file and the directory you previously executed msupcm++ from. It'll pull in all the info it can from the files.
  • Create video files for copyright testing (MSU Test Video Creator required) - Based on a Python code by StructuralMike, create an mp4 video file with all of the songs which can be uploaded to YouTube to test for copyright strikes.
  • Supports over 20 types of MSUs - Thanks to JSON files created by Minnie Trethewey, the MSU Scripter supports a variety of MSU types, such as A Link to the Past, Super Metroid, SMZ3, Donkey Kong Country, Super Mario World, and others!

Setup

  • Download the latest release via the GitHub Releases page
    • Windows - Run the installer exe file to install all pre-requisites and the MSU Scripter
    • Linux - Make sure to have .net 8 installed. Either make the MSUScripter file executable and run it or run dotnet MSUScripter.dll
  • Download msupcm++ if generating pcms is desired
  • Install PyMusicLooper if automatic loop point detection is desired (make sure you can run it via a PowerShell or Terminal window)
  • Install MSU Test Video Creator for creating mp4 files to upload to YouTube to test for potential copyright strikes
  • For Linux users, install PCM Player in order to be able to listen to pcm files
  • Add in all details desired about the MSU and the tracks
  • Click on export to generate the MSU and all related files

Troubleshooting & Support

Having problems? Please feel free to post an Issue on GitHub. If encountering a crash, please include the latest log file located at %localappdata%/MSUScripter on Windows or ~/.local/share/MSUScripter/Logs on Linux.

Future

As of version 4.0.0, I am considering this project mostly feature complete. There are some things I'd like to add such as better PCM support on Linux and perhaps a UI based wave form viewer for more advanced usage, but at this point I'm shifting my focus onto other personal projects. While there may be bug fixes and small feature changes, I do not predict any major updates with new functionality in the forseeable future.

That being said, if anyone has anything they'd like to change or add themselves, pull requests are always appreciated!

Credit & Thanks