• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

How to change main menu theme song?

Status
Not open for further replies.
Level 3
Joined
Aug 24, 2021
Messages
21
Hello guys,

I want to change the default main menu theme song with something else?

How can I do that and what file format should I use (MP3, Wav etc.)?
 
Level 3
Joined
Aug 24, 2021
Messages
21
Great, thank you!

It's working.

However, once the duration of the track which I chose for a MainScreen theme ends, it starts the default one again?

Any ideas on how to make it to start the same track again?
 
Last edited:
Level 28
Joined
May 14, 2021
Messages
1,095
Great, thank you!

It's working.

Just another question, what is the path for the background picture and what format/resolution should I use?

And for example, I want to change some unit "birth" sounds, what are the paths for that? I'm trying to locate them through Retera's Model Studio, however, I'm unable to do so.
For the first one, the background picture (main menu) is made on 1024x768 resolution and must be saved on MDX. The actual path is:
1."UI/Glues/MainMenu/MainMenu3d" (Reign of Chaos)
2."UI/Glues/MainMenu/MainMenu3D_Exp".
For the second one, you'll have to change the "Sound - Unit Sound Set" section in case you want to use different sounds for current units. This is done with World Editor.
 
Level 3
Joined
Aug 24, 2021
Messages
21
Thank you, great support.

+Rep

I will try those suggestions and will ask any further questions if I face difficulties.

Regarding the question with the main theme song, I was able to fix it by merging some mp3s with Audacity in a single mp3 file with a long length.
 
Level 3
Joined
Aug 24, 2021
Messages
21
I tried the "Sound Editor".

However, this is for creating sounds on your own map.

I just want to change sounds of my units, add birth sound to "Tichondrius" for example in melee games.

Just like I changed the unit skins.

Is there a way to do that?
 

deepstrasz

Map Reviewer
Level 68
Joined
Jun 4, 2009
Messages
18,706
I just want to change sounds of my units, add birth sound to "Tichondrius" for example in melee games.
Unit building birth sounds are coded to the model. You have to edit the birth model and add what sound you want or you can play a sound whenever the building has finished building but you have to remove the model's default birth sound.
If it's about a unit that finishes training, you can still play the sound via triggers.
 
Level 3
Joined
Aug 24, 2021
Messages
21
Unit building birth sounds are coded to the model. You have to edit the birth model and add what sound you want or you can play a sound whenever the building has finished building but you have to remove the model's default birth sound.
If it's about a unit that finishes training, you can still play the sound via triggers.
Yes, I want to input a birth sound to an existing model.

For example, Tichondrius doesn't have a birth sound and I want to put the default Hero Dreadlord ready sound to it.


I would appreciate a tutorial on how to do that.
 

deepstrasz

Map Reviewer
Level 68
Joined
Jun 4, 2009
Messages
18,706
For example, Tichondrius doesn't have a birth sound and I want to put the default Hero Dreadlord ready sound to it.


I would appreciate a tutorial on how to do that.
A trick could be creating a destructible and killing it since you can set the death sound of destructibles in the object editor. This way you don't need to use the trigger play sound that cannot play another play sound trigger at the same time. I think your screen has to be on the unit or quite near in order to hear the sound though compared to playing a sound trigger. But this is also true for birth animation (model) sounds.

Editing a model is the other option.
Download and open this piece of software:
Then, you can add a sound on any animation but you can't add a custom sound, only one from the list the model editing program allows. Click the thumbnails from left to right and follow those steps.
Open the node manager so you can add the sound and set it to the time frames of the animation you want.
Open the sequence manager to see the time frame of the animations.
anima.pnganima.pnganima.pnganima.pnganima.pnganima.png
But since the sound doesn't last more than a few seconds you can just leave the starting part of the animation interval.
 
Level 3
Joined
Aug 24, 2021
Messages
21
A trick could be creating a destructible and killing it since you can set the death sound of destructibles in the object editor. This way you don't need to use the trigger play sound that cannot play another play sound trigger at the same time. I think your screen has to be on the unit or quite near in order to hear the sound though compared to playing a sound trigger. But this is also true for birth animation (model) sounds.

