PDA

View Full Version : Voicemod setup guide - EB as an example



Shigawire
12-08-2006, 18:53
Ok I wrote this in the hidden EB-forum on the Org. Now I thought it was wasteful not to share it with all.. so here I copy and paste what I wrote in the internal EB forum.

I'm using EB as a model to base the guide on, since in EB we have the most complex system of voicemods, I don't know many other mods that do this at all really.

First, before we continue, I must explain voice_types. There are 4 voice_types:
General_1, Heavy_1, Medium_1 and Light_1. There is even a 5th "Female_1", but ignore this red herring for now.
Here is the thing with voice_types. In Vanilla, they allowed some variation in voice between "heavier" and "lighter" units. But since I didn't want to spend 4x the time just to get that, I made only 1 set of voices.

Initially, I percieved a limitation to the amount of voicemods we could have.
It seemed to be limited to culture. But in fact, we can use the aforementioned voice_types to differentiate between factions sharing the same culturegroup. So, the Aedui, Arverni, Casse, Sweboz, Getai and Lusitani share the same culture group. Is this a problem? Let's look at the situation closer:

Once we have voicemods for all of these, we can divide them as follows (hypothetical):
Aedui, Arverni, Casse = Barbarian_General_1 (Gallic)
Lusitani = Barbarian_Heavy_1 (Lusitanian/Q-celtic)
Sweboz = Barbarian_Medium_1 (ProtoGermanic)
Getai = Barbarian_Light_1 (Greek with dacian influence?)

So this is how we do it in the instances where one culture is shared by linguistically different factions, for example the Barbarian culture, and of course the Eastern culture with both greek, armenian and persian in one culture.

We can relax for the Romans.. they don't share their culture. Same with the two greek culture groups.



Secondly, here are the txt-files that are involved in the voices, they are all found in EB\DATA\

THE FOLLOWING FILES POINT ONLY TO VOICE_TYPE:

export_descr_sounds_units_voice.txt (the main battlecommands and responses)
We call this one EDSUV

export_descr_sounds_soldier_voice.txt (Yell_Charge sounds etc)
We call this one EDSSV


THE FOLLOWING FILES POINT TO VOICE_TYPE AS WELL AS INDIVIDUAL UNIT NAMES:

descr_sounds_units_charge.txt (sets Group charge voices, many voices that yell charge)
We call this one DSUCh

descr_sounds_units_confirm.txt (sets group confirm voices, many voices that confirms an order, usually "Aye!")
We call this one DSUCo

descr_sounds_units_retreat.txt (sets group retreat voices)
We call this one DSUR

descr_sounds_units_celebrate.txt (sets group celebrate voices)
We call this one DSUCe

descr_sounds_units_taunt.txt (sets group taunt voices)
We call this one DSUT



THIS IS THE FILE WHERE ALL OF THE ABOVE FINDS REFERENCES TO UNIT NAMES AND VOICE_TYPE:
export_descr_units.txt (set voice_type for units here)
We call this one EDU



NOT RELATED TO VOICE_TYPE:
For the following 2 textfiles, we can set voices that are limited by culture.
I say we should MUTE the battle_events until they actually get recorded.
The user can read the message on the icon that drops down..

export_descr_sounds_units_battle_events.txt (The enemy gate is captured, TEH DAY IS OURS! etc)
We call this one EDSUBE

export_descr_sounds_stratmap_voice.txt (campaign map voices)
We call this one EDSStrat



Now!
Let's take the Latin voicemod as an example for this guide.
Make appropriately named directories in RTW\EB\DATA\SOUNDS
such as Latin for Latin, Gallic for Gallic
RTW\EB\DATA\SOUNDS\LATIN
RTW\EB\DATA\SOUNDS\GALLIC

Copy the new Latin soundfiles to the appropriate directory (Latin). Pile all of them in the root.




So we have copied the voicefiles over to the appropriate directories, and now we understand what voice_type is all about. What do we do next?


We start editing EDSUV!

First you must understand EDSUV...

This file is set up hierarchically..
Starts like this:

