With this program writen in .NET Framework you can change 27 in game tracks to all kinds of covers and music easily, or even add yours
This is just the code of the program, use it at will. Youre gonna need Visual Studio
using System;
using System.IO;
using System.Media;
using System.Windows.Forms;
namespace UndertaleStylishMusicMod
{
public partial class Form1 : Form
{
private static string gameFolder;
private static SoundPlayer simpleSound;
private int bueno = 0;
private int malo = 0;
public Form1()
{
InitializeComponent();
simpleSound = new SoundPlayer();
gameFolder = "";
label2.Text = "_";
richTextBox1.Text = MostrarCreditos();
comboBox1.Items.AddRange(IndexaCarpetas("ghostFight"));
comboBox2.Items.AddRange(IndexaCarpetas("heartache"));
comboBox3.Items.AddRange(IndexaCarpetas("dogsong"));
comboBox4.Items.AddRange(IndexaCarpetas("bonetrousle"));
comboBox5.Items.AddRange(IndexaCarpetas("dummy"));
comboBox6.Items.AddRange(IndexaCarpetas("spearofjustice"));
comboBox7.Items.AddRange(IndexaCarpetas("bath"));
comboBox8.Items.AddRange(IndexaCarpetas("metalCrusher"));
comboBox9.Items.AddRange(IndexaCarpetas("spiderDance"));
comboBox10.Items.AddRange(IndexaCarpetas("deathGlamour"));
comboBox11.Items.AddRange(IndexaCarpetas("megalovania"));
comboBox12.Items.AddRange(IndexaCarpetas("asgore"));
comboBox13.Items.AddRange(IndexaCarpetas("ruins"));
comboBox14.Items.AddRange(IndexaCarpetas("snowy"));
comboBox15.Items.AddRange(IndexaCarpetas("waterfall"));
comboBox16.Items.AddRange(IndexaCarpetas("anotherMedium"));
comboBox17.Items.AddRange(IndexaCarpetas("snowdinTown"));
comboBox18.Items.AddRange(IndexaCarpetas("core"));
comboBox19.Items.AddRange(IndexaCarpetas("flowey"));
comboBox20.Items.AddRange(IndexaCarpetas("fallenDown"));
comboBox21.Items.AddRange(IndexaCarpetas("sans"));
comboBox22.Items.AddRange(IndexaCarpetas("nyehe"));
comboBox23.Items.AddRange(IndexaCarpetas("alphys"));
comboBox24.Items.AddRange(IndexaCarpetas("battle"));
comboBox25.Items.AddRange(IndexaCarpetas("determination"));
comboBox26.Items.AddRange(IndexaCarpetas("spooktune"));
comboBox27.Items.AddRange(IndexaCarpetas("bergentrung"));
}
private void Creditos(object sender, EventArgs e)
{
richTextBox1.Text = MostrarCreditos();
}
private void Tutoriel(object sender, EventArgs e)
{
richTextBox1.Text = MostrarTutoriel();
}
private void BlankAll(object sender, EventArgs e)
{
comboBox1.Text = "Dont Change";
comboBox2.Text = "Dont Change";
comboBox3.Text = "Dont Change";
comboBox4.Text = "Dont Change";
comboBox5.Text = "Dont Change";
comboBox6.Text = "Dont Change";
comboBox7.Text = "Dont Change";
comboBox8.Text = "Dont Change";
comboBox9.Text = "Dont Change";
comboBox10.Text = "Dont Change";
comboBox11.Text = "Dont Change";
comboBox12.Text = "Dont Change";
comboBox13.Text = "Dont Change";
comboBox14.Text = "Dont Change";
comboBox15.Text = "Dont Change";
comboBox16.Text = "Dont Change";
comboBox17.Text = "Dont Change";
comboBox18.Text = "Dont Change";
comboBox19.Text = "Dont Change";
comboBox20.Text = "Dont Change";
comboBox21.Text = "Dont Change";
comboBox22.Text = "Dont Change";
comboBox23.Text = "Dont Change";
comboBox24.Text = "Dont Change";
comboBox25.Text = "Dont Change";
comboBox26.Text = "Dont Change";
comboBox27.Text = "Dont Change";
}
private void VanillaAll(object sender, EventArgs e)
{
comboBox1.Text = IndexaCarpetas("ghostFight")[0];
comboBox2.Text = IndexaCarpetas("heartache")[0];
comboBox3.Text = IndexaCarpetas("dogsong")[0];
comboBox4.Text = IndexaCarpetas("bonetrousle")[0];
comboBox5.Text = IndexaCarpetas("dummy")[0];
comboBox6.Text = IndexaCarpetas("spearofjustice")[0];
comboBox7.Text = IndexaCarpetas("bath")[0];
comboBox8.Text = IndexaCarpetas("metalCrusher")[0];
comboBox9.Text = IndexaCarpetas("spiderDance")[0];
comboBox10.Text = IndexaCarpetas("deathGlamour")[0];
comboBox11.Text = IndexaCarpetas("megalovania")[0];
comboBox12.Text = IndexaCarpetas("asgore")[0];
comboBox13.Text = IndexaCarpetas("ruins")[0];
comboBox14.Text = IndexaCarpetas("snowy")[0];
comboBox15.Text = IndexaCarpetas("waterfall")[0];
comboBox16.Text = IndexaCarpetas("anotherMedium")[0];
comboBox17.Text = IndexaCarpetas("snowdinTown")[0];
comboBox18.Text = IndexaCarpetas("core")[0];
comboBox19.Text = IndexaCarpetas("flowey")[0];
comboBox20.Text = IndexaCarpetas("fallenDown")[0];
comboBox21.Text = IndexaCarpetas("sans")[0];
comboBox22.Text = IndexaCarpetas("nyehe")[0];
comboBox23.Text = IndexaCarpetas("alphys")[0];
comboBox24.Text = IndexaCarpetas("battle")[0];
comboBox25.Text = IndexaCarpetas("determination")[0];
comboBox26.Text = IndexaCarpetas("spooktune")[0];
comboBox27.Text = IndexaCarpetas("bergentrung")[0];
}
private string[] IndexaCarpetas(string cancion)
{
string path = Path.GetFullPath(@"Resources\" + cancion);
string[] dirs2 = new string[1];
try
{
String[] dirs = Directory.GetDirectories(path, "*", SearchOption.TopDirectoryOnly);
dirs2 = new string[dirs.Length];
int i = 0;
foreach (String dir in dirs)
{
DirectoryInfo di = new DirectoryInfo(dir);
dirs2[i]= di.Name;
i++;
}
}catch(DirectoryNotFoundException e)
{
dirs2[0] = "Folder empty";
}
return dirs2;
}
public string MostrarCreditos()
{
return " Undertale Stylish Music Mod by EvilTony13 v1.0 (should also work with the steam version)\n"
+ " Last game build tested: Undertale v1.001 GOG_installer version: undertale_2.0.0.2.exe\n"
+ " __________________________________________________________________\n"
+ "This is a non-profit software, if you paid for this software then you got fooled lol...\n"
+ "This music database is not meant for ilicit software distribution, just for modding\n"
+ "Please support Toby Fox and the authors of the rest of the covers\n"
+ "Credits for the songs goes to their respective, here's a full list of them:\n\n"
+ " - Toby Fox (Main creator of Undertale): https://store.steampowered.com/app/391570/UNDERTALE_Soundtrack/ \n"
+ " - Amosdoll Music: https://www.youtube.com/channel/UCj31PEVBMTnLvVOCSQGpbog \n"
+ " - RichaadEB: https://www.youtube.com/channel/UCPM1bCbT-dVAHAEIpUUpVLQ \n"
+ " - Smooth McGroove: https://www.youtube.com/channel/UCJvBEEqTaLaKclbCPgIjBSQ \n"
+ " - GameChops: https://www.youtube.com/channel/UCDVKYPXwdYUQfgA05CkyFSg \n"
+ " GameChomps is like a song database for a large number of creators, not just a group\n"
+ " - String Player Gamer: https://www.youtube.com/channel/UCZF_RZUVo-5jUfdlp76G-lQ \n"
+ " - Vetrom: https://www.youtube.com/channel/UCc8Z-QX87IY--16O9unVXpQ \n"
+ " - Noisestorm: https://www.youtube.com/channel/UCMxqfxGRX07XOoFfyaM-eYA \n"
+ " - Kyle Allen Music: https://www.youtube.com/channel/UCHS0hTD4x-w5sUHxNhi6xiw \n"
+ " - Metal Fortress: https://www.youtube.com/channel/UCu5mvfbtdqWv3FXs-cD6Fug \n"
+ " - ThunderScott: https://www.youtube.com/user/ThunderScott6267 \n"
+ " - The Living Tombstone: https://www.youtube.com/channel/UCFYMDSW-BzeYZKFSxROw3Rg \n"
+ " - Paweł Zadrożniak and his mighty Floppotron: https://www.youtube.com/channel/UCximsD7EJ38jzCNgfP_YTmA \n"
+ " - Luuul's Piano: https://www.youtube.com/channel/UCifYf_nIpb3ShFCOrIW86xA \n"
+ " - Square Enix: They dont need more introduction\n"
+ " - Marvel: We're sorry you lost spiderman, we're sorry you're part of disney now,\n we're sorry Stan Lee passed out, we're sorry Avengers ended... when will this end...\n"
+ " - LucasArts: They are part of Disney now...\n"
+ " - Disney: Look at your TV, they may own that as well\n"
+ " - Nintendo: aka lawswit incoming\n"
+ " - Baha Men: A guy who talks to dogs\n"
+ " - Fall Out Boy: A band pretty much everyone knows\n"
+ " - Linking Park: You don't know these guys? you suck\n"
+ " - Skrillex: The man of the century...\n"
+ " - OutKast: Sick people :D\n"
+ " - DMX: X already gave it to ya\n"
+ " - Ray Parker Jr.: He compose ghostbusters... damn i have to teach you everything...\n"
+ " - Lesley Gore: Too old to get any profit of this credit\n"
+ " - Mellen Gi & Tommee Profitt: for the cover.. ya know...\n"
+ " - Luis Fonsi ft. Daddy Yankee: They're pretty famous here in Spain, Can't figure out why...\n"
+ " - Justin Biever ft. Ludacris: Well... guess earth also needs variety...\n"
+ "\n";
}
public string MostrarTutoriel()
{
return "\n----Tutoriel----\n\n"
+ "1-Locate your undertale's root instalation directory (where UNDERTALE.exe is located)\n"
+ "2-Pick songs, they're all playable, it makes easier to decide, uh? ;) wink\n"
+ "3-Press Install and please dont call me if anything goes wrong xD\n\n"
+ "Notes:\n"
+ "A ComboBox blank and 'Dont change' equals same (None will change any file)\n"
+ "Play will only reproduce a few seconds sample, but the fited song will be installed in the game\n"
+ "Stored Vanilla versions are from the game itself: Undertale v1.001 GOG_installer version: undertale_2.0.0.2.exe\n";
}
private void FolderSearch(object sender, EventArgs e)
{
FolderBrowserDialog folderBrowserDialog1 = new FolderBrowserDialog();
if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
{
textBox1.Text = folderBrowserDialog1.SelectedPath;
gameFolder = textBox1.Text;
}
}
private void Play(object sender, EventArgs e, string boxOpcion, string cancion, string archivo)
{
gameFolder = textBox1.Text;
if (boxOpcion == "Dont Change" || boxOpcion == "" || boxOpcion == "Folder empty")
{
label2.Text = "_Error: You have to select a song version from the list";
}
else
{
try
{
Stop(sender, e);
string localRute = Path.GetFullPath(@"Samples\" + cancion + @"\" + boxOpcion + @"\" + archivo);
simpleSound = new SoundPlayer(localRute);
simpleSound.Play();
label2.Text = "_Playing: " + cancion + " - " + boxOpcion;
}catch(FileNotFoundException b)
{
label2.Text = @"_BIG ERROR: The file Samples\" + cancion + @"\" + boxOpcion + @"\" + archivo + " was not found:";
}
}
}
private void Stop(object sender, EventArgs e)
{
label2.Text = "_";
simpleSound.Stop();
}
private void Copiar(object sender, EventArgs e, string boxOpcion, string cancion, string archivo)
{
string gameRute= gameFolder + @"\" + archivo;
string localRute= Path.GetFullPath(@"Resources\" + cancion + @"\" + boxOpcion + @"\" + archivo);
if (boxOpcion != "Dont Change" && boxOpcion != "" && boxOpcion != "Folder empty")
{
if (File.Exists(gameRute))
{
try
{
richTextBox1.Text += "installing " + cancion + "... ";
System.IO.File.Delete(gameRute);
System.IO.File.Copy(localRute, gameRute, true);
richTextBox1.Text += "success.\n";
bueno++;
}
catch (System.IO.IOException ex)
{
richTextBox1.Text += "failure:\n"+ex.Message + "\n";
malo++;
return;
}
}
else
{
try
{
richTextBox1.Text += "game folder's file for " + cancion + ": " + archivo + " wasn't found\ncreating new one... ";
System.IO.File.Copy(localRute, gameRute, true);
richTextBox1.Text += "success.\n";
bueno++;
}
catch (System.IO.IOException ex)
{
richTextBox1.Text += "failure:\n" + ex.Message + "\n";
malo++;
return;
}
}
}
}
private void Instalacion(object sender, EventArgs e)
{
gameFolder = textBox1.Text;
if (textBox1.Text == "")
{
label2.Text = "Error: You didn't select a folder";
}
else
{
if (File.Exists(gameFolder + @"\UNDERTALE.exe"))
{
bueno = 0;
malo = 0;
richTextBox1.Text = "----------------------------------------------\n";
Copiar(sender, e, comboBox1.Text, "ghostFight", "mus_ghostbattle.ogg");
Copiar(sender, e, comboBox2.Text, "heartache", "mus_boss1.ogg");
Copiar(sender, e, comboBox3.Text, "dogsong", "mus_dogsong.ogg");
Copiar(sender, e, comboBox4.Text, "bonetrousle", "mus_papyrusboss.ogg");
Copiar(sender, e, comboBox5.Text, "dummy", "mus_dummybattle.ogg");
Copiar(sender, e, comboBox6.Text, "spearofjustice", "mus_undyneboss.ogg");
Copiar(sender, e, comboBox7.Text, "bath", "mus_x_undyne.ogg");
Copiar(sender, e, comboBox8.Text, "metalCrusher", "mus_mettatonbattle.ogg");
Copiar(sender, e, comboBox9.Text, "spiderDance", "mus_spider.ogg");
Copiar(sender, e, comboBox10.Text, "deathGlamour", "mus_mettaton_ex.ogg");
Copiar(sender, e, comboBox11.Text, "megalovania", "mus_zz_megalovania.ogg");
Copiar(sender, e, comboBox12.Text, "asgore", "mus_vsasgore.ogg");
Copiar(sender, e, comboBox13.Text, "ruins", "mus_ruins.ogg");
Copiar(sender, e, comboBox14.Text, "snowy", "mus_snowy.ogg");
Copiar(sender, e, comboBox15.Text, "waterfall", "mus_waterfall.ogg");
Copiar(sender, e, comboBox16.Text, "anotherMedium", "mus_anothermedium.ogg");
Copiar(sender, e, comboBox17.Text, "snowdinTown", "mus_town.ogg");
Copiar(sender, e, comboBox18.Text, "core", "mus_core.ogg");
Copiar(sender, e, comboBox19.Text, "flowey", "mus_flowey.ogg");
Copiar(sender, e, comboBox20.Text, "fallenDown", "mus_toriel.ogg");
Copiar(sender, e, comboBox21.Text, "sans", "mus_muscle.ogg");
Copiar(sender, e, comboBox22.Text, "nyehe", "mus_papyrus.ogg");
Copiar(sender, e, comboBox23.Text, "alphys", "mus_lab.ogg");
Copiar(sender, e, comboBox24.Text, "battle", "mus_battle1.ogg");
Copiar(sender, e, comboBox25.Text, "determination", "mus_gameover.ogg");
Copiar(sender, e, comboBox26.Text, "spooktune", "mus_spoopy.ogg");
Copiar(sender, e, comboBox27.Text, "bergentrung", "mus_bergentruckung.ogg");
richTextBox1.Text += "----------------------------------------------\n";
richTextBox1.Text += "Instalation ended with "+bueno+" succeeded tasks and "+malo+" failures.\n\n\n--";
}
else
{
label2.Text = "Error: UNDERTALE.exe Wasn't found in the choosen game folder";
}
}
}
private void GhostFightPlay(object sender, EventArgs e)
{
string boxOpcion = comboBox1.Text;
Play(sender, e, boxOpcion, "ghostFight", "mus_ghostbattle.wav");
}
private void HeartachePlay(object sender, EventArgs e)
{
string boxOpcion = comboBox2.Text;
Play(sender, e, boxOpcion, "heartache", "mus_boss1.wav");
}
private void DogSongPlay(object sender, EventArgs e)
{
string boxOpcion = comboBox3.Text;
Play(sender, e, boxOpcion, "dogsong", "mus_dogsong.wav");
}
private void BonetrouslePlay(object sender, EventArgs e)
{
string boxOpcion = comboBox4.Text;
Play(sender, e, boxOpcion, "bonetrousle", "mus_papyrusboss.wav");
}
private void DummyPlay(object sender, EventArgs e)
{
string boxOpcion = comboBox5.Text;
Play(sender, e, boxOpcion, "dummy", "mus_dummybattle.wav");
}
private void SpearofJusticePlay(object sender, EventArgs e)
{
string boxOpcion = comboBox6.Text;
Play(sender, e, boxOpcion, "spearofjustice", "mus_undyneboss.wav");
}
private void BATHPlay(object sender, EventArgs e)
{
string boxOpcion = comboBox7.Text;
Play(sender, e, boxOpcion, "bath", "mus_x_undyne.wav");
}
private void MetalCrusherPlay(object sender, EventArgs e)
{
string boxOpcion = comboBox8.Text;
Play(sender, e, boxOpcion, "metalCrusher", "mus_mettatonbattle.wav");
}
private void SpiderDancePlay(object sender, EventArgs e)
{
string boxOpcion = comboBox9.Text;
Play(sender, e, boxOpcion, "spiderDance", "mus_spider.wav");
}
private void DeathGlamourPlay(object sender, EventArgs e)
{
string boxOpcion = comboBox10.Text;
Play(sender, e, boxOpcion, "deathGlamour", "mus_mettaton_ex.wav");
}
private void MegalovaniaPlay(object sender, EventArgs e)
{
string boxOpcion = comboBox11.Text;
Play(sender, e, boxOpcion, "megalovania", "mus_zz_megalovania.wav");
}
private void ASGOREPlay(object sender, EventArgs e)
{
string boxOpcion = comboBox12.Text;
Play(sender, e, boxOpcion, "asgore", "mus_vsasgore.wav");
}
private void RuinsPlay(object sender, EventArgs e)
{
string boxOpcion = comboBox13.Text;
Play(sender, e, boxOpcion, "ruins", "mus_ruins.wav");
}
private void SnowyPlay(object sender, EventArgs e)
{
string boxOpcion = comboBox14.Text;
Play(sender, e, boxOpcion, "snowy", "mus_snowy.wav");
}
private void WaterfallPlay(object sender, EventArgs e)
{
string boxOpcion = comboBox15.Text;
Play(sender, e, boxOpcion, "waterfall", "mus_waterfall.wav");
}
private void AnotherMediumPlay(object sender, EventArgs e)
{
string boxOpcion = comboBox16.Text;
Play(sender, e, boxOpcion, "anotherMedium", "mus_anothermedium.wav");
}
private void SnowdinTownPlay(object sender, EventArgs e)
{
string boxOpcion = comboBox17.Text;
Play(sender, e, boxOpcion, "snowdinTown", "mus_town.wav");
}
private void COREPlay(object sender, EventArgs e)
{
string boxOpcion = comboBox18.Text;
Play(sender, e, boxOpcion, "core", "mus_core.wav");
}
private void FloweyPlay(object sender, EventArgs e)
{
string boxOpcion = comboBox19.Text;
Play(sender, e, boxOpcion, "flowey", "mus_flowey.wav");
}
private void FallenDownPlay(object sender, EventArgs e)
{
string boxOpcion = comboBox20.Text;
Play(sender, e, boxOpcion, "fallenDown", "mus_toriel.wav");
}
private void SansPlay(object sender, EventArgs e)
{
string boxOpcion = comboBox21.Text;
Play(sender, e, boxOpcion, "sans", "mus_muscle.wav");
}
private void NyehePlay(object sender, EventArgs e)
{
string boxOpcion = comboBox22.Text;
Play(sender, e, boxOpcion, "nyehe", "mus_papyrus.wav");
}
private void AlphysPlay(object sender, EventArgs e)
{
string boxOpcion = comboBox23.Text;
Play(sender, e, boxOpcion, "alphys", "mus_lab.wav");
}
private void BattlePlay(object sender, EventArgs e)
{
string boxOpcion = comboBox24.Text;
Play(sender, e, boxOpcion, "battle", "mus_battle1.wav");
}
private void DeterminationPlay(object sender, EventArgs e)
{
string boxOpcion = comboBox25.Text;
Play(sender, e, boxOpcion, "determination", "mus_gameover.wav");
}
private void SpookPlay(object sender, EventArgs e)
{
string boxOpcion = comboBox26.Text;
Play(sender, e, boxOpcion, "spooktune", "mus_spoopy.wav");
}
private void BergentrungPlay(object sender, EventArgs e)
{
string boxOpcion = comboBox27.Text;
Play(sender, e, boxOpcion, "bergentrung", "mus_bergentruckung.wav");
}
}
}