teragonaudio / mrswatson Goto Github PK
View Code? Open in Web Editor NEWA command-line VST plugin host
Home Page: http://teragonaudio.com/MrsWatson.html
License: Other
A command-line VST plugin host
Home Page: http://teragonaudio.com/MrsWatson.html
License: Other
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.
Assuming that the FLAC libraries compile without too much problem on all platforms, this would be nice to support.
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.
LADSPA seems to be rather outdated. Should the next supported plugin format for linux be LV2 or DSSI?
Need to read MIDI events from file.
Related to issue #45, but for AIFF files.
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.
Audit the codebase and make sure that all usages of the words "samples", "frames", and "sample frames" is correct.
Need to audit the codebase and add unsupported warnings for stuff like resampling, channel count mismatch, etc.
Assuming that libvorbis builds without too much difficulty on all supported platforms, this would be a nice feature.
The help text needs to be expanded upon.
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.
FXP presets which use opaque chunks to save their data (FPCh) seem to crash the plugin sometimes when being loaded.
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.
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.
The program's main features and history should be documented in the README file.
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.
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.
To ease working with automake/autoconf, create a config.h file header to determine which functions and headers are present on a given OS.
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.
It would be nice if the software worked under linux. Now that we have autoconf/automake build, this shouldn't be terribly difficult.
Need to support stdin/stdout streams for PCM data.
Need to have a wiki page to credit everyone who has helped develop, test, or donated to the project.
Need to make sure that the common GNU files have been filled out and are present in the project.
When parsing MIDI files, the program needs to set tempo & time signature from MIDI meta events.
The timers are working again for Windows, but they are in terms of clocks, not milliseconds. Not terribly useful.
Add support for FLAC files.
Need to add support for loading and processing VST2.x DLL plugins on Win32.
Need an option to show the currently supported input/output source types.
The clock used in the event logger displays negative values. I suspect this is related to issue #49.
After the linux build is working with VST2.4, it would be nice to have support for LADSPA 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.
Add support for OGG vorbis files.
The program is currently semi-hardcoded to use 44100kHz sampling rate. We need an option to override this.
If the input source has a different sample rate than the output source, it should be resampled accordingly. I would prefer if we used SSRC instead of libsamplerate for this.
Before releasing the source for 1.0.0, verify that all project URL's point to valid locations.
If a plugin's I/O count differs from the host's settings, that plugin needs to be handled accordingly. Related to #29.
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
Need a way to record how long each plugin and the host spent processing data.
This seems to be easier to replicate with a plugin chain.
When showing version info, we should include the build date as an integer in the form YYYYMMDD.
Fill out support for the most important opcodes in Vst2xHostCallback.cpp.
Write up a quick file explaining how to build the software under various operating systems.
The algorithm used in fillMidiEventsFromRange is super inefficient, and could be considered "20 code".
The program currently uses 4/4 & 120BPM, but there need to be options to set these from the command line.
It would be nice to have support for reading/writing WAV/AIFF files. This should be done without libsndfile.
Add an option to allow for X extra seconds of processing time for plugins.
^^ do that
Need to make sure that the license is present in all source code and in the project as a standalone file.
Need to make sure there aren't any serious memory leaks in the application.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.