culture roman (everything under this goes under "roman" culture group)
--class General_1 (refers only to voice_type in EDU)
-----vocal Group_Created (event-name)
--------event (triggers an event)
-----------folder data/sounds/voice/human/localized/battle_map (defines directory of the file)
-----------Roman_General_1_Group_Created_1.wav (defines filename 1)
-----------folder data/sounds/voice/human/localized/battle_map (defines directory of the file)
-----------Roman_General_1_Group_Created_2.wav (defines filename 2)
-----------folder data/sounds/voice/human/localized/battle_map (defines directory of the file)
-----------Roman_General_1_Group_Created_1.wav (defines filename 3)
-----------end (triggers the end, and start of another)
------vocal Group_Disbanded (ex. Group_Disbanded)
---------event
-------------folder abc/def/ghi
-------------Filename_1.WAV
-------------folder abc/def/ghi
-------------Filename_2.WAV
-------------folder abc/def/ghi
-------------Filename_3.WAV
----------end
--class Heavy_1
------vocal Group_Disbanded
etc..

You understand so far?

Ok farther down in EDSUV you will come upon the unit_select sounds.
This is where it defines what sound is played when you click a unit.
These are slightly different from regular vocal events.
like this:

-----vocal Unit_Select
---------unit roman infantry camillan rorarii
-------------event
-----------------folder eb/data/sounds/latin
-----------------Roman_Latin_name_rorarii_1.wav
-----------------folder eb/data/sounds/latin
-----------------Roman_Latin_name_rorarii_2.wav
-----------------folder eb/data/sounds/latin
-----------------Roman_Latin_name_rorarii_3.wav
-----------------group
--------------end

The odd one out is the "group" trigger. I am not entirely sure what it does, maybe it calls group-sounds from Voice3.dat (where u find all the charge sounds).. whatever it is, it probably must be there.. so don't miss that.
Otherwise vocal unit_select calls are identical..

Now to EDIT the EDSUV

This is how I do it:
We start with the Romans, as they are at the top of EDSUV.
Romans don't share their culture with anyone. This means we can delete entire classes of voice_types we will never use, which would otherwise lead to more work and clutter up the file.
I remove everything from "class Heavy_1" all the way down to the last "Light_1", where it touches "culture greek" - but don't delete anything other than obsolete Roman voice_types. We want only to have General_1 under Roman culture.

When you have done that, you have to alter all the folder definitions for the Roman General_1. We placed the extra voicefiles for EB under EB\DATA\SOUNDS

Within the Roman culture, replace all instances of "folder data/sounds/voice/human/localized/battle_map" with "eb/data/sounds/latin"
Do not do this for the other cultures.
Notepad has "Replace" tool, press CTRL+H to get it.

Next, insert the correct filenames..
f.ex.
Roman_Latin_Group_Created_1.wav
instead of
Roman_General_1_Group_Created_1.wav

This is easy to do with CTRL+H , replace "Roman_General_1_" with "Roman_Latin_"

Now you need to add the EB-specific unit_names under the "unit_select" event hierarchy.

You have to add every single unit here. The unit must be added with spaces, not lower-dashes. So it will look something like this:

unit roman cavalry camillan eqvites
--event
-----folder eb/data/sounds/latin
-----Roman_Latin_name_equites_romani_1.wav
-----folder eb/data/sounds/latin
-----Roman_Latin_name_equites_romani_2.wav
-----folder eb/data/sounds/latin
-----Roman_Latin_name_equites_romani_3.wav
-----group
--end
unit roman cavalry eqvites consvlares
--event
-----folder eb/data/sounds/latin
-----Roman_Latin_name_equites_consulares_1.wav
-----folder eb/data/sounds/latin
-----Roman_Latin_name_equites_consulares_2.wav
-----folder eb/data/sounds/latin
-----Roman_Latin_name_equites_consulares_3.wav
-----group
--end

If there are some unit_names we haven't recorded the 3 voices for yet, it's okay to leave these empty. Like this.. (this is very important)

