Jump to content

Sound replacement possible?


TRekNexus

Recommended Posts

Okay, I got it working. I've replaced the combat tracks, "geoscape" tracks, mission soldier select, and intercept track with the PSX Ufo Enemy Unknown music so far. The only music track that didn't want to play the replaced music is the main menu track. But no biggie. I'll be posting this on the mod page soon-ish. It plays pretty seamlessly with the original tracks too. Sweet!

 

Thanks again for the help guys :smile: LiQuid911's step-by-step is good material for the tutorial/wiki page, no?

 

EDIT: Hmm, I don't actually have permission from the copyright holders to re-distribute these files in a mod. Will I get myself banned if I do?

Edited by TRekNexus
Link to comment
Share on other sites

  • Replies 199
  • Created
  • Last Reply

Top Posters In This Topic

Glad it helped :) The first encounter with udk is a bit overwhelming.

I'm not sure if it's allowed to upload it here. I have a similar question.. I'd like to upload upks with splinter cell 4 music, which is legaly avaliable on the internet. Well at least the official soundtrack, I'd like to distribute the looping tracks ripped from the game.

Link to comment
Share on other sites

I am not a lawyer, but the terms on Nexus are pretty clear. If you are not the copyright holder, you need to be able to point to a clear statement by the actual copyright holder giving permission to redistribute. The mere fact you might be able to obtain the material on the Internet or own a valid copy is NOT permission to redistribute. ("All rights reserved" means exactly that.) When in doubt, ask the site management or the copyright holder directly. Opinions in a forum are worth exactly what you paid for them (including this one), but common sense still applies. Copyright holders have to vigorously defend those rights or they lose them.

 

@LiQuiD911: I'd like your permission to use the text and images in your "step-by-step" as the basis for the wiki tutorial, please.

 

-Dubious-

Edited by dubiousintent
Link to comment
Share on other sites

Aww, that's too bad. Seems such a waste to not be able to share it :/ I know that there are people who prefer the original music but don't have the technical skill and/or patience to wrap their heads around modding so they can do it themselves. I barely did :P

 

I respect the Nexus terms tho.

 

@Fkyx:

Thanks for the pointer. I'll check it out :)

Link to comment
Share on other sites

