vj, vjing, Isadora, Visual programming, Free software, tutorial, download, SYStem, vj software
the evolution of experience
experience:Log >> create a Video Sequencer
What is a video sequencer?
In our case it will be a module that is loosely modeled on a hardware drum machine. I will walk you through the building this software module in Isadora. At the end you will have a fully functional video sequencer / stepper that you can add to your own projects.

Video Sequencer Interface
The internal switching unit of the sequencer will be our programming focus. This includes methods of passing multiple video streams (4 in our case, but in theory you can expand to as many as your hardware can support.) through to a cross-fader.
We will allow the source of each video channel to be defined, as well as; a global play and transition time for the clips.
This tutorial assumes that you are familiar with Isadora, and you have at minimum completed watching the video tutorials available.
To get started, download the Isadora fully functional demo or get the pre-release (latest release) if you wish to use the complete, fully functional, and FREE video sequencer provided at the end of this article.
This sequencer should work equally well on both Apple computers as PC's but I have not tested Mac so please let me know if you have any problems and we can try to work them out.
To get started we are going to create a few basic elements, in the following order:
The Video Switcher will become an actor (think object) of its own that will be used within another actor that we will create called 'SequenceMixer'. All of the patching in this sequencer can be done without creating actors, but creating actors makes the interface cleaner and easier to move around. You can also reuse both the 'Video Switch' actor and the 'SequenceMixer' in other projects. In Isadora you drill into actors in very much the same way as you navigate into objects in Adobe Flash, so if you have any Flash experience it will help you here.
Step 1 build the Video Switcher.
A smooth video switch requires that the stream of video you are switching between be active before the switch occurs, and since we plan to add a cross-fade to the switch we know that whatever video is in the primary play position will need to remain visible to the mixer until at least the cross-fade is complete at which point the secondary video becomes the primary video. Also it is fair to look at this in the reverse, that the secondary video must be active before the cross-fade begins and remain this way until the next video (the third in this case) takes its place as primary.
We are going to use two 'selector' actors to accomplish this switching. We will always have two video streams feeding into our mixer so we are going to switch 4 videos separately in two channels.
Lets Do IT:
Recap:
You should now have each movie players video output connected to one input in each selector. Make sure the connections are in the same order. (if movie player 1 is connected to the first input in selector 1 then make sure it is also connected to the first input in selector 2)
NOTE: in my example I added 4 video delays (bypass set to on). They do nothing other than cleanup the connections.
You should also now be feeding the video out of the selector to a projector.
Download the completed Isadora file.
Step 2 make the selectors switchers
Currently your project plays only 1 video (if you see 2 you may want to double check the Recap at the end of the last section). Why? because each 'selector' actors select input is set to 1. Changing this setting from 1 thru 4 will select the corresponding values input (in our case a video stream, I suggest you test this). The next step as you have probably guessed is to automate the switching of these selector inputs. We need to feed a incremental value of 1 thru 4 to the select input of each selector. This value stream also needs to loop so that we finish each loop moving from 4 to 1. Additionally we need to offset one feed so that it is always 1 behind the other stream, giving us our primary and secondary video streams.
Lets Do IT:
If you got everything connected correctly you should now see the selectors cycling through the settings, and if you turn on your stage you should see video switching, although 2 videos will be composite on to each other making the switch a little unclear. So to make things make sense set the 'horz pos' (horizontal position) of one projector to 50 and the other to -50, now you should see have of each video beside the other. If you watch now you will see that one video will also play twice, first on one side then on the other, being replaced each time with the next video in the sequence.
Recap:
So what we did here might already make sense to you but it can't hurt to clear up a couple foggy spots. We will only added 3 elements in this step. First the counter with the wrap setting, so that we can count (eg:1,2,3,4,1,2,3,4,1,2...) then the pulse (remember that the speed of a pulse is set in Hz.. 1/cycles per second) to automate the incrementing of the counter, and finally the value delay along one value path to offset the value received by our secondary selector. The 'value delay line' actor has a default size of 1 set and this worked perfect for us since we only wanted a value passed 1 step behind the value being passed to our lead selector. If we change the size to 2 we will be activating the 3 value passed and always passing a value 2 steps behind the current counter position.. this would cause use a problem in this application, can you guess why? (hint: think about the cross-fader)
Download the completed Isadora file.
STEP 3 lets create our first user actor: Video Switch
We are now going to spend a few minutes to move most our our current functionality inside a custom actor (user actor). I talked about a few of the benefits of creating these actors earlier but one very important one for me right now is that I can no longer take screen captures of my entire patch.
Its easy and this part should move quickly.
Lets Do IT:
OK, so we just tore the path apart, wrapped one part of the functionality into a user actor, and then reconnected everything as it was using the new 'video switch' actor. With any luck you should now be able to run the patch and it will run identically to how it did at the end of step 2.
Recap:
User actors allow you to wrap program functions in re-useable blocks. You are required to define the inputs and outputs of your user actors. One complication in the process is that certain actors will need to be removed before the 'user inputs' and 'user outputs' can be linked. If multiple link threads were connected to these actors it can become confusing/difficult to reconnect the threads. I recommend adding additional actors between the beginnings and ends of the threads if there are multiple connections being made and you plan to convert the functionality into an actor (I used the video delay with bypass on after the movie players).
Download the completed Isadora file.
STEP 4 take control of the pulse time
Up until now we have had the pulse frequency set directly in the 'pulse' actor. We will now do a little work to allow us to edit this in a more easily readable/understood format, Seconds.
Lets Do IT:
Now if you change the input of the 'absolute value' actor (in seconds) the pulse will be set accordingly. Play with this a bit. Try very short periods like 0.25 and longer periods like 7.
Recap:
The 'pulse' actor uses Hz (cycles per second) as the standard setting of frequency.
You will find most generator type actors use Freq in Hz.
A simple calculation converts this value to a more human readable unit.
Download the completed Isadora file.
STEP 5 build on a video mixer
So this step doesn't include that many steps but it does give the sequencer an important final touch, allowing each image to cross-fade into the next. At the end of this step you will be able to adjust the transition time independently of the the play (pulse) time. If you set a transition time that is longer than the pulse time the cross-fade will not complete before the video switch is triggered (we won't disallow these settings as it is another effect that may be of use at times).
Lets Do IT:
You should now have the mixer transitioning from 0->100 over a period of 1 sec. You can now adjust the mixer transition time by adjusting the rate 1 input of the 'envelope generator'. Note this value is set in seconds already, so your 2 time settings now use a single time unit.
Recap:
We are now feeding the 2 video feeds from your 'video switch' actor into a 'mixer' actor. We are using the trigger from the pulse to do two things now: 1 it triggers the switching of the video stream in the 'video switch' actor, and 2 it starts the mixing of the video streams by triggering the envelope generator.
When a trigger is received the primary video is moved from video1 out to video2 out, but at the same time the envelope generator is triggered, this sets the transparency of video1 to 0, so that the primary video is still fully visible, and starts the transition of this setting to 100, where video2 is fully visible and video1 is hidden. When the pulse triggers again the process repeats. In the end we have a nice repeating 2 channel video cross-over.
A fun way to test the mixer now is to set the Play-Time (feeding into the pulse) to a higher number (say 10 seconds), and the Transition time (rate 1 on the envelope generator) to match. You should now see a constant slow cross-fade between the switching video feeds.
Download the completed Isadora file.
STEP 6 make it modular
We could leave it pretty much as is and just get to building an interface, but maybe you would like to have 2 video sequencers running at once? (I do;)
So we are going to take all of this functionality and wrap it up as another user actor, 'SequenceMixer'.
Lets Do IT:
I moved a little quicker this time and with less explanation since we have done this process before. Nothing new this time.. just showing you that user actors can be contained within other user actors. Your new actor should have 6 inputs (2 for times, and 4 video) and one video output.
Recap:
CUT and PASTE the functions you want to encapsulate into a user actor (object), add the inputs and outputs, and save. Relink things to get it working the same as before.
Download the completed Isadora file.
STEP 7 build an interface
I am not going to go into extreme detail here. Just a warning. We will add controls to select a video for each of our 4 video feeds, as well as sliders to control the transition time and clip play time.
Lets Do IT:
OK, you now have control of the sequencer at a most basic level. If you are playing with your settings you will probably find that the time controls don't make setting useable times easy. Further the transition time is scaling strangely (in the decimal points).. these are little things I will leave up to you to figure out.. My finished file has them corrected, so if you like you can look through it to see what was done.
Here is an example of an interface for controlling the same video sequencer that has had a few more input/outputs used. Most are direct controls of the movie player, but one notable feature is the green bar that displays the current primary movie. This is accomplished bu setting an output in the 'video switch' actor for the current active selection, and then again passing out of the 'SequenceMixer' actor. The control is a horizontal radio button that listens to the output of this selection. You can link controls to the outputs of actors inside other actors, but I personally feel this is bad practice as it become difficult to locate links pretty quickly. Passing them through and out to the "surface" may take a little longer but is well worth the effort.
How to improve the design of this patch?
There is something you can do to make your actors more generic, thus more flexible for use in future projects. Try to rebuild the sequencer with a simplified 'Video Switch' actor. The simplified actor should switch only 1 channel of video. You will have to use two copies of the actor in the 'SequenceMixer' to feed your cross-fade system. Once you have this working I would suggest turning the cross-fade system into its own actor, this could again be a rather useful element for further projects.
The links where not allowing download of the Isadora filetypes.. I have corrected the problem.
Posted by DusX, 26/10/2011 6:34pm (4 months ago)
nicely done. i tried the link at
http://www.dusxproductions.com/assets/Blog/tutorials/video-sequencer/sequencer-step7.izz
but got the error message
Forbidden
You don't have permission to access /assets/Blog/tutorials/video-sequencer/sequencer-step7.izz on this server.
Posted by eric, 26/10/2011 5:41pm (4 months ago)
RSS feed for comments on this page | RSS feed for all comments