Giter Site home page Giter Site logo

teragonaudio / mrswatson Goto Github PK

View Code? Open in Web Editor NEW
476.0 30.0 99.0 20.05 MB

A command-line VST plugin host

Home Page: http://teragonaudio.com/MrsWatson.html

License: Other

CMake 2.18% C 86.77% Shell 0.76% Objective-C 1.24% C++ 8.11% Objective-C++ 0.94%

mrswatson's Introduction

MrsWatson

This project is archived, because I don't have the time to maintain it anymore. Please contact [email protected] if you have any further questions

About

MrsWatson is a command-line audio plugin host. It takes an audio and/or MIDI file as input, and processes it through one or more VST plugins. MrsWatson was designed primarily for two purposes:

  • Audio plugin development and testing
  • Automated audio processing tasks

Say you have an audio file which you would like to process with an effect plugin.

mrswatson --input mysong.wav --output out.wav --plugin myplugin

This will run mysong.wav through the myplugin VST, placing the processed output in out.wav, as well as logging some output to the console:

- 00000000 000000 MrsWatson version 0.9.7 initialized, build 20150112
- 00000000 000000 Setting 2 channels
- 00000000 000000 Setting sample rate to 44100Hz
- 00000000 000000 Plugin 'myplugin.vst' is of type VST2.x
- 00000000 000000 Opening VST2.x plugin 'myplugin.vst'
- 00000000 000001 Starting processing input source
- 00010752 000002 Total processing time 1ms, approximate breakdown:
- 00010752 000002   MrsWatson Initialization: 1ms (69.4%)
- 00010752 000002   MrsWatson Input Source: 0ms (12.4%)
- 00010752 000002   MrsWatson Output Source: 0ms (11.6%)
- 00010752 000002   myplugin.vst Audio Processing: 0ms (3.9%)
- 00010752 000002   myplugin.vst MIDI Processing: 0ms (0.0%)
- 00010752 000002 Read 10595 frames from mysong.wav
- 00010752 000002 Wrote 10752 frames to out.wav
- 00010752 000002 Shutting down
- 00010752 000002 Closing plugin 'myplugin.vst'
- 00010752 000002 Goodbye!

To see more or less logging output, use the --verbose or --quiet options, respectively. MrsWatson generates colored output (if your terminal supports it) with two times per line, the first for the current sample and the second for the time in milliseconds since processing began. The sample time also changes colors after every 44100 samples to help visually break up processing times.

To process a MIDI file through an instrument using an FXP preset to be loaded into the VST, you'd do something like this:

mrswatson --midi-file mysong.mid --output out.wav --plugin piano,soft.fxp

Like the first example, a list of plugins separated with semi-colons can be given here so that the audio generated by the instrument can be processed through any number of effects. Note that you might have to escape characters like semi-colons from your shell.

Complete help for MrsWatson can be found by running the program with no arguments, or with --help. To see extended help for all options (which prints quite a lot of output) run mrswatson --help full.

Loading Plugins

Currently, MrsWatson loads plugins by their short name by searching in the standard installation locations for your platform, as well as the current working directory and by absolute path. Use the --list-plugins option to see the order of locations searched and the plugins found there.

MrsWatson supports setting plugin parameters with the --parameter switch. However, if you would like to set many parameters on a plugin, it may be more efficient to create an FXP preset and load it with the plugin. For information on presets, run mrswatson --help plugin.

64-Bit Support

MrsWatson supports both 32-bit and 64-bit plugins, but not from the same executable. Two executables are shipped in the distribution zipfile for each platform, mrswatson and mrswatson64, which are the 32-bit and 64-bit variants, respectively. Each one is only able to process with plugins of the same architecture. Running either executable with the --list-plugins switch will print out all supported plugins that the program is compatible with.

Although on Mac OS X, a single Universal Binary could theoretically be used to suport both architectures, Darwin prefers to launch the one which matches the system architecture, which thus makes it impossible to load 32-bit plugins on a 64-bit system. For this reason (and also to be consistent with other platforms) Universal Binaries are not used on Mac OS X.

Bug Reporting

If you believe you have found a bug in MrsWatson, please try first running it with the --verbose argument. This will generate extra logging output which may help to solve the problem.

The easiest way to report a bug is to send an email to Teragon Audio's support address: support (at) teragonaudio (dot) com. MrsWatson has a special command-line switch to aid in diagnosing runtime problems, --error-report. When enabled it will create a zipfile on the desktop containing the input, output, logs, and optionally the plugins themselves. Please include these reports for bugs resulting in incorrect behavior or crashes.

