Video for FRACTINT
VFF v1.3

Introduction

Video for Fractint (VFF) v1.3 is a dos application that will help you generate mind blowing fractal videos.
This really gives to fractals a new life through a new dimension : time.
As a proof, you can look right now at some videos.
VFF is Written in C language (very little C++) and can be (re)compiled with the freely available Microsoft Visual C++ 2008 Express Edition.
VFF is Open Source.
VFF prepares all the configuration files and calls FRACTINT 20.0 in batch mode, once per image, as many times as necessary.
The previous version of VFF is still available here.


Contents



Knowlege Prerequisite

For recomputing the examples : None
For creating you own videos : A minimum knowledge of FRACTINT for zooming in, moving, changing parameters and saving a PAR section in a PAR file.
Some Knowledge of Adobe Premiere (there are some limitations), Vegas Video Studio 4 (old 3 is bugged) or TMPGEnc or AVISynth
The knowledge of what interlacing is if you want to output your video on a TV. And why it is interesting to take care about frame rate .


VFF Features List

View interpolation between key frames (defined by parsets in a PAR file) as a function of time (image number in fact).
Interpolated Parameters are Zoom factor, View Angle, Translation (i.e. Position) and FRACTINT parameters 1 to 6 (FRACTINT 20.0).

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)


Example Videos

What Time is Love : Fractals dance in synch with music

Released November 2009.
HD Version.
That's the highest available quality 1280x720p@59.94Hz.
Frames rendered at a resolution of 2560x1440, filtered and downsampled to 1280x720.
Computed with VFF 1.3 for 1 month 24h/24 on a Pentium IV 2GHz.
Script : "wtil_ntsc.stb". Selected option in VFF 1.3: double frame rate.

Four Fractal Videos on DVD files to burn on your DVD RW Writer.

Contains the broadcast quality version of a very rythmic fractal video clip for the hit song 'What time is Love' from KLF.
At 50fps, 3'40", full interlaced PAL video.
This was computed on a Pentium2 200Mhz and a few Pentium3 for some sequences: 1 month. 24h/24h.
All this time for more than 10000 frames computed, for a 3'43" Video Clip (PAL).
Warning : the bitrate is quite high, close to 9Mbit/s.

You should have WinRar installed on your machine in order to decompress what's next.

For getting the DVD

Download here the 381MB zip.
In the Zip you will find the VIDEO_TS directory to burn on your DVD. This is supposed to be a PAL DVD.
I don't know how this will behave on a NTSC DVD player. If you try it, please tell me if it works fine.
WARNING again ! Neither you nor I do have copyright over some of the .par files used to create the klf video.

The DVD contains also Redish, Julia7 and ManzPower.
 

DVD Chapter
Duration
Exploration Storyboard, par and map files
KLF What time is Love
3'40"
Many fractals Storyboard and par files+all the map files
Redish
52"
mixing(XAXIS) = {  z=0, c=pixel
        x=real(p1)   :   z = (sqr(z))*x   + (sqr(z)*z) * (1-x) + c
        |z| < 64       }
Get
Julia 7
47"
Exploration of a part of a Julia Set, along a circle in the complex plane. (julzpower)  Get
ManZPower
64"
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
51
25
3'40"
Storyboard and par files+all the map files
Redish
9.5
25
52"
Get
Zoom
4.4
25
29"
Get
High Quality extract
17.4
50
26"
see klf_wtil.stb. Read this section for a perfect display


Installation Instructions


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



 

Source Code / Recompile

If you want to make some tuning or enhancement, Install the whole package if not done before. The source code and visual c++ project is in the package.


QuickStart Example


1) with the windows explorer, go to the VFF directory
2) double click on VFF.EXE
3) Then type in
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


QuickStart guide for generating your first image sequence

0) Before that, you need a minimum knowledge of FRACTINT for zooming in, moving, changing parameters and saving a PAR section in a PAR file.
1) Create a 'my_own' working directory below the VFF directory. I recommend that you execute FRACTINT from your working directory, so that your PAR files and MAP files will be directly located in your own working directory. This working directory is to be below VFF (thus besides the fractint directory).
2) Copy fractint.bat file from 'my_first' to 'my_own'. Double click on fractint.bat. This will start FRACTINT.
3) Select your views (key frames) in FRACTINT, save each as a parset section in a my.par file in your working directory.
    You must have at least two consecutive parsets that use the same fractal type as said here.
4) Verify that your parfile verifies the 6 syntax constraints. Edit it manually as necessary.
5) Quit FRACTINT
6) Ensure my.par is in your working directory along with the MAP files (and formula .frm files if needed) you created.
7) Double click on VFF.exe (first we generate the MAP files for your parfile as described there) 8) Write Down your storyboard (minimum 1 line), call it my.stb, place it 'my_own' working directory.
9) Double click on VFF.EXE
10) Then type in
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.


Fractint Ram/Disk graphic modes as a function of raster aspect ratios

