See the RELEASE file for the latest new features and bug fixes.
See the ChangeLog file for a log of previous releases informations.


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