A test suite program, named mrswatsontest, can be found in the Mrswatson zipfile. If tests fail on your platform, please report this along with your bug. Please note that there is also a 64-bit version, mrswatsontest64.

MrsWatson uses GitHub issues for bug reporting, if you would like to submit an issue yourself.

Building

Instructions for building MrsWatson can be found in the file BUILDING.md.

Donate

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.

Special Thanks

Big additional thanks to:

  • Andrew McCrea, (@thrusong)
  • Michael Pruett, (@mpruett)
  • Jarl Friis (@jarl-dk)

Licensing

MrsWatson is made available under the BSD license. For more details, see the LICENSE.txt 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.
  • libaudiofile: Written by Michael Pruett, licensed under GNU Library General Public License.

mrswatson's People

Contributors

aleksey-devyataikin avatar dirkk0 avatar doesdev avatar gijzelaerr avatar jarl-dk avatar jc-morph avatar juanvenado84 avatar nikreiman avatar thrusong avatar wickedchicken avatar williamsharkey avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mrswatson's Issues

Support setting tempo/time signature from MIDI at 0th timestamp

Issue #28 already discusses setting tempo and time signature from MIDI files, but this implies dealing with tempo changes, which are a bit complicated in terms of parsing MIDI files. So for now, we should set the tempo/time signature from MIDI files, but only if they occur at timestamp 0.

Handle MIDI meta events

When parsing MIDI files, the program needs to set tempo & time signature from MIDI meta events.

Library for WAV files

Yeahhh, libaudiofile doesn't compile so well under Windows, and libsndfile sucks on that platform as well. Would be nice to have a very minimal and platform-independent library for WAV file support.

Add support for MIDI type 1 files

Right now, only MIDI type 0 files are supported. Type 1 is very common, and should also be supported.

At the moment, I think that the program should just take the first track from such files, but a command-line switch could be added here.

Library for OGG files

Assuming that libvorbis builds without too much difficulty on all supported platforms, this would be a nice feature.

Create config.h header file

To ease working with automake/autoconf, create a config.h file header to determine which functions and headers are present on a given OS.

Support for loading FXP preset into VST2.x plugins

Add support for FXP presets with VST2.x plugins. To specify a FXP preset, the user would enter it from the command line in a colon separated list with the plugins, for example:

mrswatson --plugin plugin1:presetname,plugin2:"/home/users/whoever/preset.fxp"

The "fxp" filename extension should be added automatically if not present.

Use tempo from MIDI file if provided

If a MIDI file provides a tempo other than the default, it should be used. This should also override any command-line switches in place. Also, if the file contains tempo changes, these should be set during runtime.

Support for linux

It would be nice if the software worked under linux. Now that we have autoconf/automake build, this shouldn't be terribly difficult.

Add option for setting bitrate

Right now the bitrate is hardcoded to 16, which applies for both PCM data (reading & writing), and AIFF data (writing). Would be nice to have an option to set this to higher rates if desired.

Support tail time for plugins

Even if the user does not specify a tail time (see issue #5), we need to set the tail time if the plugin says that they want it. In the case of plugin chains, we should obviously use the largest tail time of any plugin in the chain.

Library for FLAC files

Assuming that the FLAC libraries compile without too much problem on all platforms, this would be nice to support.

Document build process

Write up a quick file explaining how to build the software under various operating systems.

Support for FXB preset banks

FXB is a fairly common format, and should be easy to parse. However, before we can do this feature we also need to consider command-line syntax with banks.

Improve efficiency of linked lists

The length of a linked list can be updated when objects are added. It is not necessary to walk the entire list every time this needs to be calculated.

Copy/ignore channels if input/output channel count differ

If the input/output source have different channel counts, this needs to be handled gracefully. If asked to process from mono -> stereo, then the input channels should be copied to a stereo buffer (dual mono). If asked to process from stereo -> mono, then the program should only use the left channel.

Possible non-nulled string when printing out plugin ID

Plug-Ins$> mrswatson --plugin HiLoFilter --display-info

  • 000000 MrsWatson version 0.9.0 initialized
  • 000000 Plugin 'HiLoFilter' is of type VST2.x
  • 000000 Opening VST2.x plugin 'HiLoFilter'
    JUCE v2.0.20
  • 000028 Information for VST2.x plugin 'HiLoFilter'
  • 000028 Vendor: Teragon Audio
  • 000028 Version: 65536
  • 000028 Unique ID: HiLogon Audio`

^^ this is not correct

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.