Tools
Proprietary
Although I can’t show off most of the 150+ tools that I have for Naughty Dog, I can share these ones because they are already on the internet (or were approved to be)! Some of these tools were presented during a GDC talk that I did with my fellow Dialogue Coordinators Grayson Stone and Thomas Barrett, and some of them have just been useful enough that I wanted to share them!
Stacking Tool
This tool was created in order to organize our sessions after a recording session has been completed and delivered. First, it removes the silence out of all the files, splitting them into individual takes. It then grabs the different take information from our Excel cue sheets, organizing the newly split files in the Reaper session based off of the information in the cue sheet. This includes, but is not limited to, making sure there aren’t too many/few files in a scene, placing the split takes in a cascading order for easy editing and recognition, and removing unneeded takes. This tool has managed to cut our sessions ingestion/organization time drastically, as it is no longer a completely manual task even if it does take some tweaking every now and then.
Leveling Tool
This tool was first created during The Last of Us Part II by Emily Scrivner, one of Naughty Dog’s Dialogue Designers. It’s purpose was to do a quick temp level pass of all the assets in a session, leveling them according to a volume spec that we created. In the beginning it only leveled based using the item volume of the file (i.e. the generic volume that applies to all takes across the entire file). To improve this, I made the tool a bit “smarter” - programming it to apply level a file using both the item and the envelope volume/clip gain, creating a much more fine-tuned pass as it can level transients individually rather than leveling the entire file to deal with them.
Match Leveler
This tool was initially developed for the Last of Us Part I (2022) where, I was the only Dialogue Coordinator for most of the project. Unfortunately, however, that meant that I found myself facing a difficult task all alone - mastering two new localized languages (Greek and Turkish) and re-mastering an existing language (Brazilian Portuguese).
Once I realized that I was going to be tasked with those requests I quickly devised a tool that might get a good enough pass without the need to do much hand-tuning, and that tool became our Match Leveler. Built off of the same code that powers our Leveling Tool, this tool levels according to a reference file with the the same name, allowing us to match the loudness of the individual English files while utilizing a batch process to improve efficiency.
Database Import Tools
These tools were both created as ways to import files directly from our database while still in Reaper, saving us the need to look the files up in our database and track down each file’s path in a folder directory in order to import them into our sessions.
First off, with the elegant name “Database Import Tool”, allows us to search for file names directly and, if found, immediately pulls them into the Reaper session - placing them on the selected track at the edit cursor’s position. If a file isn’t found with that name, however, or if the user intentionally searches with a partial file name or scene/bucket name, the tool will pull information on a number of files that match the searched term and display them in a grid like view. This view displays scene name and characters that have files within it, allowing you to import multiple scenes at once and pick and choose what characters you want to import for each scene. And even though this tool was mainly meant to be used for files in our main language, which is English, it also supports bringing in files from our other localized languages as well as giving the user the flexibility to choose if they want to pull in the raw or mastered files.
And while it perform similar tasks, the tool on the right, otherwise known as our “Localization Import Tool”, was designed to import batches of localized files depending on the reference files that are selected. This tool gives the user the ability to pick and choose what languages they want to import - say if there is only a bug in the French and Japanese files - or import the files for all localized languages. This makes editing localized files significantly easier, as it removes the need to manually track down each file path in the long list of localization batches and folders that the files are otherwise buried in.
Public
These are all tools that I have made on the side, and are therefore tools that are open for the public to use and play around with. If you want to download them, feel free to clone them off my GitHub and give them a try. And don’t be afraid to let me know if there are any bugs with them or if you would like any features added, as I am always happy to re-visit them for improvements!
This script is displays all of the items that are currently selected in a session, separating them by the track that they are on in order to make them more legible. This tool makes use of Lokasenna GUI, and requires that package be installed in order for it to be used, as well as an addition “tree” class that I created for Lokasenna GUI. That class can be downloaded here if you are interested in using this tool!
This script is used to make a track at any depth level after the selected track. The following are instructions to use this tool, and they are also in the script if you need a refresher on how to use it. It can cover a range of situations, whether you want to create a base-level track or a track within a folder, and it determines this based off of what track(s) are already selected when running the tool.
These scripts are meant to be used when editing the tops and tails of files. Hovering over the item itself will allow you to cut into that item, whereas hovering over an empty part of the track will cause the top/tail to extend to the mouse cursor (depending on which script is being used). The difference between the versions are mainly that the "No Fade" version doesn't adjust the fade length when editing the item, so it just changes the position of the fade but not length.
This script repositions all of the selected items based off of the duration of the time selection. It will separate them each equally, determined based off of the initial position of each selected item.