BrainBread 2

BrainBread 2

评价数不足
HowTo - Creating your own soundset
由 Wuffesan 制作
Want to create your own custom voicepack for the survivors, the military, zombies or even fred? This guide will explain the basics!
   
奖励
收藏
已收藏
取消收藏
The General Basics
Before we start, you first need to know that to create your own custom voiceset for survivors, or any of the available NPC choices, you need to first create a text file in 2 areas, depending which it is.

Step 1: Voicebanks
The voicebanks is where you define which sounds should be registered. We made these into text files and easy to modify for people who want to create their own voicebanks, or voicesets.

You can find these banks under the brainbread2/data/soundsets under the root folder of the game. This is where you setup your voicebanks to one of the following:
  • Fred
  • Walker
  • Military
  • Bandit
  • Announcer
  • HumanPlayer
  • ZombiePlayer

Step 2: In-Game worthy
Before we begin, go trough the official voicebanks to see how its all setup. After you have done that, we should begin with the next step, making the sounds to actually work!

Now we head into brainbread2/data/soundscripts, there you can find a lot of soundscripts files, but the ones we are looking for are these:
  • npc
  • player

Its a simple way to organize your soundscripts, and to let people know where the sound is coming from. Now, let's say we want to create a player voiceset, we would then just open up the player folder and check how the official ones are setup.

And this is where you would go "what" and be all confused. For example, Pantsman reads the soundscript 'Pantsman', but in the file it says HumanPlayer_Pantsman_Male.

Basically it reads it like this: A_B_C.
  • A = Type
  • B = Our prefix
  • C = Is it male or female?

C is coming from the model name itself, if it has the prefix _male or nothing at all at the end, it will fallback to _Male, else it will read _Female if it finds _female. Quite confusing huh?

To put it simply:
  • my_model -- Will read _Male
  • my_model_male -- still reads _Male
  • my_model_female -- reads _Female
Example
The code below is basically the files needed to create your own custom survivor voiceset. Feel free to use this as a base!