Editing a model is the other option.
Download and open this piece of software:
Then, you can add a sound on any animation but you can't add a custom sound, only one from the list the model editing program allows. Click the thumbnails from left to right and follow those steps.
Open the node manager so you can add the sound and set it to the time frames of the animation you want.
Open the sequence manager to see the time frame of the animations.
View attachment 386665View attachment 386666View attachment 386667View attachment 386668View attachment 386669View attachment 386670
But since the sound doesn't last more than a few seconds you can just leave the starting part of the animation interval.
Thank you.

However, this seems like too complicated to me :D

I tried the "Model Editor" and I receive the error from the attached picture when I try to open the MDX file.

I may just leave it as it is.

asdasd.PNG
 
Level 3
Joined
Aug 24, 2021
Messages
21
Does an error appear when trying to open/load any .mdx file or just a specific one?
If it's a specific one, put it here for testing.
I just tried with some more MDX files, exported directly with the Reteras Model Studio and I got the same results.

The ones I tried were:

tichondrius.mdx
sapphironundead.mdx
grunt.mdx

Most likely all the others will give the same error.
 
Okay, hold up, I happened to be reading this thread and I can't help but feel like this thread totally derailed with a lack of technical understanding combined with too much technical understanding of possibly the wrong topic.

First off: War3 Model Editor
The War3 Model Editor program cannot open Warcraft III game installation files since the 2017(ish) patches, and as of the 2020 patch 1.32 the War3 Model Editor program cannot even open any models. In order to use that program, you have to go and download the legacy versions of the Warcraft III game because of how that program can't load anything at all on Patch 1.32 and beyond. The Warcraft III Patch 1.32 client includes files that look the same as the old ones and can be used to emulate the "Classic" game artwork, but these files are not the old legacy engine files. They are not the same format, and they will not open in the War3 Model Editor tool which has not been updated since 2006. We have the Reforged developers to blame for this (in my opinion) silly technicality -- the "classic legacy artwork" files included in the Reforged-era client, even if you do not buy Reforged and just download the bloated modern 1.32 installation in order to play classic -- even in that case all of your "classic" models are in the Reforged format which the old tools that many Warcraft III modders know and love such as War3 Model Editor cannot open. This is why you see "got a Shad tag" as your error message. "Shad" in this case is a binary reading of "Shader", and the old 2002 models were made in a game engine that did not use shader programs and those old assets would not contain references to information about shaders. This issue is hidden by Retera Model Studio because I try hard to pretend that a "classic looking asset in the Reforged format" and the "classic asset from the historical legacy 2002 game" are the same. I like to pretend that they are the same because they encode the same information, so to me when I go to use them they are functionally equivalent and I can easily convert between them with a touch of a button on Retera Model Studio (via "Scripts -> Assign FormatVersion").
So now you learned something fun about how @deepstrasz was trying to help you, and why it did not work for you, but let's go a step further and take a step back to look at what you're actually trying to achieve.

Second point: Reforged skins
I just want to change sounds of my units, add birth sound to "Tichondrius" for example in melee games.

Just like I changed the unit skins.

You did not specify in any extensive depth but I assume you are referring to the "Units\UnitSkins.txt" file which was added in the Reforged 1.32 client. So it is possible that you quite literally mean that you edited the unit skins, but keep in mind at the same time that some user who is sitting on War3 Model Studio and living in the "good old days" version of Warcraft III is a user who plays a fundamentally simpler game engine where changing unit skins means something totally different. It would pretty much have to refer to modifying the characters in the World Editor, which I assume you are not doing.

So, given that you are not creating a custom map, and that it would desync you from other players to change game behaviors, I assume that creating a an invisible, dying destructable AND firing a custom trigger into the script environment are both totally off the table and not an option for you because you do not want to get disconnected from other players during a melee game in which you want to play your locally modified client to see the world a different way.

