VideoVST - a Video-playing plugin for VST-compliant audio hosts

by Matt Bentley

Current version: 1.03
This page was last updated on 25/03/2008


Current News
25-03-2008: Unfortunately the version that is here is unstable, due to a flaw in the way the underlying SMPEG library handles playback, and cannot be fixed. I may make this project open-source at some point - if I get the time and interest. Sorry for any confusion. M@
26-10-2006: Version 1.03 here - Hopefully less crashing. Parameter-saving works in Reaper. SSE version removed (just confused people - not enough performance difference to justify the trouble...).


What is it ?

Videovst is a freeware VST plugin for playing back MPEG1 movie files in time-sync with your favourite audio host - for use in Video, Film and TV scoring-scenarios, as well as others - currently it is only for Win9x/NT/2k/XP.


Where is it ?

Download Plugin in a Zip here: VideoVST.zip(239K)


What does it look like ?

Click on one of the thumbnail images below to see a full-sized screenshot.


How do I get it working (Install instructions) ?

Download, unzip and copy the VideoVST.dll to your VST plugin directory whereever that might be, then copy SDL.dll to your windows/system directory - SDL.dll is the dll necessary for window management/sound etc. Tracktion is the only audio host which will check the current directory for this DLL.
Many hosts do not automatically keep plugins running when playback is stopped, so you will probably need to change an option to enable this in your host.
Reaper has the option in options/preferences/audio/Run Fx When Stopped, in Tracktion this option is called "e-to-e", or End-to-End playback, and in Orion Pro this is Audio Output Settings/Always running. If you do not turn these options on, your host application will not send the playback-stop-signal to the VST plugins so VideoVST will not know when to stop.


How do I work with it (operating manual) ?

When you create an instance of the plugin, a VideoVST display window will pop up - with a message saying to click on the screen. When you do you'll be presented with a dialog box from which you select the .mpg file you want to play. If you choose a .mpg file, VideoVST will check it, to see that it's valid, then you're off (so-to-speak). That's it - all you need to do form thereon in is (a) adjust the videodelay (measured from the start of the song) if you need to, (b) adjust the sound if you want to and (c) adjust the video size.
Sound from VideoVST is played through Directsound/Waveout/MME, rather than into your audio track, so it's safe to have on the master track or on any other track containing audio - some hosts, such as Reaper or EnergyXT, require than you have audio running on the track that Videovst is on, so, in general, it's best to put it on your "master" track in your song - that way there's always audio running through VideoVST :)
You may adjust the video size in two different ways: (1) Simply by clicking/draggin the corners or edges of the window - as you would with any other window - or (2) by adjusting the 'size' parameter in your host's parameter selection dialog-place. Each approach has unique advantages: if you resize 'freeform' (via clicking/draggin the window) you can get any size or shape you want - you can also maximize the window to fullscreen, if you want. On the other hand, dragging the parameter in the parameter display section of your host enables you to keep the aspect ratio of your video intact - and it also has a bypass feature (the lowest selection - this will display "Hidden" in your parameters).


What videos does it play ?

At this stage VideoVST will only ever play MPEG1 video files (.mpg) - As opposed to something like Quicktime, free MPEG1 encoders/converters to convert your assigned video file to a .mpg are easy to find and easy to use - here is a list of the ones I know about:

MPEG1 to my knowledge is the only video format (besides FLIC) not protected by patents and therefore the only format I do not have to pay a fee to use. For all the other reasons why, see Q2 in the FAQ list.


What hosts should it work with ?

