This plugin has been discontinued, and will receive no further support or changes. It has been broken down into a multiplicity of individual plugins which are currently being distributed via CPrAN at the following URL:
This repository will remain as is for archival purposes, but please consider using those plugins instead, which are under active development.
This plugin for Praat contains a set of some scripts that I have written which I find to be particularly useful, and that fill in some gaps I've found in the existing Praat interface.
Since it was first packaged as a plugin in April 2014, it has grown considerably, and it now includes a much larger set of scripts and procedures than I initially expected it to have. This has made organizing it a task in itself, but I think that it is now in a stable enough state for an slow, initial release. Particularly because I have started using it in a number of other side projects, and it's slowly starting to get out there.
Not all scripts are thoroughly documented, and whatever documentation does exist is in the body of the scripts themselves. In the near future, I expect to document the way the plugin is to be used in the wiki pages of this repository, so that using it is easier for everyone interested.
For an (incomplete) list of the scripts provided in this plugin, please check setup.praat, which lists all the changes made to the UI.
Using individual scripts
Unlike most plugins out there, I make heavy use of procedures, to avoid reinventing the wheels I myself have established, and to promote code re-use as much as I can. This can make extracting particular scripts from this plugin a bit difficult, so if there's one script you are interested in, I recommend you install the entire plugin unless you know what you are doing.
Scripts and procedures
Scripts in this plugin are separated into three large groups, in different directories:
procedurescontains files with the
.procextension, which themselves define procedures that can be included into other scripts.
batchcontains files with the
.praatextension, to be used on a large number of files. Some of them take their input from files that have already been read into the Object list, and others (most) act on files that are individually read from disk. Normally, these batch scripts will just provide a wrapper that calls some other script in the background.
The remaining directories are named after individual object types, and contain scripts that apply (primarily) to that type of object: scripts in the
sounddirectory are scripts that use (or modify, or query, etc)
Re-using code in the plugin
You are welcome to integrate any script and procedure you find here into your
own work. You can do this by installing the plugin and then using the
directive in your own Praat scripts.
You'll need to have a way to know the full path to the script or procedure
definition, or save your script somewhere it can reach the definiton using a
relative path. Once again, I do not recommend to make external copies of
scripts from this plugin into because that will likely break things. Try to
include local versions instead.
The easiest way to include them is if your own script is itself in a plugin, because in that case you can access the preferences directory (which is in a platform-dependant location) by simply traversing upwards along the directory tree.
To try to make this easier, all scripts and procedures are located in a sub-directory immediately below the plugin root directory. As long as your own scripts also follow this rule, then they should all happily be able to include each other like so:
Hooks (or procedure-redefinition)
Some procedures (notably
view_each.proc, but probably more in the future) make
use of internal procedures as hooks, which you can redefine to modify the
behaviour of the main procedure to a certain extent. For example, in
view_each.proc this allows you to customize what happens when
viewed without having to modify the procedure itself (or make a local copy,
which would make me sad).
In order to do this, you must redefine the hook (=procedure) before the
include call, so that when the file is read, the internal definitions are
If you are using GNU/Linux, and have
git installed, you can run
cd ~/.praat-dir git clone https://github.com/jjatria/plugin_jjatools.git
and you should be good to go!
If not, then you can use the general instructions below:
Download the contents of the repo and extract into a folder called
plugin_jjatoolsin your Praat preferences directory. The exact location of the preferences directory depends on your operating system, so please check the documentation.
This means that the directory structure should look like this:
[preferences directory] ├─[other plugins] ├─plugin_jjatools │ ├─[other directories and files] │ └─setup.praat ├─buttons5 └─prefs5