@dubious Sure (: , here are the non compressed images. You can blur the deus ex files if you deem it appropriate

 

 

http://i60.tinypic.com/2rz6rte.png

http://i62.tinypic.com/rgz8qv.png

 

 

 

I made some tests, soundnodewave name doesn't matter, probably only the package and cue names do.

Also the game will load music files even if they are in a subfolder of cookedpcconsole, this way it's a bit tidier.

Edited by LiQuiD911
Link to comment
Share on other sites

Aww, that's too bad. Seems such a waste to not be able to share it :/ I know that there are people who prefer the original music but don't have the technical skill and/or patience to wrap their heads around modding so they can do it themselves. I barely did :tongue:

 

I respect the Nexus terms tho.

 

@Fkyx:

Thanks for the pointer. I'll check it out :smile:

 

I agree. Of course, you can post a list of the replacements you made, along with any technical things others might need to know. Even the "uncooked" UDK code. If they have access to the sound files and want them bad enough, that may be all the push they need. It's just the sound files themselves you can't redistribute.

 

@LiQuiD911: Thanks!

 

EDIT: The 'Sound Files' wiki article has been updated with the latest tutorial and mods from this thread. The respective authors should check for inconsistencies or missing elements. You can either make edits yourself or post here and I'll try to carry out your wishes.

 

@LiQuiD911: I got both your files, but couldn't see anything significantly different between them, so I only used one. I added a bit of clarification under the image that you might want to tweak.

 

-Dubious-

Edited by dubiousintent
Link to comment
Share on other sites

I think only "The other thing is that combat music is not called GeoScape; that's used on the strategic side in Mission Control." should be removed, the remaining part seems ok. I posted 2 images , one for replacement (mission control) and on for new combat music with arbitrary names.

Link to comment
Share on other sites

I think only "The other thing is that combat music is not called GeoScape; that's used on the strategic side in Mission Control." should be removed, the remaining part seems ok. I posted 2 images , one for replacement (mission control) and on for new combat music with arbitrary names.

We can move it. But as it was something that caused confusion initially, I hate to lose information once it gets clarified because someone else is likely to have the same confusion. Or are you saying it's incorrect?

 

Edit: Ah. I think I see what you mean. Geoscape is an example of strategic music used in Mission Control. As stated it's implying it's the entirety of it. I'll make that change regardless.

 

As for two images, just showing different names is insufficient in my opinion; leading to more questions than it clears up. We should provide an explanation of how you obtained different results between the two images; the intermediate steps if you will. We have to bear in mind that we are going to get people who haven't even seen the UDK yet looking at this article. Unspoken assumptions are the bane of tech documents.

 

I have moved the first image to better illustrate that it is showing a "replacement" process, and added the second image where you start talking about adding new combat music. However, the image is showing you selecting cue "Pic_BossFight_Cue" and your example for the defaultContent.ini structure is:

 

 

I.e. CombatMusicCues="SarifHQ_Intro_Combat.SarifHQ_Intro_Combat_Cue"

 

Assuming "Pic_BossFight" is the "new" music package, shouldn't we change the example to:

 

I.e. CombatMusicCues="Pic_BossFight.Pic_BossFight_Cue"

 

for consistency? Otherwise we have a name with no connection to the rest of the article. Or we need some additional clarification. And at what point did you have to click on the "New" button instead of the "Import" button? Or did you?

 

-Dubious-

Edited by dubiousintent
Link to comment
Share on other sites

I've been experimenting a bit with how the VoicePackageInfo config variable is getting initialized for the vanilla voices. I did some messing around converting GetPossibleVoices from a native function to an unrealscript function (with a bit of black-magic hackery), and discovered a few things.

-- The problem with regard to excess number of female voices for the vanilla voices isn't an issue with GetPossibleVoices itself, but with some initialization code auto-adding values to the VoicePackageInfo config variable.
With the rewritten GetPossibleVoices function, the 6 vanilla female voices always return 6 when GetPossibleVoices scans through the VoicePackageInfo config variable, even when fewer female voices are defined. If I explicitly return only 4 voices then the spinner properly has only 4. There is some initialization code that is auto-populating the VoicePackageInfo config variable with entries. I tested completely removing one of the female english voice files from the Voices folder and it had no effect, which presumably means that some code is filling out entries "blind".
-- The rewritten GetPossibleVoices does return the correct number of female (and male, and MEC) voices for languages above 6
This is an improvement over the vanilla native GetPossibleVoices, which appears to always statically return the 6 enums for female voices.

Here's the change in UPKmodder format :

 

 

 

MODFILEVERSION=4
UPKFILE=XComGame.upk
GUID=1C 18 A1 1A 2B C3 34 4E 8B 2C 72 33 CD 16 7E 3E // XComGame_EW_patch3.upk
FUNCTION=GetPossibleVoices@XComContentManager
RESIZE=290

// rewrite native function to fix problem with female voices always returning 6 options

[BEFORE_HEX]
[HEADER]
26 00 00 00 16 00 00 00 
[/HEADER]
[code]
//NativeParm(Gender)
29 6B 51 00 00 
//NativeParm(LanguageIdx)
29 6A 51 00 00 
//NativeParm(bIsMec)
29 69 51 00 00 
//NativeParm(VoiceIds)
29 68 51 00 00 
//NOP
0B 
//EOS
53 

[/CODE]

//footer flags
00 00 00 
00 04 42 00 // native function
//E7 3A 00 00 00 00 00 00
[/BEFORE_HEX]



[AFTER_HEX]
[HEADER]
EA 03 00 00 A6 02 00 00
[/HEADER]
[code]
//VoiceIDs.AddItem(0) // add extra element to use as loop counter
55 48 68 51 00 00 03 00 24 00 16

//if(VoiceIds[0] < VoicePackageInfo.Length)
07 D7 03 96 10 25 48 68 51 00 00 36 01 13 4F 00 00 16 

	//if(VoicePackageInfo[VoiceIds[0]].Language == LanguageIdx)
	07 C7 03 9A 35 F1 4E 00 00 F3 4E 00 00 00 00 10 10 25 48 68 51 00 00 01 13 4F 00 00 00 6A 51 00 00 16 

		//if(VoicePackageInfo[VoiceIds[0]].ArchetypeName != "")
		07 92 03 7B 35 63 4E 00 00 64 4E 00 00 00 00 10 10 25 48 68 51 00 00 01 13 4F 00 00 1F 00 16 

			//if(VoiceIds.Find(VoicePackageInfo[VoiceIds[0]].VoiceType) == -1
			07 8F 03 9A 46 48 68 51 00 00 29 00 35 F2 4E 00 00 F3 4E 00 00 00 00 10 10 25 48 68 51 00 00 01 13 4F 00 00 16 1D FF FF FF FF 16 

			//if(VoicePackageInfo[VoiceIds[0]].IsMec == bIsMec)
			//07 2E 02 F2 35 F0 4E 00 00 F3 4E 00 00 00 00 10 10 25 48 68 51 00 00 01 13 4F 00 00 2D 00 69 51 00 00 16

				//if(bIsMec)
				07 36 02 2D 00 69 51 00 00 

					//if(Gender == 1)  // male
					07 88 01 9A 38 3A 00 6B 51 00 00 2C 01 16

						//if((VoicePackageInfo[VoiceIds[0]].VoiceType >= 53 && (VoicePackageInfo[VoiceIds[0]].VoiceType <= 54))
						07 85 01 82 99 38 3A 35 F2 4E 00 00 F3 4E 00 00 00 00 10 10 25 48 68 51 00 00 01 13 4F 00 00 2C 35 16 18 2F 00 98 38 3A 35 F2 4E 00 00 F3 4E 00 00 00 00 10 10 25 48 68 51 00 00 01 13 4F 00 00 2C 36 16 16 

							//VoiceIDs.AddItem(VoicePackageInfo[VoiceIds[0]].VoiceType) // add extra element to use as loop counter
							55 48 68 51 00 00 29 00 35 F2 4E 00 00 F3 4E 00 00 00 00 10 10 25 48 68 51 00 00 01 13 4F 00 00 16

					//else
					06 33 02 

						//if(Gender == 2)  // female
						07 33 02 9A 38 3A 00 6B 51 00 00 2C 02 16

							//if((VoicePackageInfo[VoiceIds[0]].VoiceType >= 57 && (VoicePackageInfo[VoiceIds[0]].VoiceType <= 58))
							07 33 02 82 99 38 3A 35 F2 4E 00 00 F3 4E 00 00 00 00 10 10 25 48 68 51 00 00 01 13 4F 00 00 2C 39 16 18 2F 00 98 38 3A 35 F2 4E 00 00 F3 4E 00 00 00 00 10 10 25 48 68 51 00 00 01 13 4F 00 00 2C 3A 16 16 

								//VoiceIDs.AddItem(VoicePackageInfo[VoiceIds[0]].VoiceType) // add extra element to use as loop counter
								55 48 68 51 00 00 29 00 35 F2 4E 00 00 F3 4E 00 00 00 00 10 10 25 48 68 51 00 00 01 13 4F 00 00 16

				//else
				06 8F 03 

					//if(Gender == 1)  // male
					07 E4 02 9A 38 3A 00 6B 51 00 00 2C 01 16

						//if((VoicePackageInfo[VoiceIds[0]].VoiceType >= 1 && (VoicePackageInfo[VoiceIds[0]].VoiceType <= 9))
						07 E1 02 82 99 38 3A 35 F2 4E 00 00 F3 4E 00 00 00 00 10 10 25 48 68 51 00 00 01 13 4F 00 00 2C 01 16 18 2F 00 98 38 3A 35 F2 4E 00 00 F3 4E 00 00 00 00 10 10 25 48 68 51 00 00 01 13 4F 00 00 2C 09 16 16 

							//VoiceIDs.AddItem(VoicePackageInfo[VoiceIds[0]].VoiceType) // add extra element to use as loop counter
							55 48 68 51 00 00 29 00 35 F2 4E 00 00 F3 4E 00 00 00 00 10 10 25 48 68 51 00 00 01 13 4F 00 00 16

					//else
					06 8F 03 

						//if(Gender == 2)  // female
						07 8F 03 9A 38 3A 00 6B 51 00 00 2C 02 16

							//if((VoicePackageInfo[VoiceIds[0]].VoiceType >= 12 && (VoicePackageInfo[VoiceIds[0]].VoiceType <= 17))
							07 8F 03 82 99 38 3A 35 F2 4E 00 00 F3 4E 00 00 00 00 10 10 25 48 68 51 00 00 01 13 4F 00 00 2C 0C 16 18 2F 00 98 38 3A 35 F2 4E 00 00 F3 4E 00 00 00 00 10 10 25 48 68 51 00 00 01 13 4F 00 00 2C 11 16 16 

								//VoiceIDs.AddItem(VoicePackageInfo[VoiceIds[0]].VoiceType) // add extra element to use as loop counter
								55 48 68 51 00 00 29 00 35 F2 4E 00 00 F3 4E 00 00 00 00 10 10 25 48 68 51 00 00 01 13 4F 00 00 16

		//else  // found a blank Archetype
		06 C7 03 

			//VoiceIds.RemoveItem(VoicePackageInfo[VoiceIds[0]].VoiceType)
			56 48 68 51 00 00 29 00 35 F2 4E 00 00 F3 4E 00 00 00 00 10 10 25 48 68 51 00 00 01 13 4F 00 00 16

	//++ VoiceIds[0] 
	A3 10 25 48 68 51 00 00 16 

	//while loop
	06 0F 00 

//VoiceIds.Remove(0, 1) // remove the extra element
40 48 68 51 00 00 25 26 16 

//return 
04 0b  

0b 0b 0b 

//EOS
53 
[/CODE]

//footer flags
00 00 00 
02 01 02 00 // simulated, not native function
//00 26 00 00 00 00 00 00

[/AFTER_HEX] 

 

 

 

 

Since the converted native function has no local variables in unrealscript, I add an extra element to the head of the VoiceIds dynamic array to function as a counter stepping through the list. After the VoicePackageInfo config array has been stepped through, that element is removed.

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.

×
×
  • Create New...