Freej beginner tutorial

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).

FEATURES

HISTORY

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 few.

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 development has received support from the Netherlands Media Art Insitute.

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 plugins.

In 2008 both Jaromil and Mr.Goil are meeting regularly in code sessions which are rapidly driving the project towards a stable 1.0 release of FreeJ engine and javascript API. Meanwhile Blender2Crystal developer Caedes is experimenting with python bindings and uses of the FreeJ engine in a 3d environment.

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 http://lists.dyne.org to collaborate and be part of our history :)

GET STARTED

To start rolling with FreeJ you can have a look also to the README, INSTALL and other files distributed with the package or source code. Also, check the online documentation on http://freej.dyne.org

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.

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 http://lists.dyne.org and let us know your impressions and ideas.

Target of this manual

In this part you will learn:

However, we assume that you:


contents


installation

requirements

To compile and run FreeJ it is necessary to have:

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

  2. SDL libraries http://www.libsdl.org

  3. PNG libraries http://www.libpng.org

  4. S-LANG libraries http://www.s-lang.org

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

how to install

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: http://launchpad.org/~jaromil/+archive

On Gentoo it is also possible to 'emerge freej'

Apple/OSX users

Binary packages of FreeJ for OSX should be available from the website http://freej.dyne.org, 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.

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 :)

installing from source code

x86 PC

First, be sure to have:

cdbs, libtool, flex, bison, libsdl-dev, libpng-dev, libfreetype6-dev, libfontconfig-dev, libogg-dev, libvorbis-dev, libjpeg-dev, libslang2-dev, libtheora-dev, libavcodec-dev, libavformat-dev, libswscale-dev, libunicap2-dev, libbluetooth-dev, fftw3-dev, libjack-dev, libasound-dev, libhtml-template-perl, python-dev, swig

If you're going to create Debian packages, you need also debhelper and pkg-config

PLEASE NOTE: automake 1.9 is REQUIRED - it doesn't work with a different version (we're hardly working to fix this).

NASM netwide assembler compiler http://sf.net/projects/nasm

then go in the filters/nasm-x86 and type

make

copy by hand the *.so filters in a ~/.freej/ directory in your home, and you're ready to rock'n roll!

Now, download freej latest stable version from

http://ftp.dyne.org/freej

extract the source archive and compile it:

   $ tar xvfz freej.tar.gz
   $ cd freej
    (if you are reading this file from the sourcecode, start from here)
   $ ./configure
   $ make
   $ sudo make install

this will install:

(or any other prefix you configured instead of the default /usr/local)

To launch it, just type

freej

and that's all!

Darwin/OSX

Please see README.OSX into the tarball.

INSTALL FROM DEBIAN PACKAGES

You can do

apt-get install freej

Anyway to squeeze the best out of your box you want to compile this software with machine specific optimizations!

The source configure script guesses the best compiler optimization flags for your CPU.

The following commands are then necessary to set your build environment, from inside the freej source directory do:

sudo apt-get install autoconf automake1.9
sudo apt-get build-dep freej
dpkg-buildpackage -rfakeroot

INSTALL FROM GIT REPOSITORY

Assuming you have Debian/Ubuntu (for other distro there can be some differences), with all tools needed and all developers lib installed (e.g. build-essential, the libs above etc.:

You need git:

apt-get install git-core

So, get the code:

git clone git://code.dyne.org/freej.git

After this, you will have a "freej" dir. Enter in it, and do

./autogen.sh

that create all the necessary configuration files (It may ask you to install some missing libraries or to install the required automake version 1.9). This also run the "configure" script.

If you need to enable/disable something, relaunch "configure" with your favourite options.

When you're satisfied:

make && sudo make install 

That's all!

If you want to experiment with live video, please be sure to have a working camera and to activate it from your BIOS settings (e.g. for eeepc 701), or it will not work! :)


the first start

[01] Create a directory, for example freej_tmp. We will put our images, movies etc in this directory and we will play inside it:

 $ mkdir freej_tmp
 $ cd freej_tmp 

user interface


some more fun – movies

So far we just used static image – not so much fun. But the very same way we can use a movie.

As a result, freej starts and shows the movie kury.avi.


more layers


mixing two movies


alpha blit


Effects


disabling and deleting effects


that's all, folks


merdainfo

:: TEAM

:: DISCUSSION

A mailinglist for further discussion about FreeJ is running on

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

If you have problems, you are welcome to ask on the mailinglist for help, there you will probably find some good suggestions

Please try to not mix your system's problems with FreeJ's bugs.

If you find bugs, you are welcome to report them in the bugtracking system on http://bugs.dyne.org

:: DISCLAIMER

FreeJ is (c) 2001 - 2008 by Denis Roio

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 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Please refer to 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.

about this document

The original document was by Piotr Sobolewski (http://www.rozrywka.jawsieci.pl/materialy/index_EN.html)

It was revised, enlarged and rebuilt at Wintercamp 09 in Amsterdam, by Asbesto.


CategoryTemplate