Skip to content


Subversion checkout URL

You can clone with
Download ZIP
A command-line VST plugin host
C C++ Objective-C CMake Other
Fetching latest commit...
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


MrsWatson is a command-line audio plugin host. It takes one or more plugins, sends an audio signal to them for processing, and saves the resulting output. Although the plugins think they are running in realtime, processing is actually done offline (this is not the same as the "offline" processing in VST terminology). This makes MrsWatson ideal for developing or debugging plugins, or processing audio on a server.


MrsWatson takes its name from a prior product from Teragon Audio called MissWatson (and the original name there, in case you were wondering, is a bit of a joke on the Dr. Watson utility).

In 2009 I sold the exclusive rights to MissWatson to a company interested in using it for server-side audio processing. As per the terms of our agreement, I made one last public release, and removed the code from my website. Since then, I have received numerous emails and inquiries regarding the project, mostly from plugin developers or people interested in VST technology. Though I have no regrets about discontinuing the original MissWatson (particularly since I didn't have time to properly maintain it), I felt that it was a useful utility which should be made available and open-sourced.

In 2011, my NDA with the aforementioned company expired, and I started working on a new MissWatson. MrsWatson is the result of this labor.

As I no longer have the source code for MissWatson, MrsWatson is a black-box implementation. They share only the name and concept in common. The two programs are incompatible and have fundamentally different behavior. They are also written in different languages (the original in C++, MrsWatson in C), and have completely different internal architecture.

If you have built some system which used the original MissWatson, then you will likely have to make some big changes to migrate to MrsWatson. Likewise, if you were using some of the original MissWatson code in your project, you will not be able to replace it with MrsWatson without significant work on your end.


Say you have an audio file which you would like processed through a group of mastering plugins.

mrswatson --input mysong.pcm --output out.pcm --plugin plugin1,plugin2

This will print the following output:

- 000000 Plugin 'plugin1' is of type VST2.x
- 000000 Plugin 'plugin2' is of type VST2.x
- 000000 MrsWatson version 0.1.0 initialized
- 000000 Opening VST2.x plugin 'plugin1'
- 000029 Opening VST2.x plugin 'plugin2'
- 000144 Processing with samplerate 44100, blocksize 512, 2 channels
- 000204 Total processing time 60ms, approximate breakdown by component:
- 000204   plugin1: 38ms
- 000204   plugin2: 11ms
- 000204   MrsWatson: 11ms
- 000204 Read 3528000 frames from mysong.pcm, wrote 3532800 frames to out.pcm
- 000204 Shutting down
- 000210 Closing plugin 'plugin1'
- 000212 Closing plugin 'plugin2'
- 000212 Goodbye!

To see more or less logging output, use the --verbose or --quiet options, respectively. To process a MIDI file through an instrument, you'd do something like this:

mrswatson --midi-file mysong.mid --output out.pcm --plugin piano:soft.fxp

Like the first example, a comma-separated list of plugins can be given here so that the audio generated by the instrument can be processed through any number of effects. Each plugin name can be followed by a colon and the location to a preset file to be loaded before processing.

Complete help for MrsWatson can be found by running the program with no arguments, or with --help.

Loading Plugins

Currently, MrsWatson loads plugins by their short name by searching in the standard installation locations for your platform. It does not (yet) allow for specifying a plugin by absolute path.

While MrsWatson has some understanding of getting and setting plugin parameters, it does not extend this functionality to the end user. Rather than passing a huge list of comma/colon separated parameters/values on the command line, users should instead create a preset for the plugin and load it with the colon-separated syntax as shown above.


As MrsWatson is a new codebase, there are lots of missing features, some more important than others. To encourage a quick initial release, the following features are not yet present in MrsWatson, but may be added at some point in the future:

  • AudioUnit plugins on Mac OSX
  • File support for WAV/AIFF/MP3/OGG
  • Resampling of input source if desired
  • True realtime mode

I have also tried to identify incomplete areas of the code and log them to the console, which means that we are aware that this feature is missing and will be added soon. If you see some other missing functionality or experience a crash or other bug, please report an issue on our project page.

Please Help!

As mentioned, MrsWatson is fully functional but needs a lot of polish. If you find areas of the code which are incomplete or not compatible with some plugins, please make a pull request.

Likewise, if you want to help out without programming, the best way to do so is to test and report any problems with given plugins or platforms.


If you are using MrsWatson to do something cool, please send me a link to your project! If you appreciate MrsWatson and would like to donate money, please instead make a donation to a charity on our behalf, and let us know about it. The organizations which have helped us the most are:

  • EFF: Without the EFF, programs like MrsWatson would be significantly harder to create and distribute.
  • Wikipedia: Writing MrsWatson involves a lot of research as well as coding, and Wikipedia is an essential part of this.


MrsWatson is made available under the BSD license. For more details, see the LICENSE file distributed with the source code. MrsWatson also uses the following third-party libraries, which are licensed under the respective agreements:

  • VST: Licensed under Steinberg's VST SDK license agreement, version 2.4. For more information, see Steinberg's developer portal.
  • LibAiff: Written by Marco Trillo, made under the BSD license. For more details, see the LICENSE file in the LibAiff source code.
Something went wrong with that request. Please try again.