For a discussion about raster aspect ratios and display aspect ratios in the world of video take a look at this or this
Before calling FRACTINT, VFF 1.3, generates an updated AF6 Disk/RAM 'Video' mode inside the FRACTINT.CFG file. The original FRACTINT.CFG file is to be located in the same directory as VFF.exe.


A short Introducion to PAR Files

PAR Files are typically generated with FRACTINT. They are a way to save/recall a fractal view.

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
reset=2000 type=mandel
corners=-1.86057396540422/-1.86057395467634/-9.383852174830307e-007/-9.303393094117285e-007
float=y maxiter=1500 inside=0
colors=000okj<14>YKJXIHVGF<3>R87Q65O44N22L00M10<24>plkrnmspo<3>xxw<25>EM\
HCLFAJE<3>3D7<4>CLFEMGFOI<5>QXRSYTUZVW`XYbZ<2>afbcgdehegjgili<3>qrpstruu\
tvwuxxw<25>EELCCKAAI<3>33C<14>VVYXX_ZZ`<7>nnnppprrq<3>zzy<26>EEDCCBAA9<3\
>332<20>ddcffehhg<2>mmloonssrttsvvuxxw<5>qml
}

Fil2        { ; A Mandelbrot             Ian Adams - Laurent Chabin
reset=2000 type=mandel
corners=-1.8605739603406075/-1.8605739597399991/-9.343990909244726e-007/-9.343254359702659e-007/-1.8605739601579823/-9.3463620702131184e-007
float=y maxiter=2500 inside=0
colors=000_NM<5>TCBSA9R87<2>N22L00M10<24>plkrnmspo<3>xxw<25>EMHCLFAJE<3>\
3D7<4>CLFEMGFOI<5>QXRSYTUZVW`XYbZ<2>afbcgdehegjgili<3>qrpstruutvwuxxw<25\
>EELCCKAAI<3>33C<14>VVYXX_ZZ`<7>nnnppprrq<3>zzy<26>EEDCCBAA9<3>332<20>dd\
cffehhg<2>mmloonssrttsvvuxxw<18>aPO
}

Fil3     { ; A Mandelbrot             Ian Adams - Laurent Chabin
reset type=mandel
corners=-1.8605739600531161/-1.8605739600569562/-9.3434862589865684e-007/-9.3435731594162107e-007/-1.8605739600502145/-9.3435240575901875e-007
float=y maxiter=2500 inside=0
colors=0000`v<6>0ky0mz1mz<30>zzz<46>2zz0zz0yz<45>02z00z00y<59>0020000000\
00<29>00k00m01m<21>0Zv 
  }

Fil4    { ; A Mandelbrot             Ian Adams - Laurent Chabin
reset=2000 type=mandel
corners=-1.860573958330791/-1.8605739615671408/-9.337376370612931e-007/-9.3719964584556968e-007/-1.8605739578196414/-9.3439251486155973e-007
float=y maxiter=2000 inside=0
colors=000oki<14>YKIXIGVGE<3>R86Q64O43N21L00M10<24>pljrnlspn<3>xxv<25>EM\
GCLEAJD<3>3D6<4>CLEEMFFOH<5>QXQSYSUZUW`WYbY<2>afacgcehdgjfilh<3>qrostquu\
svwtxxv<25>EEKCCJAAH<3>33B<14>VVXXXZZZ_<7>nnmpporrp<3>zzx<26>EECCCAAA8<3\
>331<20>ddbffdhhf<2>mmkoomssqttrvvtxxv<5>qmk
}

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.
 
 


PAR Files Syntax Constraints

Unfortunately, in the current version of the VFF parser, some manual work is required before VFF can parse through PAR files.
With some help from the web community, these restrictions may disappear.

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 
  } 

 

You can change the default behaviour of Fractint by adding these lines to a text file called SSTOOLS.INI , to be placed in the fractint directory.
[fractint]
CORNERS=
MAXLINELENGTH=128

Each time you refer to a Parset in a VFF storyboard, then, this parset should be followed (in the parfile) by another parset that uses the same fractal. This second parset defines the second keyframe.
If not, the result will be unpredictable or uninteresting at best.
 


MAP Files Generation

Because VFF doesn't have the parse code and decoder for analysing the colors information of the PAR files, another method is used.

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.
 


Introduction to VFF Storyboards (*.stb)

Now lets take a look at an extract of the klf_wtil..stb storyboard
 

Extract from klf_wtil.stb

 
; 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 
VFF will generate 100 frames from view fil0 to view fil4 (excluded)

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
 


Storyboard Syntax


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
 
 

Parset selection

Image Number Range Specification

View Area Size / Orientation / Position / Parameters  Interpolation function.

Select the way each of these parameters vary between key frames Interpolation Function Name among : SINUS, EXPO, LINEAR, PARABOLIC_FALL, PARABOLIC_JUMP, SINUS2, ARCOS, SINUS2BIS, ARCOSBIS, ARCOSQUAD, EXPOLIN, SLOW_START, QUICK_START

The default interpolation function is LINEAR for all.
 