So, my heart goes out to @deepstrasz because he's talking about doing the sorts of things that I personally enjoy and that are the reason I was ever here to begin with but after rereading this thread a second time I firmly believe his suggestions are misguided given the goal you are trying to achieve.

Third point: how to actually do what you want
Let's talk about what you can do. You can locally modify unit soundsets OR models using the skin system without desyncing in a melee game. That's basically the entire point of a "skin". As a possible but simple experiment I would prescribe you to attempt changing the soundset of the undead dreadlord using the "Unit\UnitSkins.txt" file to instead be the "Tichondrius" soundset. Then when you play a melee map versus an opponent (who has no idea that you are using a modded client like this and cannot see your locally modded skins) you would find that your Dreadlord no longer says "The night beckons" when he is trained. And you are correct that this is because the "Tichondrius" soundset has no data regarding a Ready sound. So, assuming for example that you may have locally modded the dreadlord to use the Tichondrius 3D asset as his model file, you have two choices. As deepstrasz was hinting at, there is a system in place that allows you to embed a sound into a model file. However, without even looking I'm going to take a guess that both Tichondrius.mdx and HeroDreadLord.mdx both have no animation sequence named "Birth" in their model file because heroes usually spawn into the game by playing their Ready sound and doing their Stand animation or whatever, so they did not need a "Birth" animation.

However, if you did actually put in the effort and learn how to create a custom modified 3D model file for your character, give that model its own "Birth" sequence included in that model, and then during that sequence spawn a sound using the EventObject system that deepstrasz pictured, you would still have a problem. And this problem is, just for the sake of example, if you wanted to play "THe night beckons!" from a dreadlord in that model data, you would need a special 4-letter identifier added to the local Warcraft III client installation that would refer back to this "The night beckons" sound file. Because the other units in the game do not play their Ready sounds using this system, there is not already an identifier in the game data that you can use. So, you would have to go and modify "UI\SoundInfo\AnimLookups.slk" table to add an animation lookup for the sound file located at "Units\Undead\HeroDreadLord\HeroDreadLordReady1.flac" or whatever, but of course even though you want to use that virtual path in the table when you look for this file on your Reforged install it's actually going to be in a location such as "war3.w3mod/_locales/enus.w3mod/units/undead/herodreadlord/herodreadlordready1.flac" or whatever. I am not on a computer where I can look these paths up at the moment so I am mostly just trying to type these from memory.

So let's assume everything that I just said sounds stupid and complicated. In my opinion, doing all of that is going to end up being equal or more work to what it would take you to just actually add the ready sound to the Tichondrius soundset. Skip all that other stuff -- at least prior to Reforged it was possible to literally edit any soundset you want. And Reforged mucked up a lot of this stuff and made it more complicated in an effort to support the computer generated character mouth movements, but the basic premise of how I would have done this pre-Reforged, I assume, would still work on Refoged. So, what you're going to want to do is to learn the layout and location of the soundset information on your installation. In Reforged these started moving around and getting more complicated but they are all still located in "UI\SoundInfo\blabla.slk". Historically it was "UI\SoundInfo\UnitAckSounds.slk" but Reforged may have moved this into the separate SLK files per-race that are named "undeaddialogues.slk" or something like this.

Regardless, you're going to want to find a table where you find a reference to HeroDreadLordReady as a key in the first left-most column, and then as a value it will have "Units\Undead\HeroDreadLord\HeroDreadLordReady1.flac" or whatever. Basically, you want to copy that row, and add a new row for Tichondrious. In the old system the ready sounds were stored in the same place as the other soundset sounds so if you're lucky that might still be true, although I'm not sure if that might have changed because of the ready sounds not needing to move the character lips with the Reforged computer generated lip movements (purchased in a license by Blizzard from FaceFX | OC3 Entertainment)

