Installation Instructions
Source Code
QuickStart Example
QuickStart guide for generating your first image sequence
FRACTINT.Ram/Disk Graphic modes as a function of RASTER aspect ratios
A short Introducion to PAR Files
PAR Files Syntax Constraints
MAP Files Generation
Introduction to VFF Storyboards (*.stb)
Storyboard Syntax
About the importance of frame rate, interlacing and antialiasing
How to continue a computation from the middle of a storyboard ?
Control of the way each of these parameters vary with time among 13
functions
SINUS, EXPO, LINEAR, PARABOLIC_FALL, PARABOLIC_JUMP, SINUS2, ARCOS, SINUS2BIS,ARCOSBIS, ARCOSQUAD, EXPOLIN, SLOW_START, QUICK_START
Default is LINEAR
Possibility to add 1 or more 360° view rotations (optional parameter 'nrot' in the storyboard) between key frames.
Color Table (*.map) rotation (if possible) or interpolation (if rotation is impossible)
Selection is automatic.
As input, VFF takes a "storyboard" text file.
Each line of the Storyboard refers to a FRACTINT PAR file and a fractal description (parset) included in this PAR File.
This defines a Key Frame.
VFF can be launched in simulation mode in order to quickly detect any storyboard error or missing file that would appear only after hours of computation.
VFF can be stopped at any time by pressing <SHIFT RIGHT> and restarted later (Need to edit the storyboard). Keep the key pressed until FRACTINT leaves.
Generate pictures for final display at 4/3 or 16/9 or custom aspect ratio
Can generate pictures in 4/3 or 16/9 or custom raster aspect ratio.
Notice that these are two different things, and both have to be selected.
For instance, if you want to make a DVD 16/9 anamorphic, then you should select Final display 16/9 and 4/3 raster aspect ratio + interlaced.
Works at any resolution, any frame rate (of course).
Can generate interlaced videos (see tools) for perfect view on TV.
Can generate fast preview thumbnail images for quick review before starting the grand computation.
In fast preview mode, timer speed x 4, calculation/image divided by about 100x, only 60 per image.
Storyboard gives precise time control for generating video sequences:
For instance : can generate a sequence of 25 images so that the last one corresponds exactly to the second key frame. OR can generate a sequence of 25 frames so that the last one is distant by one image of the second key frame so that one can then later continue the sequence toward an additional key frame.
Creates on the fly FRACTINT Disk/RAM Video Modes (in fractint.cfg)
You should have WinRar installed on your machine in order to decompress what's next.
The DVD contains also Redish, Julia7 and ManzPower.
DVD Chapter |
|
Exploration | Storyboard, par and map files |
KLF What time is Love |
|
Many fractals | Storyboard and par files+all the map files |
Redish |
|
mixing(XAXIS) = { z=0, c=pixel
x=real(p1) : z = (sqr(z))*x + (sqr(z)*z) * (1-x) + c |z| < 64 } |
Get |
Julia 7 |
|
Exploration of a part of a Julia Set, along a circle in the complex plane. (julzpower) | Get |
ManZPower |
|
Zn-C=0, with n going from -7 to +7 (manzpower) | Get |
If you don't want to bother with such a huge file, or don't have a DVD writer, try ...
KLF What time is Love at 25fps, 3'40", downsampled to 360*270 from the full interlaced PAL video. Edited with Adobe Premiere.
For that big storyboard, I recommend that you generate yourself the map files with VFF for each PAR file.
If you don't want to bother with that, here are all the map files from my fractint directory.
Redish, at 25fps, downsampled to 360*270 from the full interlaced 720x540 PAL video.
Simple Zoom at 25fps
A High Quality extract at 50fps. Edited with Vegas Video 4, with music and antialiased 2x (first 613 frames only).
Storyboard is from klf_wtil.stb, lines 306 to 405 but at 50fps instead of 25fps.(numbers (+x|*x) multiplied by 2)
MPEG1 Video | Size (MB) | FPS | Duration | Storyboard, par and map files |
KLF What time is Love |
|
|
|
Storyboard and par files+all the map files |
Redish |
|
|
|
Get |
Zoom |
|
|
|
Get |
High Quality extract |
|
|
|
see klf_wtil.stb. Read this section for a perfect display |
1) Download the whole package and unzip it anywhere on your PC.
This file contains all the things this server has about VFF v1.3 except the videos.
So, no more downloads are necessary for you. You can ignore the downloads.
2) Add the created fractint directory to the system environment variable PATH : Under windows XP, right click on Destop > Properties > Advanced > Environement variables. And modify the path by appending at the end a ';' followed by the full path to the fractint directory.
3) You can directly proceed to the quickstart example
VFF v1.3
Do you want to generate the map files for a parfile ? (1)=Yes. (0)=No -->0 Type storyboard (.stb) filename=>my_first\my_first.stb Do you want to simulate ? (1)=Yes. (0)=No -->0 Give many decimals to avoid rounding errors Final Display Aspect Ratio : (0) 4/3. (1) 16/9. (other) custom. -->0 Give many decimals to avoid rounding errors Raster Aspect Ratio : (0) 4/3. (1) 16/9. (other) custom. -->0 (0) Fast Preview. (2) All Images -->2 Please give the number of lines in the final video : Type 576 for PAL, 480 for NTSC, 720 or 1080 for HD. -->480 Antialising if selected will double or quadruple the number of pixels computed. Post processing will be necessary for filtering. (1) Yes Anti Aliasing 2x. (0) No Anti Aliasing. -->0 Double frame rate with no interlacing ? (1)=Yes. (0)=No -->0 Interlacing will double the amount of pictures calculated Each image will have half the final vertical resolution Every other image will be shifted by 1/nb_lines vertically in the complex plane Post processing will be necessary for interlacing each pair of images Calculate for Interlacing ? (1)=Yes. (0)=No -->0 |
Then Wait...a few minutes.
In the VFF directory, you should find the 10 gifs sequence. Browse the directory with ACDSee.
When FRACTINT computes, you can immediately stop it by pressing escape.
But to stop VFF from calling FRACTINT, you must also press <RIGHT SHIFT> when VFF "has the ball".
In general, you have to do that "in the dark" because of video scan rate switches.
The storyboard and map files for the whole sequence are available in the 'example videos' section under the name 'redish'.
You can then produce a video
The process is quite slow, so, wait. The video resolution switches are normal.
Then you will find in a new 'maps' sub directory below the my_own directory, all the new created .map files.
VFF v1.3
Do you want to generate the map files for a parfile ? (1)=Yes. (0)=No -->0 Type storyboard (.stb) filename=>my_own\my.stb Do you want to simulate ? (1)=Yes. (0)=No -->0 Give many decimals to avoid rounding errors Final Display Aspect Ratio : (0) 4/3. (1) 16/9. (other) custom. -->0 Give many decimals to avoid rounding errors Raster Aspect Ratio : (0) 4/3. (1) 16/9. (other) custom. -->0 (0) Fast Preview. (2) All Images -->2 Please give the number of lines in the final video : Type 576 for PAL, 480 for NTSC, 720 or 1080 for HD. -->240 Antialising if selected will double or quadruple the number of pixels computed. Post processing will be necessary for filtering. (1) Yes Anti Aliasing 2x. (0) No Anti Aliasing. -->0 Double frame rate with no interlacing ? (1)=Yes. (0)=No -->0 Interlacing will double the amount of pictures calculated Each image will have half the final vertical resolution Every other image will be shifted by 1/nb_lines vertically in the complex plane Post processing will be necessary for interlacing each pair of images Calculate for Interlacing ? (1)=Yes. (0)=No -->0 |
Then Wait...some time.
You can then produce a video.
Here is a typical PAR File. Extracted from filament.par
Fil0 { ; A Mandelbrot
Ian Adams - Laurent Chabin
reset type=mandel corners=-1.8605744949/-1.86057342518/-2.53921203141e-006/6.704875045157e-007/-1.860575677943/-9.894643220421e-007 float=y maxiter=1500 inside=0 colors=0006zz<2>2zz0zz0yz<43>05z03z02z00z00y<59>002000000000<29>00k00m01\ m<8>0Fq0Hq0Iq0Kq0Lr<16>0ky0mz1mz<30>zzz<42>7zz } Fil1 { ; A Mandelbrot
Ian Adams - Laurent Chabin
Fil2 { ; A Mandelbrot
Ian Adams - Laurent Chabin
Fil3 { ; A Mandelbrot
Ian Adams - Laurent Chabin
Fil4 { ; A Mandelbrot
Ian Adams - Laurent Chabin
|
Each of these parset sections describe a fractal equation, a view area, parameters and a color palette.
You can see directly each of these in FRACTINT.
Start FRACTINT, go to main menu.
Press '@' : Run saved command set
Press 'F6': To select the PAR File : filament.par
Then select parameter set 'Fil0' : press enter.
Let's take another PAR file extract (julia.par)
Nuts01
{ ; Microscopic Creatures Battling With Nutcrackers
; Par and Image Copyright 1996 by Lee H. Skinner reset=2000 type=mandphoenixclx corners=-0.2813104699/-0.2742954916/0.1535485472/0.1588097809 params=-0.008527787102877896/0.003323770867030854/0.5/0/0 float=y maxiter=1023 inside=0 logmap=yes sound=off colors=000cmk<3>msqptsrvu<2>zzz<16>eejddibbh<3>YYdUUa<3>OOXNNWLLV<5>GGQF\ FPEEO<5>99L88K88K<4>44G33G22F11F<2>00E55H88K<2>FFPHHRIIS<3>PPXRRYSS_<2>X\ XbYYcZZd__e``f<10>mmpnnqppqppr<2>ttu<6>ZZZWWWTTT<3>GGGCCD99A<2>000<5>000\ <3>000001112<4>55966A77B<2>99FAAHCBJ<11>UTZWV_XWa<3>cafechfdi<2>igkkhlki\ mlimmkn<6>mknmknmkn<2>mknmjmlhl<11>bMVaLU`JS<3>ZBNY9LX7KW5JV3HU1F<3>P2JO\ 2KM3LL3MK3N<3>B2J92I72H<2>00E<3>2AL2CN3FP3HR4KT5NV<3>3UV3WV2YV<3>DaZGa_J\ b`<2>RecUfeWhfZjh`ki } |
[fractint]
CORNERS= MAXLINELENGTH=128 |
An automatic preprocess (with VFF) consists in calling FRACTINT in batchmode in order to generate automatically a .map file for each PAR section of a given PAR file.
The name of each .map file is 'the name of the PAR section'.map
You need launch this process each time you add new sections to a PAR file.
To do that : execute VFF with no file argument.
This is the first question asked by VFF.exe :
'Do you want to generate the map files for a parfile ?'
Reply : 1
Then type your parfile name.
A text file called vff.key is created and FRACTINT is directly called in batch mode in order to execute this batch. Command Line executed is 'fractint autokey=play autokeyname=vff.key'
At the end of the process, you will find all the created .map files in a 'maps' subdirectory below the directory of the PAR file.
From that point, you can proceed with the other menus of VFF.
Now lets take a look at an extract of the klf_wtil..stb storyboard
; parfile parset ibeg iend cbeg cend zoom
rotate [nrot] trans par1..par6
filament.par fil0 +25 PARABOLIC_FALL SINUS SINUS filament.par fil1 +25 EXPO SINUS SINUS filament.par fil2 +25 EXPO SINUS SINUS filament.par fil3 +25 PARABOLIC_JUMP SINUS2 SINUS2 |
filament.par fil0 +25 PARABOLIC_FALL SINUS SINUS
Generates 25 frames from fil0 to fil1 (excluded).
Zoom factor will evolve such that one have the impression to fall and stop abruptly. Use it typically for zoom ins.
Rotation will follow a sinus curve (slow then fast then slow).
Translation will follow a sinus curve (slow then fast then slow).
(nrot is an optional number. Its default value is 0)
Parameters will evolve linearly (actually here, the fractal depends on no parameters).
Images will bear names Im00000.gif to Im00024.gif
filament.par fil1 +25 EXPO SINUS SINUS
Generates 25 frames from fil1 to fil2 (excluded).
Zoom factor will evolve such that one have the impression to make a smooth zoom.
Rotation will follow a sinus curve (slow then fast then slow).
Translation will follow a sinus curve (slow then fast then slow).
Images will bear names Im00025.gif to Im00049.gif
....
filament.par fil3 +25 PARABOLIC_JUMP SINUS2 SINUS2
Generates 25 frames from fil3 to fil4 (excluded).
Zoom factor will evolve such that one have the impression to be ejected by a cannon. Use it typically for zoom outs.
Rotation will follow a sinus2 curve (quite slow then quite fast then quite slow).
Translation will follow a sinus2 curve (quite slow then quite fast then quite slow).
Images will bear names Im00075.gif to Im00099.gif
filament.par fil3 *24 PARABOLIC_JUMP SINUS2 SINUS2
would have generated 25 frames from fil3 to fil4 (included).
Images names would be Im00075.gif to Im00099.gif
Single comment lines should start with a ';'
Enclose commentary blocks between brackets '{' and '}'
(a|b|c) means you have the choice between syntaxes a, b or c.
[a] means a is optional in the syntax.
In what follows, a key frame is a view defined by a parset in a parfile
Each effective line contains
parfile parset
(ibeg iend cbeg cend |
+x
| *x ) [zoom
[rotate [(+|-)nrot]
[trans [par1[...par6]]]]]]]]]
example:
seehorse.par see +25
EXPO LINEAR PARABOLIC_JUMP
Three alternate ways to specify the number of images to generate and their filenames.
parset1
parset2
ibeg ibeg+1...
iend
*------*------*------*------*------*------*------*------*------*------*
#------#------#------#------#------#------#
cbeg
cbeg+1
cend
This give fine control over image generation.
with the first syntax.
With n=0, x=25, that makes 0 25 0 24.
With n=25, x=25, that makes 25 50 25 49.
Assuming that the last picture number computed was n-1, then this is equivalent to
with the first syntax.
With n=0, x=24, that makes 0 24 0 24.
With n=25, x=24, that makes 25 49 25 49.
The default interpolation function is LINEAR for all.
All these curves were generated with a mapple sheet. See vff/data/interpol.ms or vff/data/interpol_m8.ms.
|
"redish.stb"
; Corresponds to redish2002.avi /img 0-2599
; parfile parset ibeg iend cbeg cend zoom rotate nrot trans par1..par6 redish.par dish1 +50 EXPO redish.par dish2 +50 EXPO redish.par dish3 +50 EXPO redish.par dish4 +50 EXPO redish.par dish5 +50 EXPO redish.par dish6 +50 EXPO redish.par dish7 +50 EXPO redish.par dish8 +50 EXPO redish.par dish9 +50 EXPO redish.par dish10 +50 EXPO redish.par dish11 +50 EXPO redish.par dish12 +50 EXPO LINEAR SINUS redish.par dish13 +50 EXPO redish.par dish14 +50 EXPO redish.par dish15 +50 EXPO redish.par dish16 +50 EXPO redish.par dish17 +50 EXPO redish.par dish18 +50 EXPO redish.par dish19 +50 EXPO redish.par dish20 +50 EXPO redish.par dish21 +50 EXPO redish.par dish22 +50 EXPO redish.par dish23 +50 EXPO redish.par dish25 +50 EXPO redish.par dish26 +50 EXPO redish.par dish27 *49 EXPOLIN LINEAR QUICK_START |
"redish_crash.stb"
; Next storyboard shows the type of thing you can do in case of
an OS crash
; while computing. ; ; parfile parset ibeg iend cbeg cend zoom rotate nrot trans par1..par6 { redish.par dish1 +50 EXPO redish.par dish2 +50 EXPO redish.par dish3 +50 EXPO redish.par dish4 +50 EXPO redish.par dish5 +50 EXPO redish.par dish6 +50 EXPO redish.par dish7 +50 EXPO redish.par dish8 +50 EXPO redish.par dish9 +50 EXPO redish.par dish10 +50 EXPO redish.par dish11 +50 EXPO } ; KLF Fractint Was computing in interlaced mode the line ; "redish.par dish12 +50 EXPO LINEAR SINUS" ; Remember that in interlaced mode, there are twice more images computed. ; Windows Crashed while computing picture #1175 which is the second ; of a pair of fields in a video frame. (First image saved is #0 here). ; So I needed to delete pic #1174 because we cannot have a KLF computing starting ; on an second field. (pic #1175 was not saved yet on HDD) ; I put in commentary what is up and modified next line ; in order to restart from picure #1174 (2*587)= 2*(11*50+37) ; You can see that by explicitly writing images numbers, ; you can restart wherever you want. ;redish.par dish12 +50 EXPO LINEAR SINUS ; parfile parset ibeg iend cbeg cend zoom rotate nrot trans par1..par6 redish.par dish12 550 600 587 599 EXPO LINEAR SINUS redish.par dish13 +50 EXPO redish.par dish14 +50 EXPO redish.par dish15 +50 EXPO redish.par dish16 +50 EXPO redish.par dish17 +50 EXPO redish.par dish18 +50 EXPO redish.par dish19 +50 EXPO redish.par dish20 +50 EXPO redish.par dish21 +50 EXPO redish.par dish22 +50 EXPO redish.par dish23 +50 EXPO redish.par dish25 +50 EXPO redish.par dish26 +50 EXPO redish.par dish27 *49 SINUS LINEAR PARABOLIC_JUMP |
Anyway.
When you have selected the 'interlaced mode' option in VFF, a post process
in necessary on the produced GIF images.
The result will be 25 tiff interlaced images of the final resolution
720x540.
Numbered from 0 to 24.
The tiff format was selected for its 24bits lossless compression.
The 24bit format is required because the filtering increases the number
of colors from 256 (gif) to 24bits.
Here is an example :
Im00050.gif (reduced here 50%) top field
+ Im00051.gif (reduced here 50%) bottom field
with a call to "gif2gif 50 51 720 270"
Makes : Im00025.tif interlaced (full size)
Here is the gif2gif.c source code
It is far from efficient code, but it works !
Do not try to compile that with turboC ... All you will get is memory
gardening. Compile that with a 32 bits compiler like visual c++ 6.
When you are done with the interlacing, then you are almost done. Produce your Video.
The result will be 9 tiff interlaced images of the final resolution 1280x720.
Numbered from 0 to 8.
The tiff format was selected for its 24bits lossless compression.
The 24bit format is required because the filtering increases the number of colors from 256 (gif) to 24bits.
Here is the gif2x2y2tiff.c source code
The goal is to know precisely when each beat pulse occurs in time.
The first thing you need to do is to know very very precisely the beat rythm.
So, there is no magic, you have to use a sofware like adobe premiere in order to display graphically the soundtrack. You have to locate the precise time of the first beat and the time of the last beat. Count
the time difference and the exact number of beats in between.
Tempo.exe will generate a text file that looks like
One line per Beat pulse
0000 0266 000 00:00'10"16
0012 0278 001 00:00'11"03 0024 0290 002 00:00'11"15 0037 0303 003 00:00'12"03 0049 0315 004 00:00'12"15 0062 0328 005 00:00'13"03 0074 0340 006 00:00'13"15 0087 0353 007 00:00'14"03 0099 0365 008 00:00'14"15 0112 0378 009 00:00'15"03 0124 0390 010 00:00'15"15 0137 0403 011 00:00'16"03 0149 0415 012 00:00'16"15 ... ... 5283 5549 423 00:03'41"24 5295 5561 424 00:03'42"11 5308 5574 425 00:03'42"24 5320 5586 426 00:03'43"11 5333 5599 427 00:03'43"24 |
First column : Image Number
Second colum : same as first column, with a time shift (here +266 images)
Third column : Beat Pulse number
Fourth Colum : TimeCode on the video editor timeline, Video Image
Time in Hour:Min'Sec"ImageNb
Here, the rythm is very close to 120bpm.
#defines:
-- REAL_FRAME_RATE in images per second (25 for PAL/SECAM, 29.97
for NTSC, 24 for Cinema, 60 for VGA)
-- TIMELINE_FRAME_RATE in images per second on the Timeline of
the video editor (25 for PAL/SECAM, 30 for NTSC, 24 for cinema, 60 for
VGA)
-- Rythm in Beats per Second
-- SHIFT_IN_FRAMES if needed
-- LAST_PULSE : How many pulses you want in the text file
Important notice : in NTSC with adobe premiere Do SELECT "NOT Compensated
TimeCode 30fps" on the timeline and #define TIMELINE_FRAME_RATE 30
In this specific case, the time displayed on the timeline will not
correspond to a real time, but it will match the timecode generated by
tempo.c
I wanted to avoid the burden of programming the specifics of a "compensated
timecode 30fps".
The source code is located in vff/tools/tempo/tempo_v1.c
For TV Display (interlaced display):
A Miro DC10Plus or DC30 or any video playback card able to generate
a clean Television signal.
I have found in dec 2003 an unofficial
DC30 driver for WinXP. Not tested yet.
For record on DV Tape (interlaced display)
Any Firewire card + DV Playback software.
For VGA monitor display, PowerStrip or TVTOOL or any other software able to control the refresh rate of your monitor screen so that it really matches the AVI frame rate.
An old ACDSee Classic V2.43 is still enough for browsing through GIFs. It seems that a Pentium4 2GHz is fast enough to browse through GIFs at video speed.
In europe, 50Hz is more attractive because this frame rate is enough for a perfect fluidity and because it is the PAL/SECAM frame rate. However it is a little bit more hard to setup your video card to this frequency because of course several board manufacturers don't give a fuck about european standards.
So everybody, in order to illustrate my point, as a prerequisite, you
need to set the scan rate of you VGA monitor to 50Hz.
Do this with PowerStrip.
This little and excellent software will give you full control over your
VGA monitor. It is important to set it exactly at 50Hz. Sometimes, some
tuning is necessary. Your VGA monitor must accepts the 50Hz ! Which is
not always the case. Trying to run your VGA monitor at 50Hz is not very
risky. In case of loss of synch with powerstrip, type Alt-R;
it resets the display parameters.
Here are 3 videos with increased quality from top to bottom. They were
all three generated with TMPGEnc
You MUST Play them in full screen mode. Windows Media Player will synchronise
the VGA scan rate with the video. I don't recommend WMP9. It is slow.
It appears that the DivX player is faster than the WMP9. PC Performance
needs to be high for playing the 50fps videos at 50hz.
Video 1 at 25fps. MPEG1.
Video 2 at 50fps, MPEG1. Needed
TMPGEnc Plus 2.5 for the encoding. no sound, and no antialiasing
Video 3 at 50fps, edited with
Vegas Video 4, with music and antialiased 2x (first 613 frames only).
How did you accept until now action cinema at 24fps ?
This makes a big difference !
The final point is that a 25fps/30fps video is not adapted at all to
a 50fps/60fps display !
This also makes the demonstration of how important it is to interlace
your video if your final display system is a TV.
If you don't interlace it, it will look like video 1. If you interlace
it, it will have the fluidity of videos 2 and 3.
Directories organisation has changed.
VFF assumes that fractals were defined in FRACTINT with a 4/3 aspect ratio.
|