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.
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.
- 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
- Install Python dependencies (once):
pip install pedalboard numpy soundfile. - Place
VST_Effect_from_Praat.praatandhost_vst.pyin the same folder (e.g.plugin_AudioTools/). - In Praat, select a Sound object.
- 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.
- Click Open GUI. A dark‑theme Python window appears (this may take a few seconds the first time).
- 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.
- Praat detects completion and imports the result as
originalname_vst; plays it if requested.
The GUI window (dark theme)
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
- I/O info – read‑only display of input/output WAV paths (set by Praat).
- Plugin selection – entry field + Browse button + Scan Params button.
- Numerics – Tail Seconds (spinbox), Buffer Size (combobox with common values).
- Parameter field – text entry for comma‑separated assignments; syntax
name=valueorname value. - Presets – dropdown of saved presets, Load / Save… buttons (saved to
~/.vst_host/presets/). - Log panel – scrollable text area showing all messages (parameter dumps, warnings, progress).
- Status bar – colour‑coded (amber = working, green = done, red = error).
- Action buttons – Cancel (closes GUI, no result), Process (starts processing).
Detailed workflow & threading
Praat side
- After you click Open GUI, the script writes the input WAV (
vst_input.wavin Praat’s plugin directory). - It launches
host_vst.py --gui ...as a background process (usingstart /bon Windows,&on macOS/Linux). - Praat then enters a polling loop: every second it checks for a sentinel file (
vst_done.txt). Meanwhile, Praat stays fully responsive – you can edit other objects. - When the sentinel appears (written by Python on exit), Praat imports
vst_output.wavand renames it.
Python GUI side
- The GUI loads the last‑used plugin path from
~/.vst_host/settings.json(if any). - Parameter scanning uses a background thread to avoid freezing, but the actual VST3 plugin is loaded on the main thread – many VST3s forbid cross‑thread loading.
- When you click Process, the plugin is loaded (if not already) and rendering occurs on the main thread. The log updates during processing.
- On completion, the sentinel file is written, and the GUI closes automatically (after a short delay).
- If you press Cancel or close the window, the sentinel is written anyway (empty result), so Praat’s polling stops cleanly.
Parameter handling & presets
Parameter string syntax
- Separate assignments by commas (spaces optional).
- Each assignment:
name=valueorname value. - Parameter names are case‑sensitive – use exactly as shown by Scan Params.
- Values must be numbers (floats). Booleans are set as 0.0 or 1.0.
- Unknown names are ignored with a warning.
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:
plugin_path– full path to the .vst3tail_seconds,buffer_sizeparam_string– the exact parameter text
Use Save… to store current settings under a name; Load recalls them.
Installation & dependencies
Python packages
pedalboard is Spotify’s VST3 host. On Linux you may need additional system libraries (see pedalboard docs).
Files
VST_Effect_from_Praat.praat– the updated Praat script (GUI‑launcher).host_vst.py– the new GUI‑enabled Python script (must be in same folder).
Configuration
Settings are saved in ~/.vst_host/settings.json. This includes:
plugin_path– last used plugintail_seconds,buffer_size,param_string
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
Ensure Python is in PATH and the packages are installed. On Windows, the script uses py (the Python launcher).
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.
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.
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.
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.
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:
Add --gui to launch the graphical interface.