Skin Deep: Blendo Wav Tool
Skin Deep will be released April 30, 2025! Some wonderfully talented folks and I have been cooking up Skin Deep together for a while, and are thrilled people will be playing the game soon.
- Play the limited-time Skin Deep demo
- Add Skin Deep to your Steam Wishlist
- Read lovely Skin Deep writeups from:
In the following weeks, I’ll be writing about the processes and development of Skin Deep.
Wishlist Skin Deep here!
To view all posts in this series, click here.
Blendo Wav Tool
Today I’ll be writing about the Blendo Wav Tool. Here’s what it looks like:
Skin Deep has a lot of sound effects, a lot of music, and full voice acting (VO). There’s a lot of audio. As a result of this increase in scale, it became challenging to manage this amount of assets – and so, I made this Blendo Wav Tool.
To set expectations: this is all very low-tech straightforward stuff. There’s nothing here that can’t be done with Regex or a Python script. But having a specific tool for our specific workflow was something hugely helpful.
If you think you can make use of this, the Blendo Wav Tool’s source code and binaries are available here.
Here’s the various contexts in which this tool was used.
Finding/Sorting
Finding/sorting was what the tool was mostly used for in day-to-day usage.
Let’s say you…
- hear a character play a wonky sound, so you want to edit the file.
- are building a scene and need to re-hear the intonation of a specific line.
- are fixing a bug and need to browse a specific category of audio.
So: you want to find and open the audio asset. But you…
- don’t know the filename…
- or don’t know what folder it’s in…
- or need an easy way to browse a specific category of audio…
This was Blendo Wav Tool’s original purpose: to make it easy to find audio assets in the project. This is handled via these 2 search boxes:
- the Folder filter filters by foldername.
- the Filename filter filters by filename.
The file list automatically filters itself to your search parameters. So as you type each letter, you’ll see the file list curate itself down shorter and shorter.
There is an additional feature here that makes searching easier:
- any empty space is treated like an AND operator.
- What does this mean? It means if you’re like me and kinda but not exactly know what you’re looking for, this allows you to utilize the fragments you do remember.
Example:
- I’m looking for Pirate B’s sneeze noises. But I don’t remember what the specific filenames are.
- For my filename query, I type:
_b pira snee
- This is because I know it’s Pirate B, and I know the word “sneeze” is involved.
- This results in searching filenames with:
_b
ANDpira
ANDsnee
- This results in finding files:
pirate_b_combat_sneeze_01.wav
pirate_b_combat_sneeze_02.wav
pirate_b_combat_sneeze_03.wav
In short: this allows you to type a few loose un-ordered fragments to quickly find the asset.
This is very un-fancy stuff, but combined with folder filter, results in being able to find anything in a few seconds. Your mileage may vary! But I get a crazy amount of usage out of this functionality, and would love to see this approach in more tools.
Credit where it’s due: using the space as an AND operator was part of how level design tools worked at Pandemic Studios, where I used to work as a designer. It was a good idea then and it’s a good idea now!
Tools
The Tools menu has various miscellaneous audio-related helpers.
Suffix duplicate check
Some audio assets have a 6-digit suffix. This tool does a check to see what assets share the same suffix number.
Vosk speech recognition
This does speech recognition to print what words are being said in VO files.
This ended up not really being used, as we ended up making a localization tool (that I’ll write about later) that served a similar purpose to this.
Compare wav files to scripts
This scans the game’s level scripting files and sees what audio assets are NOT being used. This was made to identify what audio assets we were and weren’t using.
- to identify what assets were obsolete/deprecated.
- to identify what assets haven’t been hooked up yet.
Scan suffix numbers
This was to help us find filename suffix numbers that weren’t currently being used.
File differ
This tool allowed us to paste in a big list of filenames, and then compare this list to what files we actually currently have in the game. The use case was:
- we have a big spreadsheet of VO filenames we expect to have.
- we want to compare the spreadsheet’s filenames to the filenames we currently have in the game.
This tool allowed us to find:
- files that were missing or not yet implemented
- files that were mislabeled
- files that were now obsolete
Copy all files into a folder
Sometimes you want to filter the audio assets to a specific category, and then copy them into a separate folder (i.e. to send it off to an audio engineer, or to send to marketing folks, etc). This tool just copied the currently-filtered files into a separate folder.
Display Max Amplitudes
We had an issue where some audio files were very very very quiet. This tool just printed the maximum amplitudes of each audio asset, so we can identify assets that had this low-volume issue.
Detect silence (at file start)
This filters audio assets that have a period of silence at the beginning of the file. This was for audio asset bug-fixing.
Detect silence (at file end)
This filters audio assets that have a period of silence at the end of the file. This was for audio asset bug-fixing.
File drag
Additionally, dragging .wav files into the window will attempt to copy and overwrite existing project .wav files with the new ones.
The use case is if you receive updated/revised audio assets, this is a quick way to instantly plug these assets into the game without having to manually drill into various folders.
Nuts and Bolts
Blendo Wav Tool was made with Winforms. It was written in C# with Visual Studio 2015.
Libraries used include:
If you think any of this is useful, please feel free to adapt it to your own project. The Blendo Wav Tool is available here:
Et al
As I said above, this is all low-tech stuff. Sometimes that’s all you need.
It takes time to make tools, but I believe that time spent automating a little thing is time well-spent. Any time a process requires a lot of fiddly time-consuming error-prone bits that can be automated, my brain slightly melts and I think “why am I doing this???”
Tools… they’re good!