unit unit roman cavalry eqvites consvlares
--event
--group
--end

This is really important, because as long as you define the unit in EDSUV like this, the unit WILL speak the right language. It doesn't matter if the unit_select sound isn't recorded yet..
This is very useful in instances where you have a unit which speaks a completely different language from the culture-group wherein it's recruitable.
A great example is the Galatian soldiers. These should not speak Greek nor Persian, but Gallic. (no, I wont make another gallic voicemod with greek influences )

If you define the galatian units in EDSUV under the correct hierarchy (culture Barbarian class General_1), they WILL speak Gallic, even if they are in a non-gallic army. You following me yet? This means that a multiethnic army will truly SOUND multiethnic! Which is great!

Now we're almost done! The next steps are easy.

If we also have some Yell_Charge voices (which we have for the gallic), you have to define these in EDSSV. Lest you want them to "CHAAAARGE" in english.. I haven't yet recorded the yell_charge sounds for Latin. I will do it though.

Let's say for the sake of this guide that we have recorded the yell_charge sounds in Latin. Since we put all files in eb\data\sounds\latin we only have to make the "folder" pointer in EDSSV point to this directory under "culture Roman class General_1"

EDSSV is very similar to EDSUV

Here is where we change the Yell_Charge sounds

--vocal Individual_Charge
-----event probability .1 priority 80 mindist 2
---------folder data/sounds/voice/human/localized/battle_map -> eb/data/sounds/Latin
---------Roman_Latin_Individual_Charge_1.wav
---------folder data/sounds/voice/human/localized/battle_map -> eb/data/sounds/Latin
---------Roman_Latin_Individual_Charge_2.wav
---------folder data/sounds/voice/human/localized/battle_map -> eb/data/sounds/Latin
---------Roman_Latin_Individual_Charge_3.wav
---------folder data/sounds/Voice/Human/Generic -> eb/data/sounds/Latin
---------Yell_Charge_01.wav
---------folder data/sounds/Voice/Human/Generic -> eb/data/sounds/Latin
---------Yell_Charge_02.wav
---------folder data/sounds/Voice/Human/Generic -> eb/data/sounds/Latin
---------Yell_Charge_03.wav
---------folder data/sounds/Voice/Human/Generic -> eb/data/sounds/Latin
---------Yell_Charge_04.wav

Note that Yell_Charge sounds are usually in the "Generic" directory, but since we put them all in one basket to simplify things.. we point them all to the Latin dir.

Default is 47 files which continues to the number 61, we can change the number of files if we dont want to make as many as 47 of course.

The neat thing about
-event probability .1 priority 80 mindist 2
is that we can dictate the percieved behaviour of troops.
For "barbarians" we can increase the probability of a yell_charge.. default is .1 which is just 10% - I have personally increased the barbarian's probability to charge_yell up to ".5" (50%) , sounds much more violent!

I have no idea what priority or mindist does.. but my guess is that "priority" may be a way to determine the audibility of one sound in contrast to other sounds on the battlefield. "mindist" is probably the "minimum distance" that the sound is audible. Have not tested this.

Anyways.. just point those appropriate folder directions like this:
---------folder data/sounds/Voice/Human/Generic
to
---------folder eb/data/sounds/latin

But only for the Roman culture, don't do this for the others.


This part is for Group voices. These arent many sounds, but are still used by the game I think.
These are sounds where MANY MANY voices yell together.. in the distance probably.
The file used for this is: DSUCh (descr_sounds_units_charge.txt)
I noticed EB's DSUCh is empty!

Let's take the Barbarians as an example now. So here is how it looks in vanilla's DSUCh:

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;; BARBARIAN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


