Free Vision Mixer
C C++ JavaScript M4 Makefile Objective-C++ Other
Pull request Compare This branch is 5 commits ahead, 5 commits behind jaromil:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


 -=:[ software foundry ]:=--- -  -- -   proudly presents:

  o__ __o__/_                                            __o__
 <|    v                                                   |
 < >                                                      / \
  |         \o__ __o     o__  __o     o__  __o            \o/
  o__/_      |     |>   /v      |>   /v      |>            |
  |         / \   < >  />      //   />      //            < >
 <o>        \o/        \o    o/     \o    o/      \        |
  |          |          v\  /v __o   v\  /v __o    o       o
 / \        / \          <\/> __/>    <\/> __/>    <\__ __/>

              [[[  FreeJ 0.11 "alive in babylon"  ]]]



FreeJ  is a  vision mixer:  a  digital instrument  for realtime  video
manipulation used  in the fields  of dance teather,  veejaying, online
streaming, medical visualisation and TV.

It runs a  video engine in which multiple layers  can be filtered thru
effect  chains  and then  mixed  together  with  images, movies,  live
cameras, particle generators, text scrollers and vector graphics.  All
the resulting video mix can be shown on a screen, encoded into a movie
and streamed live to the internet.

FreeJ can be controlled locally or remotely, also from multiple places
at the same time, using its ascii console interface; operations can be
scripted in  javascript and triggered  live via keyboard,  mouse, MIDI
controllers,  Joysticks,  OSC  clients,  Wiimotes and more devices.

 FreeJ's sourcecode is  written in portable C and C++  and it works on
most platforms  supported by the  GNU C compiler, including  32bit and
64bit processors, PowerPC and various ARM flavours.

FreeJ is released free under the GNU General Public License (v3).


++ reads and renders layers from multiple sources:
   webcams, TV, divx/avi movies, images, txt files and more
++ can encode in Ogg/Theora video, recording on local file
   and streaming live to an online Icecast server
++ can be controlled from remote: VJoE - VeeJay over Ethernet
++ can be scripted in object oriented javascript
++ supports frei0r and freeframe video plugins
++ very efficient video engine with multithreaded layers
++ Emacs/Vi style console with hotkeys and completion
++ multiple controllers at the same time (Midi,Joystick etc.)
++ 100% Free and open source, GCC 4 compliant portable code 


This software started being  developed as a digital instrument Jaromil
used  in dance-theater  performances. Since  2001  ongoing development
took  inspiration  from   various  artists  and  programmers:  Andreas
Schiffler,  Roberto Paci Dalo',  Tom Demeyer,  Francescopaolo Isidoro,
Kentaro Fukuchi,  Luigi Pagliarini, Isabella  Bordoni, to name  just a

Set the VeeJay Free! was the first motto for this software.

In 2003 Kysucix joined  development contributing the streaming feature
and helping  to include  the javascript parser.  He employed  FreeJ in
interactive installations while working with Studio Azzurro.

Since 2004 Jaromil has been employed by Montevideo / Time Based Arts
(NIMK) and his research  and development  activity also converged in
FreeJ development.

In 2005 Mr.Goil  joined development, writing programmable controllers,
reviewing the scripting environment and adding more features.

In 2007  the austrian initiative Netculture.lab  supported Jaromil and
Mr.Goil  developing the  BeTV release:  it enhanced  scriptability and
streaming, with a major cleanup of the code and wider support of video

After revamping their enthusiasm in the Chaos Computer Camp, in 2008
both Jaromil and  Mr.Goil met  regularly in  code sessions , rapidly
driving the  project  towards a  stable  javascript  API.  Meanwhile
Blender2Crystal  developer  Caedes  has  joined implementing  python
bindings and using the FreeJ engine in a 3d environment.

In  2009 FreeJ  development  is  sponsored  by  Digitale Pioneers  and
almost  the  entire  team had  the opportunity to  join the Wintercamp
organised by  the  Institute of Network Cultures in Amsterdam; here, a
week  of  coding  &  sharing  gave  a  significant push  to the entire
project, leading  to  many  bug  fixes  and  some  really  interesting
rewriting and optimization into the code. Those magical  days  saw the
presence of Jaromil, Acracia, Xant  & V@nex living  in Amsterdam, Vlax
from Oaxaca (Mexico), Kobaiashi &  Shammash from Italy, Crash, Tomak &
Asbesto  from  Sicilia  (Italy),  Mr.Goil  from  Germany,   Andy  from 
Australia, Adnan from Switzerland, Lluis  from  France,  and Rama from 
Argentina. What a nice family! :)

For the time  being, FreeJ is employed in  various video performances,
interactive  installations and  online TV  streams, as  well  used for
visualisations in medical analysis.

