See the ChangeLog file for the details of each commit.

2012-02-15: Toonloop 2.2.0
--------------------------

This release is a new stable release in the 2.2 stable series.

It contains a lot of new features and bug fixes since the last 2.0 stable series. See the release notes for the 2.1 unstable branch for details.


2011-11-07 Toonloop 2.1.18
--------------------------

This release is a snapshot in the 2.1 unstable series. 

This version contains new bug fixes.

Bug fixes:
    * Use -Wno-unused-result for Ubuntu Oneiric
    * Disable window icon for Oneiric
    * Fix boost::file_system::path construction for Oneiric


2011-10-05 Toonloop 2.1.16
--------------------------

This release is a snapshot in the 2.1 unstable series. 

This version contains new features and bug fixes.

New features:
    * append clip id to the name of exported video files
    * videotestsrc size is now configurable as well
    * can now switch to a clip and add a frame to it in a single key stroke (shift-number)
    * --list-properties option now prints all the properties and exits
    * implement osc callbacks for playhead_goto and playback_enable
    * can now pause with the p key
    * add /toon/set_int and /toon/set_float osc callbacks

Bug fixes:
    * rename option --print-properties to --list-properties
    * fix bug with info HUD saying it's Git while wrong
    * show the playback group if in overlay layout
    * prioritize clutter-gst 1.0, not 0.10


2011-08-05 Toonloop 2.1.14
--------------------------

This release is a snapshot in the 2.1 unstable series. 

This version contains new features and bug fixes.

New features:
    * Display text and an animation when saving clip or project
    * Go to beginning of clip when choose it (optional)
    * Flash when grab an image
    * Get rid of GTK
    * Interface to serial button sends OSC via Twisted (separate Python script)
    * Add doc/toonloop-title.svg

Bug fixes:
    * Do not die if cannot find MIDI XML config file
    * Implement MIDI binding for SaveCurrentClip command (was crashing)

New bugs:
    * window icon looks bad


2011-06-07 Toonloop 2.1.12
--------------------------

This release is a snapshot in the 2.1 unstable series. 

This version contains new features and bug fixes.

New features:
    * /toon/clip/import_image s:file_name : Imports an image from the filesystem

Bug fixes:
    * Fix segfault upon texture size changes signal triggered. Change signature for texture size changes cb. Fix segfault on amd64.
    * Cast GDK_BLANK_CURSOR to GdkCursor* (was not working on amd64)
    * Set cursor to blank the proper way (gtk 2.16+) (was not working on amd64)
    * Avoid linking to libclutter-gtk-1.0, since it links to gtk+-3 on Natty
    * Compile against clutter-gst either 1.0 or 0.10
    * Set CLUTTER_VBLANK=none before clutter_init
    * Disable double buffering in drawing area. (BadDrawable error)
    * Move check_properties to tests/
    * Use $(top_srcdir) in Makefile.am for tests
    * Fix check_imageimporter
    * Do not hide cursor if on amd64, since it crashes.


2011-02-02 Toonloop 2.1.10
--------------------------

This release is a snapshot in the 2.1 unstable series. 

This version contains new features and bug fixes. It introduce a change in the user interface that is not backward-compatible. 

New features:
    * Added support for DV cameras
    * State saving as a project.xml file (all clips with their FPS, direction and images)

Changes in the user interface:
    * Now use Ctrl-e to export the current clip as a movie file. It used to be done by simply pressing the "s" key.

Bug fixes:
    * Removed gdk_pixbuf_unref since it is deprecated.
    * Check for raw1394 and avc1394
    * Check for install and ln -s
    * Removed "Leaving Toonloop" text which ended up in the man page


2011-01-17 Toonloop 2.1.8
-------------------------

This release is a snapshot in the 2.1 unstable series. 

This version contains bug fixes that were backported to the stable 2.0 branch. 

Bug fixes:
    * Avoid redefinition of PACKAGE_URL in configure.ac
    * Link with libboost-system
    * Put -lSTK in LIBS, not LDFLAGS