type barb peasant briton,barb peasant dacian,barb peasant gaul,barb peasant german,barb peasant scythian,barb peltast gaul,barb peltast german,barb slinger briton,barb archer dacian,barb archer scythian,warband archer dacian,warband archer german,warband archer scythian,warband huntsman gaul,warband hurler briton,barb infantry briton,barb infantry dacian,barb infantry gaul,warband spear german,warband sword briton,warband sword gaul,warband axe german,warband axe scythian,warband falx dacian,warband dhaxe german,barb warguard briton,barb warguard dacian,barb warguard gaul,warband woad briton,barb naked fanatics dacian,barb naked fanatics gauls,barb naked fanatics german,barb naked fanatics spain,barb druids briton,barb druids gaul,barb night raiders german,barb berserker german,barb wardogs briton,barb wardogs dacian,barb wardogs gaul,barb wardogs german,barb wardogs scythian,barb cavalry dacian,barb cavalry gaul,barb cavalry german,barb cavalry scythian,barb noble cavalry dacian,barb noble cavalry gaul,barb noble cavalry german,barb gothic cavalry german,barb chariot light briton,barb chariot heavy briton,barb horse archers scythian,barb noble horse archers scythian,barb scythian nobles scythian,barb ballista dacian,barb onager dacian,barb onager scythian,barb chieftain cavalry early dacian,barb chieftain cavalry early gaul,barb chieftain cavalry early german,barb chieftain cavalry early scythian,barb chieftain cavalry dacian,barb chieftain cavalry gaul,barb chieftain cavalry german,barb british general briton,barb scythian general scythian,spanish scutarii,spanish bull warriors,carthaginian warhounds,barbarian female peasant
event lod 5
folder data/sounds/Voice/human/localized/group
barb_group_charge_small_G01
barb_group_charge_small_G02
barb_group_charge_small_G03
end

event lod 10
folder data/sounds/Voice/human/localized/group
barb_group_charge_med_G01
barb_group_charge_med_G02
barb_group_charge_med_G03

end

event lod 20
folder data/sounds/Voice/human/localized/group
barb_group_charge_large_G01
barb_group_charge_large_G02
barb_group_charge_large_G03
end



yep.. as was noted in the initial listings of textfiles involved, DSUCh points both to VOICE_TYPE but also to UNIT NAME
You have to specify every single unit which are supposed to use this sound. Otherwise they'll be silent while charging.
After you have inserted all the appropriate unit names, the rest is easy.. just rename the folder directory to point to:
EB/DATA/SOUNDS/GALLIC



The next part is the easiest. We edit voice_types of units in EDU
Make sure all units who speak the same language have the same voice_type
In my EDU, I have made sure ALL roman units have "General_1" voice_type.
Those romans that dont have General_1 will be mute. :p
Same with Gauls for the moment.

Also, culture definition for Barbarian in EDSUV is:
culture barbarian,nomadic
This means any barbarian or nomadic culture with units that have "General_1" as voice_type will also speak gallic. That means getai, sweboz, you name it we got it. We can of course break the "nomadic" culture away from its symbiosis with "barbarian" and set it up as its own voice-culture like this:
culture nomadic


Thats it.

Macedonn
03-05-2007, 09:59
One quick question
can i use .mp3 instead of .wav?

Macedonn
03-07-2007, 16:16
Ok i try and game crash if i use .MP3 and its work fine with .wav

Shigawire
06-18-2007, 04:04
Yes, the game crashes to desktop when you try using MP3s.

Also, you must use the correct WAV codec, which is MS ADPCM 8bit (compressed).

wlesmana
06-18-2007, 18:29
Question: did you notice that regardless of culture, in campaign map if your army has a general leading it and despite the voice type of his bodyguard unit, the army (multiple units selected) ALWAYS use the General_1 voice type? If an individual unit is selected, then it's using that unit's voice type. But if the army has a general, and multiple units are selected, it's always using General_1.

Shigawire
02-21-2008, 13:05
Well, then you're not doing it right. Because it works very well in my tests.

Makanyane
02-21-2008, 14:13
I had same problem as wlesmana in BI - tried using general_1 for monster noises for special units, and found to my embarrassment it was automatically getting used for bodyguards and groups with general in.... so had to switch everything around and borrow medium_1 instead.

Shigawire
02-21-2008, 16:13
Then you have undoubtedly made errors in EDSUV.