The premise of how these soundsets used to work is that it was very simple. The unit data (which you now see in your UnitSkins.txt) defines a "soundset" field which is a string name, such as "Tichondrius" or "HeroDreadLord". Oddly, historically this same string never appeared directly as a key in the UnitAckSounds.slk table. Instead, that string had a suffix added for each lookup such as "HeroDreadLordYes" and "HeroDreadLordWhat" and "HeroDreadLordYesAttack" and this was even though the unit skins would just have "soundset=HeroDreadLord". That's where the lookup key "HeroDreadLordReady" becomes important -- it really honestly is just automatically generated by the game engine via appending the string "Ready" on the end of the setting in your unit data (UnitSkins.txt).
So, all you really need to do, and I apologize for taking so many words to explain this, is to copy the "HeroDreadLordReady" row from whatever table you find it in (inside of "UI\SoundInfo\" in a file named "undeaddialogue.slk" or whatever Reforged calls it now, or maybe it will be in "UnitAckSounds.slk" if a file with that name still exists), and paste a new row where the leftmost key name now will be "TichondriusReady". And you can leave the file path column or columns the same, so that it still refers to "Units\Undead\HeroDreadLord\HeroDreadLordReady1.flac" or whatever, and that way any unit who has the voice of Tichondrius will play that "The night beckons!!" sound when the unit or hero is trained.

Looking back this was a lot more words than you needed for a relatively simple problem with a relatively simple solution. But by explaining what I know on these topics I hope that I lead you to a better future through better understanding. Good luck!
 
Last edited:
Level 3
Joined
Aug 24, 2021
Messages
21
Okay, hold up, I happened to be reading this thread and I can't help but feel like this thread totally derailed with a lack of technical understanding combined with too much technical understanding of possibly the wrong topic.

First off: War3 Model Editor
The War3 Model Editor program cannot open Warcraft III game installation files since the 2017(ish) patches, and as of the 2020 patch 1.32 the War3 Model Editor program cannot even open any models. In order to use that program, you have to go and download the legacy versions of the Warcraft III game because of how that program can't load anything at all on Patch 1.32 and beyond. The Warcraft III Patch 1.32 client includes files that look the same as the old ones and can be used to emulate the "Classic" game artwork, but these files are not the old legacy engine files. They are not the same format, and they will not open in the War3 Model Editor tool which has not been updated since 2006. We have the Reforged developers to blame for this (in my opinion) silly technicality -- the "classic legacy artwork" files included in the Reforged-era client, even if you do not buy Reforged and just download the bloated modern 1.32 installation in order to play classic -- even in that case all of your "classic" models are in the Reforged format which the old tools that many Warcraft III modders know and love such as War3 Model Editor cannot open. This is why you see "got a Shad tag" as your error message. "Shad" in this case is a binary reading of "Shader", and the old 2002 models were made in a game engine that did not use shader programs and those old assets would not contain references to information about shaders. This issue is hidden by Retera Model Studio because I try hard to pretend that a "classic looking asset in the Reforged format" and the "classic asset from the historical legacy 2002 game" are the same. I like to pretend that they are the same because they encode the same information, so to me when I go to use them they are functionally equivalent and I can easily convert between them with a touch of a button on Retera Model Studio (via "Scripts -> Assign FormatVersion").
So now you learned something fun about how @deepstrasz was trying to help you, and why it did not work for you, but let's go a step further and take a step back to look at what you're actually trying to achieve.

Second point: Reforged skins


You did not specify in any extensive depth but I assume you are referring to the "Units\UnitSkins.txt" file which was added in the Reforged 1.32 client. So it is possible that you quite literally mean that you edited the unit skins, but keep in mind at the same time that some user who is sitting on War3 Model Studio and living in the "good old days" version of Warcraft III is a user who plays a fundamentally simpler game engine where changing unit skins means something totally different. It would pretty much have to refer to modifying the characters in the World Editor, which I assume you are not doing.

So, given that you are not creating a custom map, and that it would desync you from other players to change game behaviors, I assume that creating a an invisible, dying destructable AND firing a custom trigger into the script environment are both totally off the table and not an option for you because you do not want to get disconnected from other players during a melee game in which you want to play your locally modified client to see the world a different way.

So, my heart goes out to @deepstrasz because he's talking about doing the sorts of things that I personally enjoy and that are the reason I was ever here to begin with but after rereading this thread a second time I firmly believe his suggestions are misguided given the goal you are trying to achieve.

Third point: how to actually do what you want
Let's talk about what you can do. You can locally modify unit soundsets OR models using the skin system without desyncing in a melee game. That's basically the entire point of a "skin". As a possible but simple experiment I would prescribe you to attempt changing the soundset of the undead dreadlord using the "Unit\UnitSkins.txt" file to instead be the "Tichondrius" soundset. Then when you play a melee map versus an opponent (who has no idea that you are using a modded client like this and cannot see your locally modded skins) you would find that your Dreadlord no longer says "The night beckons" when he is trained. And you are correct that this is because the "Tichondrius" soundset has no data regarding a Ready sound. So, assuming for example that you may have locally modded the dreadlord to use the Tichondrius 3D asset as his model file, you have two choices. As deepstrasz was hinting at, there is a system in place that allows you to embed a sound into a model file. However, without even looking I'm going to take a guess that both Tichondrius.mdx and HeroDreadLord.mdx both have no animation sequence named "Birth" in their model file because heroes usually spawn into the game by playing their Ready sound and doing their Stand animation or whatever, so they did not need a "Birth" animation.

However, if you did actually put in the effort and learn how to create a custom modified 3D model file for your character, give that model its own "Birth" sequence included in that model, and then during that sequence spawn a sound using the EventObject system that deepstrasz pictured, you would still have a problem. And this problem is, just for the sake of example, if you wanted to play "THe night beckons!" from a dreadlord in that model data, you would need a special 4-letter identifier added to the local Warcraft III client installation that would refer back to this "The night beckons" sound file. Because the other units in the game do not play their Ready sounds using this system, there is not already an identifier in the game data that you can use. So, you would have to go and modify "UI\SoundInfo\AnimLookups.slk" table to add an animation lookup for the sound file located at "Units\Undead\HeroDreadLord\HeroDreadLordReady1.flac" or whatever, but of course even though you want to use that virtual path in the table when you look for this file on your Reforged install it's actually going to be in a location such as "war3.w3mod/_locales/enus.w3mod/units/undead/herodreadlord/herodreadlordready1.flac" or whatever. I am not on a computer where I can look these paths up at the moment so I am mostly just trying to type these from memory.

So let's assume everything that I just said sounds stupid and complicated. In my opinion, doing all of that is going to end up being equal or more work to what it would take you to just actually add the ready sound to the Tichondrius soundset. Skip all that other stuff -- at least prior to Reforged it was possible to literally edit any soundset you want. And Reforged mucked up a lot of this stuff and made it more complicated in an effort to support the computer generated character mouth movements, but the basic premise of how I would have done this pre-Reforged, I assume, would still work on Refoged. So, what you're going to want to do is to learn the layout and location of the soundset information on your installation. In Reforged these started moving around and getting more complicated but they are all still located in "UI\SoundInfo\blabla.slk". Historically it was "UI\SoundInfo\UnitAckSounds.slk" but Reforged may have moved this into the separate SLK files per-race that are named "undeaddialogues.slk" or something like this.

Regardless, you're going to want to find a table where you find a reference to HeroDreadLordReady as a key in the first left-most column, and then as a value it will have "Units\Undead\HeroDreadLord\HeroDreadLordReady1.flac" or whatever. Basically, you want to copy that row, and add a new row for Tichondrious. In the old system the ready sounds were stored in the same place as the other soundset sounds so if you're lucky that might still be true, although I'm not sure if that might have changed because of the ready sounds not needing to move the character lips with the Reforged computer generated lip movements (purchased in a license by Blizzard from FaceFX | OC3 Entertainment)

The premise of how these soundsets used to work is that it was very simple. The unit data (which you now see in your UnitSkins.txt) defines a "soundset" field which is a string name, such as "Tichondrius" or "HeroDreadLord". Oddly, historically this same string never appeared directly as a key in the UnitAckSounds.slk table. Instead, that string had a suffix added for each lookup such as "HeroDreadLordYes" and "HeroDreadLordWhat" and "HeroDreadLordYesAttack" and this was even though the unit skins would just have "soundset=HeroDreadLord". That's where the lookup key "HeroDreadLordReady" becomes important -- it really honestly is just automatically generated by the game engine via appending the string "Ready" on the end of the setting in your unit data (UnitSkins.txt).
So, all you really need to do, and I apologize for taking so many words to explain this, is to copy the "HeroDreadLordReady" row from whatever table you find it in (inside of "UI\SoundInfo\" in a file named "undeaddialogue.slk" or whatever Reforged calls it now, or maybe it will be in "UnitAckSounds.slk" if a file with that name still exists), and paste a new row where the leftmost key name now will be "TichondriusReady". And you can leave the file path column or columns the same, so that it still refers to "Units\Undead\HeroDreadLord\HeroDreadLordReady1.flac" or whatever, and that way any unit who has the voice of Tichondrius will play that "The night beckons!!" sound when the unit or hero is trained.

Looking back this was a lot more words than you needed for a relatively simple problem with a relatively simple solution. But by explaining what I know on these topics I hope that I lead you to a better future through better understanding. Good luck!
Thank you, Retera.

You are doing an outstanding contribution to this small Warcraft community.

I'm literally speechless (in a positive way) on how well you explained all these things about the "SHAD" error etc.

I had no idea what it was and I hope that I will have more knowledge in the future and provide that knowledge to others here just like how you guys do.

Also, I would like to thank "deepstrasz" as well for all the help. I suppose that he learned something from this thread thanks to you as well :D

One last question, which should be easier to explain I guess. I downloaded some "Nightmare" NE skins (Reforged) for some units and buildings, however, I can see that in the .zip there are only texture files without any MDX.

One example for reference: Nightmare Ancient of War (Reforged)

How can I apply them to my game, should I use your tool for that? Again, I'm talking about simple reskin which will allow me to play "Melee" and multiplayer games, no new triggers, events etc.


Better to ask and avoid re-install than to break the game files by importing and doing the wrong stuff :vw_wtf:
 
Level 29
Joined
Jul 29, 2007
Messages
5,174
On that page if you look at the individual textures, the paths they override are specified.
In the import manager, you can double click on the file name of any import and override it to another path, so put the specified paths there.
You may need to restart WE for the new textures to show up instead of the ones they replace.
 

Attachments

  • Capture.JPG
    Capture.JPG
    66.9 KB · Views: 33
Level 3
Joined
Aug 24, 2021
Messages
21
On that page if you look at the individual textures, the paths they override are specified.
In the import manager, you can double click on the file name of any import and override it to another path, so put the specified paths there.
You may need to restart WE for the new textures to show up instead of the ones they replace.
Not sure on that, but I tried something simple and it works.

I just transferred the texture files to the correct folders for the specific unit/building.

For example, I transferred the Nightmare Ancient of War textures to the Warcraft 3/retail/buildings/night elf/ancientofwar folder and it works in game.

Thank you all again for the suggestions and help. Now it's time to finally enjoy the game as I want it to be :D
 
Level 3
Joined
Aug 5, 2017
Messages
20
Typically, changing the in-game song (including the main menu theme song) is much easier with this method:
Local files

After doing that trick, you'll have to put the song in this path: "Sound/Music/mp3Music". Create yourself in Warcraft 3 directory.
The main menu theme song file is "War3XMainScreen.mp3".

Any chance you'd know what Lobby screen name is? The main menu trick works great but join any map and it stops ;Sadface;
 
Status
Not open for further replies.
Top