2011-01-10 Toonloop 2.1.6
-------------------------

This release is a snapshot in the 2.1 unstable series. 

This version contains new features and bug fixes. 

New features:
    * Added --enable-preview-window option, which shows a window with the livefeed
    * Adding the --image-on-top option. It shows an unscaled image on top of everything except info and help text.
    * Added the --print-properties option. It prints the Toonloop properties.
    * Adding playback_opacity property
    * Updated man page about midi binding rules
    * Added random and drunk playback directions
    * New OSC callback: /toon/clip/save_current
    * New OSC callback: /toon/clip/select i:clip_number

Bug fixes: 
    * Pass movie size to mencoder args
    * Gui: fixed memory leak, fixed delete event callback signature in infowindow
    * Less verbose MIDI input
    * Added Tristan Matthews to the list of copyright holders.
    * Replaced playhead_direction enum by a hierarchy of classes
    * Replaced message by a hierarchy of Command classes
    * Fixed default livefeed opacity
    * Avoid counter-intuitive short options
    * --enable-preview-window and enable-info-window both used -I as a shortcut
    * Splitted MidiInput::on_message_cb into many methods.

Many thanks to:
    * Tristan Matthews for helping with the refactoring.

Have fun with Toonloop!

Alexandre Quessy <alexandre@quessy.net>


2010-12-02 Toonloop 2.1.4 ("pas de deux")
-----------------------------------------

This release is a snapshot in the 2.1 unstable series. 

This version contains new features and bug fixes. 

We have finally implemented again a support for GLSL shader effects. Also, a new info window allows one to view a thumbnail for each clip in a separate display, to ease controlling the looper during a live performance.

New features:
    * Black out when x is pressed
    * Added layout livefeed_only
    * Added the --enable-shaders option
    * Saturation effect (brightness, contrast and saturation)
    * Added a separate window for information. (--enable-info-window)
    * Show a row of thumbnails to represent each clip.
    * black out opacity can be changed

Bug fixes: 
    * Fixed bug with playback not being show at all (since added layout livefeed_only)
    * Using shared_ptr for map of clips
    * Allow up to 40 clips

Notes:
    * If you run toonloop from a directory in your home (not in /usr/local) it might use the midi.xml file in /usr/local, unless you are in the same directory as the executable. Be careful.


2010-11-24: Toonloop 2.1.2
--------------------------

This release is a developer snapshot in the 2.1 unstable series. 

This version contains new features and bug fixes. 

New features:
    * XML MIDI bindings configuration file. (controls, notes and program change can send messages to the controller with some arguments)
    * Can now set float, bool and int properties in the Controller
    * It's possible to change the blending mode between each frame in the crossfading. (ADD or NORMAL)
    * improved how info and help text look
    * Displaying FPS, detailled version info and layout name in info text HUD

Bug fixes: 
    * IMPORTANT: Set v4l2 device name before guessing caps. (back-ported to the 2.0.x stable branch)
    * handling interlaced video source (back-ported to the 2.0.x stable branch)
    * Improved MIDI events parsing.
    * Fixed crossafe between each frame. Each frame must fade out, not fade in.
    * Crossfade: the change in opactiry looks better in in-out cubic easing
    * do not crossfade frames if clip size <= 1
    * cleanup in MidiInput constructor
    * decreased verbosity when grabbing video
    * Fixed crash with std::string given a null arg when looking for midi.xml
    * The path to usr/share/toonloop/presets was wrong.
    * Fixed overlay layout: livefeed was behind playback
    * Fixed issue with map_int always returning 0. Simplified Messaging.

Notes:
    If you run toonloop from a directory in your home (not in /usr/local) it might use the midi.xml file in /usr/local, unless you are in the same directory as the executable. Be careful.


2011-01-16: Toonloop 2.0.6
--------------------------

This release is a maintenance version in the 2.0 stable series.

This version contains bug fixes. These were backported from the 2.1 development branch.