Shigawire
02-23-2008, 22:37
As of now, EB has a total of 6 voicemods:

K-Celtic (Gallic), Q-Celtic (Celt-Iberian), Pahlavan (Parthians and others), Latin (SPQR), Proto-Germanic (Sweboz), Greek (6 different voices spread out on 8 factions).

So yes, it can be done. And here is how it is organized:

Voice culture 1. (culture Roman)

Roman = Roman = General_1

Voice culture 2. (cultures Greek,Egyptian)

Greek0 = Baktria, Koinon Hellenon, = General_1 (Greek,Egyptian)
Greek1 = Epeiros = Heavy_1 (Greek)
Greek2 = Ptolemaioi = Medium_1 (Egyptian)
Greek3 = Makedonia = Light_1 (Greek)
Greek4 = Arche Seleukeia = Female_1 (Egyptian)



Voice culture 3. (culture Barbarian)

Gallic = Aedui, Arverni, Casse = General_1 (barb)
Germanic = Sweboz = Heavy_1 (barb)
Q-Celtic = Lusotannan = Medium_1 (barb)
Greek2 = Getai = Light_1 (barb) *remove ptolemaioi units



Voice culture 4. (cultures eastern,carthaginian,nomad)

Pahlava = Pahlava, Hayasdan, Sauromatae, Saka = General_1 (eastern, nomad)
Greek5 = Pontos = Heavy_1 (eastern)
Punic = Qarthadast, Saba = Medium_1 (carthaginian)


Notice how no cultures are repeated, and no voicetype classes are repeated. The EDSUV in EB 1.0 had many such mistakes, and I had to correct them just now the last 3 days.

Many mistakes you make comes in the form of the same classes or cultures having been called twice already.

Also, ALL the units must be mentioned in EDSUV. Not only must they be mentioned, but they must be mentioned in under the correct culture and under the correct voicetype class.

Example:


unit roman cavalry camillan eqvites
event
folder eb/data/sounds/latin
Roman_Latin_name_equites_romani_1.wav
folder eb/data/sounds/latin
Roman_Latin_name_equites_romani_2.wav
folder eb/data/sounds/latin
Roman_Latin_name_equites_romani_3.wav
group
end
unit roman cavalry eqvites consvlares
event
folder eb/data/sounds/latin
Roman_Latin_name_equites_consulares_1.wav
folder eb/data/sounds/latin
Roman_Latin_name_equites_consulares_2.wav
folder eb/data/sounds/latin
Roman_Latin_name_equites_consulares_3.wav
group
end
unit roman cavalry eqvites praetoriani
event
folder eb/data/sounds/latin
Roman_Latin_name_equites_praetoriani_1.wav
folder eb/data/sounds/latin
Roman_Latin_name_equites_praetoriani_2.wav
folder eb/data/sounds/latin
Roman_Latin_name_equites_praetoriani_3.wav
group
end

It doesn't even matter if you don't have a unit name voice file, like here:



;GETAI
unit dacian cavalry komatai hippeis
event
group
end
unit dacian cavalry ktistai
event
group
end
unit dacian cavalry phylakes daoi
event
group
end

As you can see these assignments are devoid of any wav-file reference, except the generic "group" assignment. So when you click these units, they won't tell you their name. But, if I didn't assign them in here like this, they wouldn't have voices at ALL! Or, they would have the General_1 voicetype of the voice culture.. meaning Getai being in the Barbarian culture (but should speak greek), they'd be speaking Gallic. This is why it's crucial to list every single unit - whether you have the soundfile for them or not.

Ibrahim
06-18-2008, 20:31
Yes, the game crashes to desktop when you try using MP3s.

Also, you must use the correct WAV codec, which is MS ADPCM 8bit (compressed).

I was able to achieve the same affect (i.e. make it work) with radio quality WAV sounds made in accessories=> enterntainment=> sound recorder. (it saves at a rate of 43kb/sec):yes:. problem in my case is a lack of an amplifying microphone (instead it records the sound as is):yes:.

anyways, I have a question: how can I make a unit (in this case, a feudal sargeant) use different languages, so in the English faction they use middle english, and in france old french?