Developers are  keen to accept  projects and propositions in  order to
sustain the  development activity and involve  more developers, please
join our  mailinglist on to collaborate  and be
part of our history :)


To start rolling with FreeJ you can have a look to the online
documentation on

Most  powerful uses of  FreeJ involve  scripting for  live interaction
with devices and video compositing,  still a first look at the console
controller can give an initial picture of how the software works.

A nice tutorial to start is: 

Tutorials,  examples and  scripting reference  are available  from the
website as well along with the distributed sourcecode, in the doc/ and
scripts/ directories. GNU/Linux distributions usually ship these files
inside /usr/share/freej and /usr/doc/FreeJ*

As development  unrolls suggestions and feedback are  welcome, join us
on the freej mailinglist on and let us know your
impressions and ideas.


To compile and run FreeJ it is necessary to have:

- a working GNU/Linux system
  or Darwin/OSX -> see the documentation in README.OSX 

- SDL libraries
- PNG libraries
- S-LANG libraries

Several  other  libraries are  optional  and  strongly recommended  to
benefit  from  all  features   implemented  in  FreeJ,  in  particular
Ogg/Vorbis/Theora libraries available on


  ++ GNU/Linux users:

     On  Debian  and  Ubuntu  'freej'  stable packages  are  ready  to
     install. Release  candidates up  to date with  latest development
     are also published on:

     On Gentoo it is also possible to 'emerge freej'

  ++ Apple/OSX users:

     Binary packages  of FreeJ  for OSX should  be available  from the
     website,  although  they  might be  a  bit
     outdated and limited in features.  It is also possible to compile
     FreeJ  from  source following  the  README.OSX  and using  XCode,
     MacPorts and Fink.

     In case you are a programmer talented with OSX please consider to
     get in touch with us  and contribute to make this software better
     on the Apple platform, there isn't much work to do anyway.

  ++ Windlows users:

     No-one of us feels to compile FreeJ on the M$ platform, but there
     is a quick and easy way to try this software using the dyne:bolic
     liveCD  even  without installing  anything,  just  boot it,  see:

  ++ Game console users:

     Experimental builds  of FreeJ have succeeded to  work on consoles
     as GP2X and NintendoDS. It  should be also possible to make FreeJ
     run on other embedded devices and we are very interested in doing
     so, please contact us if you are as well :)


 Denis "Jaromil" Roio        - FreeJ author and mantainer

 Silvano "Kysucix" Galliani  - Scriptability, encoding and layers

 Christoph "Mr.Goil" Rudorff - Scriptability and several controllers

 Luca "Shammash" Bigliardi   - Debian packaging and core development

 Andrea "Xant" Guzzo         - OSX porting and core development

 parts of  included code are  written by Andreas  Schiffler (sdl_gfx),
 Jan  Gerber  (theorautils),  Dave  Griffiths  (audio  bus),  Nemosoft
 (ccvt), Charles  Yates (yuv2rgb), Steve Harris  (liblo), Sam Lantinga
 (sdl_*),  Jean-Christophe  Hoelt (goom),  L.   Donnie Smith  (cwiid),
 Olivier Debon (flash).

 documentation, testing and user case studies have bee contributed by:
 Anne-Marie Skriver, Marloes de Valk, Piotr Sobolewski

 refer to the AUTHORS file for a full list of contributions


A mailinglist for further discussion about FreeJ is running on


For chat we hang around the  channel #dyne on - access is
free via  SSL on port 9999,  connection IP is kept  anonymous for your
own privacy.


To follow development activity,  visit our new distributed versioning
system on

To test new branches and latest code, use git:

 # git clone git://

then generate  the build environment running ./  - note that
automake and aclocal at exactly 1.9 version are required for it.

More detailed instructions about installation by git can be found
into the INSTALL readme file.

Please download  and run  the latest  code from there  if you  want to
submit a bugreport, submit a patch or propose and test new features on
our mailinglist.


FreeJ is (c) 2001 - 2009 by Denis Roio
         (c) 2004 - 2005 by Silvano Galliani
	 (c) 2005 - 2008 by Christoph Rudorff
	 (c) 2008 - 2009 by Luca Bigliardi
	 (c) 2008 - 2009 by Pablo Martin

Statically included libraries are copyright of the respective authors.

This  source code  is free  software; you  can redistribute  it and/or
modify it  under the terms of  the GNU Public License  as published by
the Free Software Foundation; either  version 3 of the License, or (at
your option) any later version.

This source  code is distributed in  the hope that it  will be useful,
but  WITHOUT  ANY  WARRANTY;  without  even the  implied  warranty  of
the GNU Public License for more details.

You should have  received a copy of the GNU  Public License along with
this source  code; if not,  write to: Free Software  Foundation, Inc.,
675 Mass Ave, Cambridge, MA 02139, USA.