Bug fixes:
    * Avoid redefinition of PACKAGE_URL in configure.ac
    * Link with libboost-system
    * Put -lSTK in LIBS, not LDFLAGS


2010-11-19: Toonloop 2.0.4
--------------------------

This release is a maintenance version in the 2.0 stable series. 

This version contains a new feature and a major bug fix. These were backported from the 2.1 development branch.

New features:
    * support interlaced video

Bug fixes: 
    * detect V4L2 video features from the right device


2010-11-02: Toonloop 2.0.2
--------------------------

This release is a maintenance version in the 2.0 stable series. 

This version contains new features and bug fixes. 

New features:
    * Added a help text. (press F1)
    * Adding a bash completion file.
    * Checking for mencoder at runtime
    * Improved README.

Bug fixes: 
    * Decreased the verbosity a lot.
    * Not checking for mencoder at build time anymore


2010-10-08: Toonloop 2.0.0
--------------------------

This release is the first release of the 2.0 series! After eight months of development, Toonloop 2.0 is finally ready be released. A stable release means that the command-line options and the interactive keyboard controls should not change much for all tags with 2.0 as major-minor numbers. Some new features might be developped in that branch, but each release should be backward-compatible with their ancestor. The next unstable development branch is 2.1. The next stable series is 2.2.

This version contains new features and bug fixes.

New features:
    * Added the --max-images-per-clip option. Default is 0. (infinity)
    * Added the --intervalometer-rate option
    * Added the --enable-intervalometer option
    * Added the --layout option
    * Using a messaging queue for the OSC callbacks
    * Added the --remove-deleted-images option
    * Improved the man page


Bug fixes:
    * Fixed a crash when the OSC interface was enabled.
    * Then, fixed another crash when the OSC interface was not enabled.


2010-10-04: Toonloop 1.9.6
--------------------------

This release is an unstable version in the 1.9 series. This version contains new features and bug fixes preparing the 2.0 stable series. 

New features:
    * Added the --width and --height options
    * Using an asynchronous messaging queue for the MIDI controls
    * New portrait layout

Bug fixes: 
    * Attenuated the undesired white flash on startup
    * half-loaded images when frames are taken with the MIDI pedal
    * onion skinning crashes when the Controller::add_frame_signal_ is triggered by the MIDI pedal. 
    * onion skinning must be over the live input, not the playback
    * Both ctrl-S and S saves the current clips to a movie
    * simplify what is shown and how depending on the layout. 
    * midi.cpp: delete dynamically allocated RTMidi object in destructor.


2010-09-18: Toonloop 1.9.5
--------------------------

This release is an unstable version in the 1.9 series. This version contains new features preparing the 2.0 stable series. 

New features:
    * layouts: Create a single-image layout, combining the two image with the overlay blending mode.
    * gui: Press 'i' to print current loop frame number, number of frames in loop and global framerate.
    * onion skinning: Press 'o' to toggle the onion skinning on/off.
    * caps lock: Allow to capture video at the camera's FPS. (not the clip's playhead only)
    * fade each image into the next.
    * added the --enable-mouse-controls option
    * left right: previous/next image to write
    * enter: last image to write
    * period: change layout
    * support fade in that is longer than a frame duration

Bug fixes: 
    * removed some useless includes
    * simplified some string usage
    * Fixed bug with semi-transparent live input when in splitscreen layout


2010-09-05: Toonloop 1.9.4
--------------------------

This release is an unstable version in the 1.9 series. This version contains new features preparing the 2.0 stable series. 

Warning: some key strokes to control Toonloop have changed since the 1.9.3 release. See the README, the man page, or the Doxygen-generated documentation about the Gui class for the new keys to controls Toonloop.

New features:
    * Video grabbing (can record every incoming frame in a row, at playback FPS)
    * MIDI control 80 controls video grabbing
    * MIDI program change chooses the current clip
    * MIDI volume control (7) changes the playback speed
    * Intervalometer
    * Left:      Play backward
    * Right:     Play forward