It should work with any fully VST 2.4 spec-compliant host, but the one's I've tested and found to work so far are:
Reaper (all versions greater than 1.19)
Tracktion 1, and 2 (a few crashes with 2, rock-solid with version 1.6)
Orion Pro
EnergyXT
Musys
Ableton Live 5.2.2
Kristal Audio Engine 1.0 (partialy works, but Kristal doesn't seem to support the full VST spec (in particular GetTimeInfo) while playing. This means time-syncing works, but not if you move the playback head, manually, while your song is actually playing. Hopefully Kristal 2.0 will be better written.)
Minihost (well, yeah - but how could you actually use Videovst with Minihost?)


What hosts doesn't it work with ?

Any host without VST 2.4 plugin support.
Samplitude (partially works but doesn't have 'always running vst effects' option, as far as I can tell, so playback won't stop)
FLStudio 6 (demo crashes when the plugin is removed or when closing the program - I think this is an FLStudio bug).
Ableton Live 6.01 - Crashes as soon as you load a video.
Sonar - that's got it's own (better) video player anyway...
Luna (still in development - should work by the time it's finished)
Vegas - but why would you want to.
I can't seem to figure out exactly how Podium works, so whether VideoVST works with it is a mystery...
I don't particularly understand Max/MSP, or how it works, either - and therefore I can't tell you whether or not VideoVST works in Max.


Why did you make it ?

At the time I wrote the plugin there was no other (working) freeware plugins available for video scoring or film scoring in time-sync to a video, of any description. I tried DestroyFX's attempt at Winamp integration (didn't work) and the Moveiplayer plugin (rarely worked in the hosts which I tried it in). That was a shame because with so many great freeware or low-budget audio hosts (Tracktion, EnergyXT, Reaper etc etc) out there, not many of them support video playback - Tracktion 2 played back video - but only Quicktime (which didn't suit my needs, given the vacuum of free win32 video-to-quicktime converters (and my stubborn refusal to pay for something which simply format-shifts like "Quicktime Pro")). This is my personal gift back to the people and developers who've already provided me with more than enough plugins for free, in my home studio. I just hope it works on your system.
At the time I didn't know anything (this is my first audio plugin) so it's taken me quite a while to develop it - particularly since it is not the most simple of plugins to design, given that video windows and host-sync have to be working, along with the usual VST stuff. Eventually, after learning SDL and finding out what it could do, I discovered I knew enough to try it - and, eventually, I did. A long long time after that, it worked.


How can I help ?

Letting me know about bugs is a good start of course- send bug reports to address at the bottom of page.
Before you do though, try the 'barebones' version of the plugin here: VideoVSTbarebones.zip(213K)
If this doesn't work either, let me know - it'll help me pinpoint whether the problem is stemming from-
Donations are appreciated, as they will encourage me to work on future projects and to actually read the more bothersome bug reports :)
This being said, VideoVST is a FREEWARE plugin and in no way should anyone feel encouraged, or obliged, to donate!!! Paypal email address is moc.pophot@hotpop.com.
Another thing you can do is let other people know about the plugin - if this helps them, that'll make me happier.
For the technically-minded, if you want to offer to compile and convert this for an alternative platform - i.e mac or linux - I would be obliged. It's mostly pretty cross-platformed code but I don't have a Mac or a linux box so I can't port it - nor do I have the time. If you do so, you'll be providing many more people with an audio tool they can actually use. Future projects include a program which will provide backup systems for audio-houses/music studios, customised to the technical problems inherent in backing-up, and restoring, audio. Don't ask me when it's going to come out.


Any known bugs ?

VideoVST occasionally crashes in Orion Pro if you adjust the delay parameter too quickly (no idea why this is, doesn't appear to happen in any other host - assumed to be an Orion problem, but of course will continue to look into it). Samplitude playback seems a little buggy (again, no idea why). Positive delays don't appear to work in FLStudio 6 and Ableton Live as yet - no idea why though, they do in every other host apps.
Other than that, the only known 'bugs' tend to be host-specific quirks of interaction. For example, if you minimise a host while playing and the host stops audio playback when minimised (like Tracktion) it may not send the signal to VideoVST that it has stopped - therefore, VideoVST will keep playing. This will continue until you start and stop playback in Tracktion. It must be said that this is a Tracktion-specific problem - not a VideoVST problem... Ableton Live doesn't seem to update itself properly when parameter values are changed, at least while the audio is playing, and every host has their quirks. I am committed to working with any manufacturer who will bother to listen to me, to minimize the above bugs, and any listed in the FAQ-page. For a list of known bugs go here: Bugs and FAQ. If you can't find your bug in here, report it to me at the address at bottom of the page. Before sending a bug, try the 'barebones' version of the plugin here: VideoVSTbarebones.zip(213K)
If this doesn't work either, let me know - it'll help me pinpoint whether the problem is stemming from-


How does it work (Details) ?

I would be lying to say I build it from the ground up - I had a lot of help from the open-source community, including the SDL user-list.
I programmed VideoVST in C++ using the VST SDK C++ templates. I had to learn threaded programming, winapi code, PIC-COFF & ELF assembler and the VST SDK - all of which were quite new to me at the time.
I made a customised build of SDL under mingw32, G++, which provides the window-support and graphic/sound support, and also made a highly-bugfixed, optimised fork of the SMPEG (SMPEG is a MPEG-player library, now-defunct - has no support and minimal documentation) project called SM@PEG to provide the video-player functions. I hope to release this online, someday - if I can get around to some writing decent documentation for it. Don't ask for it until then.


I have other questions...

See the VideoVST Bugs and FAQ (Frequently Asked questions) page here. If you question is not answered there, try emailing me: click.


About Me

Matt Bentley runs a music studio in Hamilton, New Zealand. He is the only person in New Zealand to have done music and soundfx for NASA (North American Space Association). Can you tell he's stupidly proud of it? He programs sometimes, and without a great deal of pleasure- it is not his forte !
His personal (mainly music) website can be found here: clickety-click. In his inevitable spare time (he has cfs) he muses over many of the issues that life brings him, and meditates on matters both ponderous and, typically, boring. He plays the violin when he's under stress, and likes a good Gershwin tune. How about you? Actually I don't know Gershwin's music from a bar-of-soap, and I prefer Autechre or Boards of Canada/Bola.
Emailez-moi.


Disclaimer

This plugin is distributed as freeware. It is provided "as is", without any guarantee made as to its suitability or fitness for any particular use. It may contain bugs, and use of this plugin is at your own risk. Author takes no responsibility for any damage of any kind that may manifest with it's use. You are free to distribute the VideoVST files, without expressed consent, in any manner except for the following: via website, paid magazine or paid CD/DVD. Express consent to distribute VideoVST via one or any of these methods must be obtained from Matthew Bentley. You may not charge others for this plugin, or for any package containing it, without express consent from Matthew Bentley.