Force full rotation

 This is an optional integer that should be placed between the rotate and trans parameters. The + or - sign is required.
 This permits you to force a number of 360° turns of the view between the two key frames.
 Default value : 0


 Interpolation Functions

These are recommended uses. But you can use them for translation, rotation, zoom and parameters except otherwise stated.
For translation, what is interpolated is the Real and Imaginary values of the center of the view.
For rotation, the view angle is interpolated.
For zoom, the width is interpolated.
For parameters : the paramters are directly interpolated.
The graphs show a normalized view of each interpolation function.
Horizontal axis 0..1 represents time between the two key frames.
Vertical axis is shown for a parameter going from 1 to 2, 1 to 10 or 1 to 100.
You can also take a look at the pdf of the mapple sheet.

SINUS

EXPO LINEAR PARABOLIC_FALL PARABOLIC_JUMP SINUS2 ARCOS SINUS2BIS ARCOSBIS ARCOSQUAD EXPOLIN
SLOW_START QUICK_START
> INVERSION >
But, What's in Between ?

How to continue a computation from the middle of a storyboard ?

Here is how you can edit the storyboard :

"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
The OS crashed while computing image #1175, in interlaced mode.
So, I edited the storyboard as follows and restarted VFF.

"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

 
 


TOOLS

GIF filtering and Interlacing with GIF2GIF

First, I should say that this type of postprocessing seems to be faisible with AVISynth.

Anyway.

When you have selected the 'interlaced mode' option in VFF, a post process in necessary on the produced GIF images.
 

Go in the images directory.
Copy execs gif2gif.exe, gif2rgb.exe and raw2tiff.exe in this directory.
Then in a command line window, type
  gif2gif 0 49 720 270
This assumes you produced 50 frames in 4/3 aspect ratio at 1440x270 (A specific AF4 Disk Video Mode).
0 is the number of the first gif image to process in the directory
49 is the number of the last gif image to process.
720 is the witdh of the final picture. (half of the width of the gifs)
270 is the half height of the final picture. (the height of the gifs).

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.


GIF filtering and downsampling with GIF2x2y2TIFF

GIF2x2y2TIFF is another .exe tool dedicated to Filter 2x and Downsample 2x images on both the horizontal and vertical axises

Copy execs gif2x2y2tiff.exe, gif2rgb.exe and raw2tiff.exe in this directory
Then in a command line window, type
  gif2x2y2tiff 0 8 1280 720
This assumes you produced 9 .GIF frames with a resolution of 2560 (1280x2) by 1440 (720x2).
0 is the number of the first gif image to process in the directory
8 is the number of the last gif image to process.
1280 is the witdh of the final picture. (half of the width of the gifs)
720 is the half height of the final picture. (half of the height of the gifs).

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


Rythm Time Base generation : Tempo.c

If you want to make your fractal video movements dance synchronously with the rythm of a music, and to be sure that in the long term (4minutes), no shift occurs, this small dumb code can help you.

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


Producing a Video

Additional tools required in order to reach perfection:
Adobe Premiere (only the pro version can produce 50Hz avis) or TMPGEncoder (the freeware cannot produce 50Hz mpeg1 videos) or any other software able to generate an AVI file from a image sequence.
Add a synchronized soundtrack.
For progressive videos, unfortunately, Adobe Premiere seems unable to generate progressive videos at a frame rate higher than 30fps. And TMPEncoder can, but has no advanced editing functions. So it seems Vegas Video 4 makes the deal. Vegas Video 3 had a bad memory leak with GIF image sequences that will explode your PC.

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.


About the importance of frame rate, interlacing and antialiasing.

Because VGA screens are progressive, if we want a perfectly smooth video, unfortunately, we have to generate an AVI at a frame rate that matches the VGA scan rate.
In europe, we can try 50Hz (PAL frame rate), in the US, we can try, 59.97Hz (NTSC frame rate).

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.
 


Changes Since the previous release of VFF

Storyboard (.stb) file names are not anymore restricted to the 8.3 DOS format.
Like before, section names in PAR files (parset names) should not be more than 8 characters long. This is an indirect FRACTINT limitation here.
User can choose any resolution he wants by specifying the number of lines. Number of columns is deduced from the aspect ratio given.
Fast preview generates thumbnail images with a resolution of 60 lines, and respects the requested aspect ratio.
User can select 4/3, 16/9 or any other custom aspect ratio in the form of a real number
Now, before calling FRACTINT, VFF 1.3 generates an updated AF6 Disk/RAM 'Video' mode inside the FRACTINT.CFG file, according to the resolution asked for. The original FRACTINT.CFG file is to be located in the same directory as VFF.exe
Addition of a 'double frame rate' option.
Simulation now also verifies the presence of the formula (.frm) files

Directories organisation has changed.

VFF assumes that fractals were defined in FRACTINT with a 4/3 aspect ratio.


Thanks to all the developpers of FRACTINT
VFF 2000-2010
VFF  V1.3 -- last updated june 2010
Send all your questions/remarks to 
Please put VFF in the subject line.
 *** The End ***


This site is a member of WebRing.
To browse visit Here.

Back to "ideas"
Reach the top