L4D Custom Music Tutorial
This tutorial will go over how to customize the Music Director for your campaign using the mapname_level_sounds.txt file. If you are planning on creating custom soundscripts as well, you should still follow this tutorial and append those scripts to the level_sounds.txt.
There are 9 steps to this method of adding custom music to your campaign:
- Create a text file called mapname_level_sounds.txt in your addons' maps directory.
- Copy ALL the contents from the example soundscript into that file.
- In the missions file of your addon, find the NAME parameter, and pick a short name that has no spaces.
- In notepad, press CTRL + H, to find and replace XXXXX with the same name you used in missions.txt NAME field.
- Begin replacing any WAV files you choose in the script to reference your own files. (Do not include sounds/ in the paths, it's assumed)
- Load up Left 4 Dead and turn off all addons except the one you are working on. (Other campaigns' custom sounds may cause trouble if you don't)
- In the console, enter snd_rebuildaudiocache and wait about 5 mins for it to finish.
- Copy the _master.cache file from your maps/soundcache, place it in your addons maps/soundcache directory.
- Packadge your campaign into a VPK and test it out ingame, your custom music should work!


Custom Music Script File
This is the example soundscript you need to copy.
It is a stripped version of the game_sounds_music.txt to only include the Events you need to edit for your campaign. It is highly recommended allowing a greater insight into what each section is for when deciding on what to change.
You may also opt not to change anything in the file, which will give your campaign the default music cues associated with the Airport campaign.
http://www.evolvedant.com/soundscript/example_script.zip

Example Tips
If your campaign is called 'Awesome' and contains maps such as l4d_awesome_forest, l4d_awesome_campsite, etc... Your addons maps directory should contain l4d_awesome_forest_level_sounds.txt
The NAME parameter in your missions.txt would be 'awesome' and look like this:
Heres how your sound script would look properly edited to make use of thriller.wav