VST3 Effect from Praat — User Guide (GUI Version)

Bridge Praat to any VST3 audio effect using a modern Tkinter GUI. Select a sound, launch the GUI, pick a plugin, tweak parameters, process — the result appears back in Praat.

Author: Shai Cohen Affiliation: Department of Music, Bar‑Ilan University, Israel Version: 2.0 (2025) – GUI release License: MIT License Repo: GitHub
Contents:

What this does

This tool lets you use any VST3 audio effect directly from Praat, but now with a full graphical interface (Tkinter) for plugin selection, parameter adjustment, preset management, and live logging — while Praat remains responsive.

Major improvements in GUI version:
  • Dedicated dark‑theme window with plugin browser, parameter scanner, preset save/load.
  • Praat is not blocked – it launches Python and polls a sentinel file.
  • All settings are saved in ~/.vst_host/settings.json (last used plugin, tail, buffer, params).
  • One‑click parameter scanning – discover parameter names and current values without leaving the GUI.
  • Preset system – save and recall complete setups (plugin + parameters).
  • Robust threading: VST3 plugins are loaded and rendered on the main GUI thread (many require this).

The workflow: Praat script → minimal form → Python GUI (opens separately) → user adjusts → Process → Praat imports result.

Quick start

  1. Install Python dependencies (once): pip install pedalboard numpy soundfile.
  2. Place VST_Effect_from_Praat.praat and host_vst.py in the same folder (e.g. plugin_AudioTools/).
  3. In Praat, select a Sound object.
  4. Run the script. A small form appears asking for:
    • Tail seconds – extra silence for reverb trails.
    • Buffer size – processing block size (default 8192).
    • Parameters – optional initial parameter string (e.g. mix=0.5, output=0.8).
    • Play result / Save as default plugin checkboxes.
  5. Click Open GUI. A dark‑theme Python window appears (this may take a few seconds the first time).
  6. In the GUI:
    • Use Browse to select a .vst3 file (or type the path).
    • Click Scan Params to fetch all parameter names, min/max/default/current values – they appear in the log.
    • Adjust Tail Seconds and Buffer Size if needed.
    • Enter parameter overrides in the text field (e.g. Mix=0.6, Decay=0.9).
    • Optionally Save… current settings as a preset, or load an existing one.
    • Click Process. The log shows progress. When done, the GUI closes.
  7. Praat detects completion and imports the result as originalname_vst; plays it if requested.
Important: The plugin must be an effect, not an instrument. The GUI will still load it, but processing may produce silence.

The GUI window (dark theme)

🎛 VST HOST · OFFLINE
Input WAV   C:\Users\...\vst_input.wav
Output WAV  C:\Users\...\vst_output.wav

VST3 Plugin  [ C:\Program Files\Common Files\VST3\ValhallaSupermassive.vst3 ]  [Browse] [Scan Params]

Tail Seconds  1.5   Buffer Size  8192

Plugin Parameters
name=value, name=value  (leave blank for plugin defaults)
[ Mix=0.6, Decay=0.9 ]

Preset: [ ]  [Load] [Save…]

Log
>>> Loading plugin...
>>> ValhallaSupermassive loaded.
>>> Available parameters: ...

Ready

[Cancel]  [▶ Process]
    

Actual GUI uses ttk styling, monospace font for paths/log, and colour‑coded status.

GUI sections

Detailed workflow & threading

Praat side

Python GUI side

Parameter handling & presets

Parameter string syntax

mix=0.6, output gain=-3.2, "Room Size"=0.4

Scan Params button

Click this after selecting a plugin. It loads the plugin, retrieves all parameters, and prints a formatted table in the log:

  Name                                              Min       Max    Default    Current
  --------------------------------------------- ---------- ---------- ---------- ----------
  Mix                                                   0         1       0.25       0.25
  Decay                                                 0         1       0.85       0.85
  Size                                                  0         1        0.5        0.5
    

You can then copy the exact parameter names into the parameter field.

Presets

Presets are stored as JSON files in ~/.vst_host/presets/. They contain:

Use Save… to store current settings under a name; Load recalls them.

Installation & dependencies

Python packages

pip install pedalboard numpy soundfile

pedalboard is Spotify’s VST3 host. On Linux you may need additional system libraries (see pedalboard docs).

Files

Configuration

Settings are saved in ~/.vst_host/settings.json. This includes:

The Praat script stores a plain‑text mirror of the last plugin path in plugin_AudioTools/last_plugin.txt to pre‑fill the form.

FAQ / troubleshooting

“Python not found” or “pedalboard not installed”

Ensure Python is in PATH and the packages are installed. On Windows, the script uses py (the Python launcher).

The GUI opens but “Scan Params” fails or plugin won’t load

Some VST3 plugins have copy‑protection or GUI dependencies that prevent headless loading. Try a simpler effect (Valhalla, TAL, OvertoneDSP). On Linux, install libxcb and other X11 libraries.

Praat never detects completion (hangs in polling loop)

Check that the Python process actually exits. Look in the plugin directory – if vst_done.txt never appears, Python may have crashed. Run host_vst.py --gui ... manually from a terminal to see errors.

Parameter assignments have no effect

Use Scan Params to verify the exact parameter names. Names are case‑sensitive. If the plugin does not expose parameters via plugin.parameters, they cannot be set.

Output is silent / very quiet

Some plugins default to zero output gain. Set an explicit parameter like Output gain=0 or Volume=1. Also check the tail – if tail is zero and the plugin generates reverb, you may cut off early.

Sentinel file mechanism

Praat polls for vst_done.txt once per second. The Python GUI writes this file on any exit (Process, Cancel, or window close). This ensures Praat never hangs indefinitely.

Command‑line usage (legacy)

The Python script still supports the old CLI mode without GUI:

py host_vst.py input.wav output.wav plugin.vst3 [tail] [buf] [params] [dump]

Add --gui to launch the graphical interface.