BrainBread 2

BrainBread 2

Not enough ratings
HowTo - Creating your own soundset
By Wuffesan
Want to create your own custom voicepack for the survivors, the military, zombies or even fred? This guide will explain the basics!
   
Award
Favorite
Favorited
Unfavorite
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 Comments
Wuffesan  [author] 21 Jul, 2017 @ 8:55am 
"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 21 Jul, 2017 @ 8:50am 
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  [author] 20 Jul, 2017 @ 12:53pm 
replace the .wav portion with .ogg
jummin2 20 Jul, 2017 @ 12:36pm 
How would I put an ogg file where the .wav's are?
Wuffesan  [author] 10 Jan, 2017 @ 10:47pm 
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  [author] 25 Sep, 2016 @ 2:58am 
If you upload the custom soundset to the workshop, anyone who subscribe to it, will be able to hear it.
Red 24 Sep, 2016 @ 9:11pm 
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 31 Jul, 2016 @ 2:14pm 
Awesome, thank you.
Wuffesan  [author] 31 Jul, 2016 @ 12:23pm 
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 31 Jul, 2016 @ 10:44am 
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?