Bug fixes: 
    * avoid casting NULL to gboolean
    * use g_get_tmp_dir instead of "/tmp"
    * gui: simplify string handling for window-title assignment
    * more private data, fewer public functions
    * pass more string as a const reference, not by value
    * removed some redundant include statements


2010-08-27: Toonloop 1.9.3
--------------------------

This release is an unstable version in the 1.9 series. This version contains new features preparing the 2.0 stable series. At this point, it's almost feature-complete with a basic GUI for live performances.

New features:
    * Created the Controller class
    * Hitting the period key toggles the layout
    * moved Application::on_pedal_down to MidiInput::on_pedal_down
    * Improved comments to create doc with doxygen.
    * Added the make html target, which creates HTML doc with doxygen
    * adding file OSC, which documents the OSC messages send/received
    * documented key strokes
    * Tab changes the playback direction
    * The r key clears the current clip
    * Changed for an icon that is visible on a black or white background

Bug fixes: 
    * removed unused shader.cpp
    * Using unsigned int for images and clips
    * passing Application* to most classes to their owner_ attribute
    * use const std::string & parameters
    * use forward declarations where possible
    * application: keep free function out of global namespace
    * application: use pointers instead of references, and iterators instead of raw for loops
    * application: fixed memory leak. Make sure we delete unordered map clips_ in destructor
    * clip: catch out_of_range in get_image
    * use scoped_ptr instead of shared_ptr where possible.
    *  limit scope of using declarations
    * removed unused parameters, added extra warning flags
    * constructor invocation cleanup. removed extraneous parentheses when calling new
    * application.cpp:137: create objects on the stack when possible
    * Fixed a bug with first image same as before after the clip is cleared
    * Setting up the OSC sender port doesn't work
    * No more crash when we delete an image sometimes.
    * removed the Application::get_instance singleton static method
    * Figured out why the call to get_image in gui.cpp is sometimes out_of_range playhead when we delete frames

Know bugs:
    * The user cannot use gstreamer-properties to choose a camera, but must provide a command-line argument to Toonloop.


2010-08-24: Toonloop 1.9.2
--------------------------

This release is an unstable version in the 1.9 series. This version contains new features preparing the 2.0 stable series. Since the 1.2 series, we have done a complete rewrite of the application in C++. 

New features:
    * MIDI input controls with the sustain pedal
    * Switch between clips with the number keys
    * Installing the icon
    * Installing the desktop file
    * Using the installed icon for window
    * Updated README with info about GLX and test src
    * Added the --list-cameras option
    * Saving the current clip as a movie file
    * saving: Use the FPS of the current clip for the saved movie
    * saving: use glib's subprocess functions
    * saving: Create a directory for movies and one for images, in the project dir.
    * osc: Support the --osc-receive-port option

Bug fixes: 
    * No more blank image when one is taken when none had been received yet.
    * Fixed how the video-input option is parsed
    * corrections in dependencies
    * Made missing deps more explicit
    * lowered required version of gst-interface
    * Using boost::signals2
    * Had missing include guards in midi.h
    * Was not possible to open MIDI input 1
    * Fixed g++ warnings
    * Use delete [] for memory allocated with new []
    * remove the --keep-in-ram related code
    * Fixed make distcheck target


Release notes for Toonloop 1.9.1
--------------------------------

This release is an unstable version in the 1.9 series. This version contains new features preparing the 2.0 stable series. Since the 1.2 series, we have done a complete rewrite of the application in C++. In this very specific 1.9.1 release, we drop gst-plugins-gl in favour of Clutter-GST. We removed the support for the --keep-in-ram option, which is used to keep the image data in RAM instead of writing the images to the disk.

New features:
    * Using Clutter!

Bug fixes: 
    * Fixed a segfault when using the "test" or "x" video device.


Release notes for Toonloop 1.9.0
--------------------------------