wlesmana
06-29-2008, 16:38
I have tested what I was asking before and I'm afraid the result is not positive.

Here is my method of testing:

I edited EDSUV from RTW vanilla (unmodded). I take the roman culture and edited Light_1 and replaced the group formation voice with something noticeable (in this case, screeching women's voice). I did not change anything else.

Then I edited the early roman general cavalry voice from General_1 into Light_1.

I then head into campaign and fight with my Roman general. The voice heard when forming a group was NOT the screenching women's voice. It's the regular Roman general.

Second testing:

I reloaded vanilla EDSUV. I now changed group formation voice announcement of General_1 with screeching women's voice. Now I have the roman general cavalry in Light_1, with screeching women voice in General_1. No other changes.

I head in campaign, fight with my Roman general, and when I press group fromation button, I heard screeching women's voice.

My conclusion:
In campaign (works only for generals and NOT captain), the game automatically uses General_1 of that culture for any unit with the general, regardless of the unit's original voice in EDU.

In your case, I suspect that any Greek faction will use whichever voice is in General_1 of greek culture.

This sucks really bad because now I could never get Nazgul and orc general voices in 1 culture, nor could I have Eowyn sound like her in campaign.

Ibrahim
07-04-2008, 05:35
but you have answered my question: thanks
:balloon2::balloon2::balloon2: for you

Squid
07-04-2008, 21:54
wlesmana, one question about your test, did you remember to delete/rename the events.dat file? From my own testing, changes to sound do not take effect if the file is there in its original name. I usually rename to events.dat.bak.

wlesmana
07-05-2008, 07:36
Yes, I did. Like I mentioned in my second testing, the general unit was using the screeching women voice, so it's a change already.

I really, really hope I was wrong though. I hope Shigawire forgot to mention something and that EB voice mod actually works. The fact that my Nazgul generals got orc voices and Eowyn sounds like a guy is rather annoying.

lim_lucky
07-12-2008, 17:11
wlesmana, one question about your test, did you remember to delete/rename the events.dat file? From my own testing, changes to sound do not take effect if the file is there in its original name. I usually rename to events.dat.bak.

I am currently trying to mod EXRMv3.3 to my personal use.
Initially I followed the steps given in your guide and changed only the roman culture. I also have EB installed. Under export_descr_sounds_units_voice.txt, I just replaced the original line (which defines directory of the file) to folder eb/data/sounds/latin However when I loaded the game, the roman units still respond with the same sounds and not the sounds from EB.
I tried renaming or moving the following files: events.dat, events.idx and if either 1 or both of them are not in the exrm/data/sounds/ directory, the game will report an error: failed to open sound database! before the loading screen.

lim_lucky
07-12-2008, 17:15
In addition, I also tried adding the music from EB. I can't seem to find much information on modding music but I did manage to find this thread:
https://forums.totalwar.org/vb/showthread.php?t=53419


LAST NOTE: If you've never modded the music before and you've just upgraded with 1.2 patch, there's a chance you have a file in Data/sounds folder called events.dat. This file is not really used by the game but it does overwrite any changes you made to desc_sounds_music.txt so if you find this file, just rename or dump it.
It is mentioned that events.dat can also be renamed or dumped, however as I have explained above, I will receive an error.
I edited descr_sounds_music.txt and changed the reference directory to data/sounds/music (I copied this from EB descr_sounds_music.txt). To be sure, I copied the music folder from RTW/EB/data/sounds/ into RTW/data/sounds/ as well as RTW/exrm/data/sounds/ . I even copied the events.dat from EB and removed both events.dat, events.idx however the same error will still occur. If both the files are not removed, the music will remain the same as the original game.

I hope someone could advice how to go around the error when i remove events.dat, or point out some mistakes I have made as I'm still quite new to modding sounds. I have experienced modding quite a lot of txt files with regards to units, buildings, ancillaries and other stuff, but I'm quite stuck with music as I don't find a lot of guides or threads on it. Thanks in advance.