I’m a firm believer in the Unix philosophy of writing code that does one thing, and does it well. Small code that can focus on one task is more easily maintained, and writing with reusability in mind makes for better and more reliable code.
A lot of the work that I do uses Praat at one point or another, and throughout the years I’ve given a lot of thought to the question of how to bring in those software design principles into the Praat scripting community (which, let’s face it, desperately needs them).
Most of the scripts you find out there are distributed as standalone scripts: a single monolithic file that tries to do everything itself, and which as a result is either trivial, or unnecessarily complex. Unlike most scripts, the scripts I write try to follow the principles above, so they strive to be smaller in size and modular in design: they make heavy use of procedures to break up tasks into manageable chunks, and try to outsource everything that is not directly related to their objective to other more specialised scripts.
As an attempt at making this easier for myself and the rest of the community, I’ve developed CPrAN: a plugin manager for Praat, that every body is welcome to use and extend. Most of the scripts I’ve written for Praat are distributed then as plugins, and available for installation using CPrAN (or manually, ir you are a masochist).
Below you can find a list of my plugins, and you can find information on how to install the CPrAN client and the plugins you might need at the CPrAN website.
|cpran||a package manager for Praat|
|selection||procedures to manage Praat selections|
|serialise||read/write JSON / YAML Praat objects|
|sndutils||a collection of basic Sound utilities|
|strutils||a collection of basic Strings utilities|
|testsimple||simple implementation of the Test Anything Protocol|
|tgutils||a collection of basic TextGrid utilities|
|twopass||a method for utterance-specific Pitch threshold estimation|
|utils||a collection of basic utilities to facilitate scripting|
|varargs||an interface for writing variadic procedures in Praat|
|warnings||procedures to enable smart warnings in Praat|
For a long time, this page had a more traditional list of scripts. To try and keep those links alive, I keep the contents of that old list here. Note that the links themselves now point to the new plugins (when available), since those are the ones that I maintain and that you should be using.
- RMS normalization
- Filter and center sounds
- View each Sound (and TextGrid)
- TextGrid to JSON
- Generic sort for Strings
- Open TextGrids for selected Sounds
- Move boundaries (and points?) to zero-crossings
- Find nearest pitch value
- Pitch listings
- Save all selected objects
- TextGrid from TXT
- Check selection (Procedure)
- Find nearest pitch value (Procedure)
- Split (Procedure)