This release is an unstable version in the 1.9 series. This version contains new features preparing the 2.0 stable series. Since the 1.2 series, we have done a complete rewrite of the application in C++. In this very specific 1.9.0 release, we use gst-plugins-gl.

New features:
    * DONE: Choose whether to use SDL, GTK, GTKglext, wxWidgets, or the generic
        one in the gst-plugins-gl/tests/examples. (We chose GTK + Clutter-GST)
    * DONE: Get the pipeline that takes snapshots with gtkpixbufsink done. 
    * DONE: prototype: Load images in a gdkpixbuf to create an OpenGL texture 
        and display it.
    * DONE: creates directories (using boost::filesystem)
    * DONE: Use boost::program_options in a similar way to Toonloop 1.x.
    * DONE: Be able to choose the camera input, or the test source. We had to 
        detect the supported FPS by the camera.
    * DONE: Encapsulate the pipeline and the OpenGL rendering in a class.
    * DONE: Resize render area when window is resized.
    * DONE: Use GLEW to check for the OpenGL extensions needed to use shaders.
    * DONE: Save the images in the right directory, with unique names.
    * DONE: Save image files at snapshot time and play from disk. 

Bug fixes: 
    * 51:   Package Boost file_system with autotools 
    * 5:    Resizing the window should resize render area 
    * Memory leak when loading images.


Things done for Toonloop 1.2 (Python)
-------------------------------------

In this version, we aimed to improve the kiosk/perf mode.

 * DONE: fixed crash when camera changes its number before startup.
 * DONE: More effects : cinelike, convolution
 * DONE: Display name of the current effect + HUD. (toggled on/off) With GLUT.
 * DONE: Create the Toonplayer looping video player. (external app) See [[http://bitbucket.org/aalex/toonplayer|the toonplayer project page]].
 * DONE: remove some of the unused features. (RSS server, etc.)
 * DONE: Use the control key for shortcuts when it is more user friendly. See [[InterfaceDesign|the InterfaceDesign page]]
 * DONE: GTK error dialog in case of a critical error at startup.
 * DONE: Text: improve how the HUD text look
 * DONE beautify themes: 
     * DONE: drop the picture in picture themes
     * DONE: make one fullscreen playback theme


Things done for Toonloop 1.1 (Python)
-------------------------------------

In this version, we aimed for feature completeness. 

 * DONE: Able to add or delete frames anywhere in a clip.
 * DONE: Playback direction : forward, backward.
 * DONE: delete and add frames anywhere in a clip
 * DONE: Playback in YOYO mode. (back&forth)
 * DONE: Display a progress bar when saving a clip.
 * DONE: Shift-Q to quit, and not ESC anymore.
 * DONE: Added groups of options. One for each effect.
 * DONE: Unified interface to effects. 
 * DONE: Added simplechroma, lumakey, leavecolor and brcosa effects.
 * DONE: Background image is one taken using a special key stroke. 


Things done for Toonloop 1.0 beta (Python)
-------------------------------------------

 * DONE: Keying (OpenGL GLSL shader)
 * DONE: midi input (keyboard + foot switch) using pd
 * DONE: project name
 * DONE: background image for chroma keying shader
 * DONE: web and fudi disabled by default
 * DONE: Separate file types.
 * DONE: port numbers should be > 1024 (root)


Things done for Toonloop 1.0 alpha (Python)
-------------------------------------------

 * DONE: Using Python ! See http://tristanswork.blogspot.com/2008/12/live-animation-with-pygame-and.html
 * DONE: We use Python, twisted, pygame and OpenGL 
 * DONE: onion peal + Full screen in OpenGL
 * DONE: config CLI
 * DONE: save a clip  in threads, unique JPEG, as name.  (using config or osc) Increment sequence name. Sequences are now a series of clips.
 * DONE: different frame rate for capture=30 and playback=12 (refresh cam before adding frame)
 * DONE: intervalometer
 * DONE: convert to JPEG images and Motion-JPEG movie
 * DONE: RSS feed server, documentation on the web