Survivor example
data/soundsets/survivor_example.txt
"SoundData" { // Lets add it to all the player characters! "HumanPlayer" { "Name" "My Example" "Prefix" "Example_Survivor" "CharacterLink" "bb_chris" } "HumanPlayer" { "Name" "My Example" "Prefix" "Example_Survivor" "CharacterLink" "bb_pantsman" } "HumanPlayer" { "Name" "My Example" "Prefix" "Example_Survivor" "CharacterLink" "bb_joe" } "HumanPlayer" { "Name" "My Example" "Prefix" "Example_Survivor" "CharacterLink" "bb_mime" } "HumanPlayer" { "Name" "My Example" "Prefix" "Example_Survivor" "CharacterLink" "bb_security" } }

data/soundscripts/player/survivor_example.txt
"HumanPlayer_Example_Survivor_Male.Death" { "channel" "CHAN_VOICE" "volume" "0.8" "pitch" "PITCH_NORM" "soundlevel" "SNDLVL_NORM" "rndwave" { "wave" "voices/example_survivor/death01.wav" "wave" "voices/example_survivor/death02.wav" "wave" "voices/example_survivor/death03.wav" "wave" "voices/example_survivor/death04.wav" } } "HumanPlayer_Example_Survivor_Male.ImpactPain" { "channel" "CHAN_VOICE" "volume" "0.8" "pitch" "PITCH_NORM" "soundlevel" "SNDLVL_NORM" "rndwave" { "wave" "voices/example_survivor/pain01.wav" "wave" "voices/example_survivor/pain02.wav" "wave" "voices/example_survivor/pain03.wav" } } "HumanPlayer_Example_Survivor_Male.BurnPain" { "channel" "CHAN_VOICE" "volume" "0.7" "soundlevel" "SNDLVL_75dB" "rndwave" { "wave" "voices/example_survivor/burning01.wav" "wave" "voices/example_survivor/burning02.wav" "wave" "voices/example_survivor/burning03.wav" "wave" "voices/example_survivor/burning04.wav" "wave" "voices/example_survivor/burning05.wav" } } // Custom "HumanPlayer_Example_Survivor_Male.Taunt" { "channel" "CHAN_VOICE" "volume" "0.8" "pitch" "PITCH_NORM" "soundlevel" "SNDLVL_NORM" "rndwave" { "wave" "voices/example_survivor/taunt01.wav" "wave" "voices/example_survivor/taunt02.wav" "wave" "voices/example_survivor/taunt03.wav" "wave" "voices/example_survivor/taunt04.wav" "wave" "voices/example_survivor/taunt05.wav" "wave" "voices/example_survivor/taunt06.wav" "wave" "voices/example_survivor/taunt07.wav" } } "HumanPlayer_Example_Survivor_Male.Infected" { "channel" "CHAN_VOICE" "volume" "0.900" "pitch" "PITCH_NORM" "soundlevel" "SNDLVL_NORM" "rndwave" { "wave" "voices/example_survivor/infected01.wav" "wave" "voices/example_survivor/infected02.wav" "wave" "voices/example_survivor/infected03.wav" } } "HumanPlayer_Example_Survivor_Male.PickupHealth" { "channel" "CHAN_VOICE" "volume" "0.700" "pitch" "PITCH_NORM" "soundlevel" "SNDLVL_NORM" "rndwave" { "wave" "voices/example_survivor/pickup_health01.wav" "wave" "voices/example_survivor/pickup_health02.wav" "wave" "voices/example_survivor/pickup_health03.wav" "wave" "voices/example_survivor/pickup_health04.wav" } } "HumanPlayer_Example_Survivor_Male.PickupBriefcase" { "channel" "CHAN_VOICE" "volume" "0.700" "pitch" "PITCH_NORM" "soundlevel" "SNDLVL_NORM" "rndwave" { "wave" "voices/example_survivor/obj_briefcase_obtained01.wav" } } // Voice Wheel "HumanPlayer_Example_Survivor_Male.Agree" { "channel" "CHAN_VOICE" "volume" "1.0" "pitch" "PITCH_NORM" "soundlevel" "SNDLVL_NORM" "rndwave" { "wave" "voices/example_survivor/agree01.wav" "wave" "voices/example_survivor/agree02.wav" "wave" "voices/example_survivor/agree03.wav" } } "HumanPlayer_Example_Survivor_Male.Disagree" { "channel" "CHAN_VOICE" "volume" "1.0" "pitch" "PITCH_NORM" "soundlevel" "SNDLVL_NORM" "rndwave" { "wave" "voices/example_survivor/disagree01.wav" "wave" "voices/example_survivor/disagree02.wav" } } "HumanPlayer_Example_Survivor_Male.Follow" { "channel" "CHAN_VOICE" "volume" "1.0" "pitch" "PITCH_NORM" "soundlevel" "SNDLVL_NORM" "rndwave" { "wave" "voices/example_survivor/followme01.wav" "wave" "voices/example_survivor/followme02.wav" "wave" "voices/example_survivor/followme03.wav" } } "HumanPlayer_Example_Survivor_Male.TakePoint" { "channel" "CHAN_VOICE" "volume" "1.0" "pitch" "PITCH_NORM" "soundlevel" "SNDLVL_NORM" "rndwave" { "wave" "voices/example_survivor/takepoint01.wav" "wave" "voices/example_survivor/takepoint02.wav" "wave" "voices/example_survivor/takepoint03.wav" } } "HumanPlayer_Example_Survivor_Male.NoWeapon" { "channel" "CHAN_VOICE" "volume" "1.0" "pitch" "PITCH_NORM" "soundlevel" "SNDLVL_NORM" "rndwave" { "wave" "voices/example_survivor/noweapon01.wav" "wave" "voices/example_survivor/noweapon02.wav" "wave" "voices/example_survivor/noweapon03.wav" } } "HumanPlayer_Example_Survivor_Male.NoAmmo" { "channel" "CHAN_VOICE" "volume" "1.0" "pitch" "PITCH_NORM" "soundlevel" "SNDLVL_NORM" "rndwave" { "wave" "voices/example_survivor/noammo01.wav" "wave" "voices/example_survivor/noammo02.wav" } } "HumanPlayer_Example_Survivor_Male.Ready" { "channel" "CHAN_VOICE" "volume" "1.0" "pitch" "PITCH_NORM" "soundlevel" "SNDLVL_NORM" "rndwave" { "wave" "voices/example_survivor/ready01.wav" "wave" "voices/example_survivor/ready02.wav" } } "HumanPlayer_Example_Survivor_Male.Look" { "channel" "CHAN_VOICE" "volume" "1.0" "pitch" "PITCH_NORM" "soundlevel" "SNDLVL_NORM" "rndwave" { "wave" "voices/example_survivor/lookat_generic01.wav" "wave" "voices/example_survivor/lookat_generic02.wav" } }
15 条留言
Wuffesan  [作者] 2017 年 7 月 21 日 上午 8:55 
"wave" "foo/bar/my_sound.ogg"
will mean sound/foo/bar/my_sound.ogg

so If i make a sound under sound/voices/foobar/ and name it example, which has extension .ogg, it will make the path " voices/foobar/example.ogg " for the script file.
jummin2 2017 年 7 月 21 日 上午 8:50 
Thanks, but where do I put the actual .wav files so I can then change the file location of them in the notepad for it to work?
Wuffesan  [作者] 2017 年 7 月 20 日 下午 12:53 
replace the .wav portion with .ogg
jummin2 2017 年 7 月 20 日 下午 12:36 
How would I put an ogg file where the .wav's are?
Wuffesan  [作者] 2017 年 1 月 10 日 下午 10:47 
I haven't updated this in a little while. But I will do it in the following days. I'm sorry if I can't do it right now, since I'm not feeling well.
Wuffesan  [作者] 2016 年 9 月 25 日 上午 2:58 
If you upload the custom soundset to the workshop, anyone who subscribe to it, will be able to hear it.
Red 2016 年 9 月 24 日 下午 9:11 
I will assume that any work done will only apply to my own computer. If i join a multiplayer server will other players hear the default sounds while I hear the custom sounds? Is it possible for us to create our own soundbanks and upload to the workshop for others to use?
creature 2016 年 7 月 31 日 下午 2:14 
Awesome, thank you.
Wuffesan  [作者] 2016 年 7 月 31 日 下午 12:23 
you can add plenty of waves as you like under "rndwave". Since rndwave actually means "Random Waveformat" or "Random Audio".

I hope this helps. :)
creature 2016 年 7 月 31 日 上午 10:44 
Can I bugger you on a Q right quick? Do you think I'm able to edit the "data/soundscripts/player/survivor_example.txt" to have more "rndwave"s than normal? For example: HumanPlayer_Example_Survivor_Male.Look only has two .wavs, would it be possible to add more to the code and be accessible in-game?