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.

Name Description
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

Old scripts

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.