Version 0.9.20
==============
Release date: September 8th 2022
Contributors: chaot4, corrados, trebmuh, deva

This release was originally intended as a bugfix release, but quite a few
features also managed to find their way in.

Noteworthy bugs that has been fixed:
 - Software regression error in cymbal choke code has been fixed. So now
   choking of cymbals using both directed chokes and after-touch midi
   events work again as expected.
 - A compilation error due to an update in LV2 API (we used an
   obsolete LV2 type) has been fixed, so now compilation should work for
   everybody again.
 - Code can now properly be compiled with NSL support disabled at
   configure time.
 - Compilation with the modern gcc-11 compiler has been fixed.

On top of this a lot of crash-bugs has been fixed.

Thanks to corrados, this version adds support for midi input through
the alsa seq driver for the command line version of drumgizmo. So now
drumgizmo can be run from the commandline entirely without the need
for jack.

Compilation Bugs:
 - Fix compilation with gcc-11
 - Fix compilation issue when compiling without nls enabled.
 - Remove sndfile.h from audiofile header
 - Fix missing backslash in libdg includepaths
 - Fix compiler warning.
 - Add missing include
 - Make configure fail if nls is enabled but gettext tools not found.

Crash Bugs:
  - Fix crash when loading a kit with more channels than the engine
    was compiled for.
  - Fix crash when loading Crocell kit in ardour (stack allocation
    issue) - see Ardour bug report.
    - Get rid of big stack allocation during resampler (re-)configuration.
  - Prevent processing jack clients that are being deleted.
  - Fix crash when pressing play while loading a drumkit.
    - Skip events whose audio-files has not yet been loaded.
  - Fix crash when doing async-load in cli.

Other Bugs:
 - Fixed directed-chokes regression error.
 - Fix after-touch chokes regression error.
 - Fix wrong sample selection with instruments having only two samples.
 - Make aftertouch choke if velocities > 0 instead of == 0 as this
   seem to be the vdrum vendor concensus.
 - Clear all active events (ie. stop playing samples) when loading a new kit.
 - Fix ALSA output frame size change.
   - added getBufferSize function for alsa out

Features:
 - Record and measure real cymbal choke-time and use this value
   instead of the current 68ms.
   - Adjust choke ramp-down time to better reflect the actual
     dampening time of a hand-dampened cymbal.
 - Add support for triggering multiple instruments with one midi note.
 - Add voice-limit parameters to cli
 - Add setting for controlling ALSA periods to output module.
 - Add ALSA MIDI seq input support

Other:
 - Add unit-test for EventsDS::clear() method.
 - Add clear member function to EventsDS.
 - Add assert to break infinite loop in case of a bug.
 - Add -Wextra to debug compilation flags.
 - Make it possible to (only) build unit-test in parrallel.
 - Add dggui namespace to libdggui components.
 - Split UI code into application/plugin UI and UI library.
 - Run and fix unit-tests on windows.
 - Make rcgen compile and work on windows again through autotools.
 - Improve cocoa/macOS rendering speed by removing redraw on all events.
 - Reduce UI window height to fit on low-res displays.

Version 0.9.19
==============
Release date: November 22nd 2020
Contributors: chaot4, TheMarlboroMan, trebmuh, deva

This release is a feature release with some rather interesting new
features in it:

Highlights:
 - Default midimaps now read from drumkit file so no explicit loading of
   midimap are needed for kits that provide these.
 - Add OSX retina display UI scaling.
 - Sample selection default values improved
 - UI rendering speed improvements
 - New powermap feature, to make it easier to get a good natural feeling
   when playing a midi-drumkit.
 - Improved dgvalidater tool to include a lot more validation checks.
 - Add gettext support to plugin UI with French translation.
 - Per instrument voice limit feature to enable playing very fast with low
   latency without the engine dropping out.
 - Resampling quality (and thereby cpu usage) can now be controlled.

Bugs:
 - Choke handling fixed.
 - Fix flickering of lv2 inline displays while loading.
 - Fix LV2UI_Descriptor type error when using "new" LV2 sources.
 - Fix clickmaps not aligning correctly with drumkit images in the drumkit
   tab, when image is bigger than window.
 - Notes with velocity 0 is now ignored.
 - Default drumkitpath is now correctly stored on windows.
 - Fixed crash in jack engine (command-line) when system is under load.

For a more in depth description of the changes and fixes, see the
changelog for 0.9.19:
 https://drumgizmo.org/wiki/doku.php?id=changelog:drumgizmo-0.9.19

Version 0.9.18.1-hotfix
======================
Release date: October 23rd 2019
Contributors: deva

- Fixed bug in the file browser which could not be navigated if the
  default kit path were not set or pointing to an invalid path.

Special thanks to 2Late and Jason N. for reporting and helping debugging
the problem.

Version 0.9.18
==============
Release date: October 15th 2019
Contributors: chaot4, meka, deva

This release is primarily a bugfix release but a few new features also
managed to sneak in.

Highlights:
 - Sample selection algorithm now behaves a lot better when using a small
   sample set.
 - Error reporting has been drastically improved when loading drum-kits.
 - Sample normalization option has been added.

Also some bug fixes, mainly for the UI.

For a more in depth description of the changes and fixes, see the
changelog for 0.9.18:
 https://drumgizmo.org/wiki/doku.php?id=changelog:drumgizmo-0.9.18

Version 0.9.17
==============
Release date: July 15th 2019
Contributors: deva, chaot4, suhr, trebmuh

In this release we tried to jam in as many of our planned changes to the
xml as possible. There are still a few more to go but this release has
brought us a large step closer to our feature-complete xml format. Quite a
few other major features has also found their way into this release, which
will be much more visible (and audible) to the users.

Highlights:
 - Improved sample selection algorithm.
 - Clicky-kit feature.
 - Midnam support.
 - Directed choke functionality.
 - Drumkit metadata support.
 - Experimental Cocoa UI support for MacOSX.

Also some bug fixes and a lot of code refactoring (replaced eXpat with
pugixml for one).

For a detailed description of all the new shiny features, including
audio samples and lots of screenshots, see the changelog for 0.9.17:
 https://drumgizmo.org/wiki/doku.php?id=changelog:drumgizmo-0.9.17

Version 0.9.16
==============
Release date: August 12th 2018
Contributors: deva, chaot4, suhr, trebmuh

Resampler has been refactored.
It now depends strictly on zita-resampler and is no longer optional.

Bugfixes:
 - Fix latency reporting in VST.
 - Fix timing humanizer stops normal cymbal samples too early.
 - Samples are cut off when looping.
 - LV2: Don't export any symbols except the plugin entry point to avoid clashes with the DAW or other plugins.
 - VST: Don't export any symbols except the plugin entry point to avoid clashes with the DAW or other plugins.
 - Report latency from resampling.
 - Fix LV2 Buffer overflow.
 - Add message to execution of CLI without arguments that mentions that the GUI is only supported in the plugins.
 - Update French translation of manpage.
 - Fix crash or noise when changing jack buffersize while running.
 - Stuttering when resampling is active.

Version 0.9.15
==============
Release date: July 24th 2018
Contributors: deva, chaot4, meka, suhr, Muldjord, cglocke, Roman Garifullin, James Cowgill

New engine features:
 - New humanized timing feature.
 - Master bleed control.
 - Remove memory warning.
 - Replaced cppunit with new dgunit header-only test framework.

New CLI features:
 - OSS midi input support.
 - Finish and integrate getoptpp as a submodule.

UI:
 - Double click knobs to reset them to their default value.
 - Ignore spacebar key in UI (used by DAW and toggled the buttons).
 - Add cute little image in the inline display.

Bugfixes:
 - Fix X11 BadValue crash bug.
 - Fix black render when opened as LV2 on Ardour and FreeBSD.
 - Fix UI crash on underflow in resize()
 - Fix valgrind errors of GUI.
 - Fix crash if CLI is invoked without input and/or output engine. (deva)
 - Fix out of bounds drawing of frame (chaot4)

Version 0.9.14
==============
Note: LAC2017 release
Release date: May 14th 2017
Contributors: deva, chaot4, Muldjord, meka, Hans Petter Selasky
Special extra thanks with a cherry on top: Robin Gareus

Features:
 - Introduced new resampler module in ui

Bugfixes:
 - CLI
   - CLI exits right away, doesn't do anything
   - Make ''-i midifile -I midimap=~/...'' recognize the home directory. Replace "~" by the home directory in ./drumgizmo/input/midifile.cc
   - Properly get/set OSS buffers
   - Add ---no-resampling option

 - Engine
   - Fix midi note on/off mask
   - Streamer BUG: If there is a cache miss on one of the audiofiles (1 channel) in a sample that one sample will get delayed compared to the others
   - Streamer BUG: When nodata buffer is being reallocated we need to make sure that the old buffer is not being used by one of the cache ids
   - Resampler BUG: Fix corruption/crash when enabling/disabling resampler at run-time
   - Update Window build environment to a more recent mingw64
   - Remove obsolete old mingw32 thread hacks
   - Introduce clear signal, showing if we had an underrun because of diskstreaming
   - Fix crash on with low preload size
   - Initial status of drumkit is "Error" on first opening the plugin

 - UI
   - Scroll-wheel on tab buttons should iterate through the tabs
   - Refactor TextEdit. (use vector in preprocessing etc.)
   - Fix "unexpected easter egg"
   - Fix high CPU load of plugingui when shown in a host (All platforms/DAWs)
   - Return handle to the newly created window in ''PluginLV2::uiInstantiate'' in the ''widget'' pointer
   - Add bypass button for the resampler
   - Fix redraw on changing desktops

 - General
   - Don't put .a and .la files in lv2 folder on install

Version 0.9.13
==============
Release date: April 23rd 2017
Contributors: deva, chaot4, Muldjord, meka

Highlighted changes / fixes:
 - New ui
 - Diskstreaming
 - OSS support

All changes / fixes:
 - Fixed rcgen compilation with BSD make
 - Made ui and engine compile as internal libs instead of compiling all sources in each component
 - Implemented settings for controlling diskstreaming
 - Complete gui makeover
 - Made changes to UI to incorporate diskstreaming controls
   - Now generates resources at compile-time
   - Made window resize flicker-free on X11
   - Fixed missing redraw on resize event on X11
   - Now uses XShmImage for rendering on X11
   - Refactored event system on X11 and Win32
   - Now supports size and position changes in the same event on X11
   - New rendering system based on ''dirty'' flag
   - Added "partial rendering" support in rendering system
   - Fixed double click
   - Scroll-wheel inside textareas now works
 - Made diskstreaming controls work in the engine
   - Made DrumKitLoader use disk streaming settings
   - Fixed crash or channel overload on stop/start command or loop due to invalid pointer returned to the engine from the diskstreamer
   - Made AudioCache use configurable fixed size chunks
   - Stores memory limit and chunk size in config as ints instead of floats
 - Made cli support for disk cache controls
   - ''-s'' and ''-S'' enables diskstreaming and set its parameters
   - Updated man page
   - Changed onsite info for cli
   - Added FreeBSD OSS audio output support
   - Added buffer size control for OSS audio output module
 - Fixed the dgreftest for aasimonster2
 - Added dependency check for rcgen so resource_data.cc is regenerated whenever one of the resource png files change


Version 0.9.12
==============
Release date: January 18th 2017
Contributors: deva, chaot4, Muldjord, meka
 - Fix semaphore EINT assertion in MusE
 - Fix atomic link check - always link with atomic
 - Draw boxes instead of nothing when trying to render characters not in the
   font map
 - Extend character map to include full latin1 character set
 - Added full support for FreeBSD
 - Fix missing "mouse-up" events when runnnig lv2 plugin on linux in a JUCE
   based host (Helio or Tracktion)
 - Added missing ttl as per: https://github.com/falkTX/Carla/issues/412
 - Algorithmically generate the test .wav files to be able to run the tests
   also with the tarball
 - Add --lv2dir parameter to configure

Version 0.9.11
==============
Release date: October 29th 2016
Contributors: deva, cglocke, chaot4, Jin^Eld
 - Unicode crash bug fixed
 - lv2 inline display
 - Fixed problems when running more than one instance of DrumGizmo plugin in
   the same host

Special thanks to 'Maxim Alexandrovich (Ljutingr)' for helping debugging the
unicode problem.

Version 0.9.10
==============
Release date: March 30th 2016
Contributors: deva, suhr
 - Fix the 'no sound from plugin when resampler active' bug.
 - Fix the 'freeze on tempo change' bug.
 - Fix backspace in lineedits.

Version 0.9.9
=============
Release date: March 24th 2016
Contributors: cglocke, chaot4, deva, muldjord, suhr, viccuad

Highlighted changes / fixes:
 - Switch to LGPLv3
 - Linux VST
 - Embedded UI
 - Prepped for diskstreaming (but not yet implemented in UI)
 - Load of bug fixes

All changes / fixes:
 - Remove unused libraries
 - Headers are currently a mix and gpl2 and gpl3. Should be fixed

 - UI refactor
   - Move textedit widget to refactor branch
   - Move autolayout to refactor branch
   - Use new notifier and refactor to new code guidelines:
     - LineEdit fixes:
       - Follow marker
       - Scroll with long line and cursor in beginning of line
   - Update Linux build agents so they support C++11

 - Refactor CLI
   - Rewrite all modules to be compiled directly into the binary
   - Modernise all cli files

 - Add diskstreaming feature with infinite buffer size:
   - Test on windows
   - Make sure on-the-fly framesize change is working
   - Set pre-cache size to "infinite"
   - Make std::mutex work with mingw
   - Make unit tests:
     - AudioCacheIDManager
     - AudioCacheFile
     - AudioCacheEventHandler
     - AudioCache
   - Design and implement AudioCache
   - Use AudioCache in inner-loop
   - Get framesize dynamically from output engine
   - Handle snd files with refcounter
   - Collapse events from same file and position into single multichannel event
   - Make sure free-wheel-mode works in jack, lv2 and vst

 - Add referenced drumkit/midi files feature
 - Remove version number from man page

 - Make benchmark performance comparisons with the "old" engine
 - Add a valgrind test script
 - Fix some problems reported by valgrind

 - Add memory check to warn the user if the drumkit about to be loaded cannot fit into memory

 - LV2/VST: Make UI event handling based on idle/run calls from the plugin host instead of in a thread
 - Port "The Aasimonster" to new velocity format

Version 0.9.8.1-hotfix
======================
Released March 16th 2015
 - Fixed bug where resampling resulted in sample skewing over the output channels

Version 0.9.8
=============
Released February 22nd 2015
 - Fix deprecated autoconf/automake macros. (Nils Tonnätt)
 - Update LV2 plugin to use new URID extension (http://lv2plug.in/ns/ext/urid/). (deva)
 - Fix state store so it does not store terminating zero in config xml. (deva)
 - "No sound" bug in resampler code. See: http://drumgizmo.org/irc-logs/drumgizmo.log.11Jan2015
 - Make cli wait for drumkit to finish loading before starting the engine. (Jin^eLD)
 - Make cli TYPE_STOP event wait until active events is empty. (deva)
 - Add basic man page. (Nils Tonnätt)
 - Reflect input/output parms in cli help text. (suhr)
 - Reflect input/output parms in cli man page. (muldjord)
 - Make resampler depend directly on zita-resampler and make libsamplerate an active opt-in. (suhr)
 - Include test directory in dist. (suhr)
 - Don't AC_SUBST zita libs and cflags if not used/detected by configure. (suhr)
 - Make all use of atof and sprintf("%f") locale independent. (deva)
 - Fix crash after rendering midi file to wav files via DG cli. (deva)
 - Remove wavfile.la in output dir. (deva)
 - Replace obsolete cli -p argument (preload) with -a (async-load) argument. (deva)

Version 0.9.7
=============
Released December 7th 2014
 - Resampling on channel output to match system. (in 'resample' branch) (deva)
   - Zita on windows, configure lib detection
   - Add missing resampler unit test files.
   - Make resample work on VST.
 - Fix LV2 UI crash on open. (deva)
 - Global config file. (suhr)
 - Remember last browse path. (suhr)
 - Don't show hidden folder in file browser. (suhr)
 - Lineedit follow marker. (suhr)
   - LineEdit, scroll when in end on line and arrow right typed.
   - Remove printf and uncommented code

Version 0.9.6
=============
Released September 9th 2014
 - Editor split out into own project. (deva,suhr)
 - Integrate VST build into autotools. (deva)
 - Make 64bit VST binary. (deva)
 - Accept loading the same kit twice. (deva)
 - Reduce probability of playing the same sample twice in a row. (deva)
 - Normalise velocity range (was 0 to hardest sample, now is weakest sample to hardest sample). (deva)
 - Make sure loading a new kit after another works properly. (muldjord)

Version 0.9.5
=============
Released April 27th 2014
 - Editor changes:
   - Add stroke power attribute to drumkit xml format. (suhr)
   - Realtime update of waveform view when dragging fadeout slider. (deva)
   - Export energy levels to .xml file. (deva)
   - Clicking hit circles in velocity view selects corresponding in waveform view. (deva)
   - After selecting a hit by clicking a circle, allow direct deletion using "delete" kbd key. (deva)
   - Make hits in velocity view dragable. (deva)
   - Marked selection (ie. its values) is shown as lineedits in "edit" tab, changable by-value. (deva)
   - Enable multichannel export both for .wav and for .xml. (deva)
   - Turn volume slider into actual mixer fader instead of sample multiplier. (suhr)
   - Create filebrowser for selecting export path. (suhr)
   - Create main config file for saving and loading current values. (suhr)
   - Make player use fadein/out while playing (controllable through checkbox somewhere?) (deva)
 - Make engine use version number in order to select velocity algorithms and remove --with-experimental configure parameter. (deva)
 - Use Atom lv2 midi events. (suhr)
 - Make jack backend work on all buffer sizes. (deva)

Version 0.9.4
==============
Released March 5th 2014
 - Add multichannel sample support. (John Hammen)
 - Write README, ChangeLog and AUTHORS files. (deva)
 - Delete old partially broken unit test system. (deva)
 - Fix double click on toggle button to not leave the button in its middle state. (deva)
 - Make plugin gui window fixed in size. (deva)
 - Fix lineedit mouseclick to the right of the text, which should position text cursor to the right of the text. (unassigned)
 - Handle sse optimisation toggling in configure.in. (suhr)
 - Fix memory leak in Image class (png structure currently not free'd). (deva)
 - Improve FileBrowser functionality. (suhr)
 -   If filename lineedit is empty and the other one is not, use the non/empty lineedit path initially when opening filebrowser. (deva)
 -   Make it possible to type a path and have the browser switch accordingly. (suhr)
 -   Sort list by directories first and files next. (suhr)
 -   Filter out non-drumkit files. (suhr)
 -   Identify folders by appending '/' to their names. (suhr)
 -   Remove double '\\' after drive letter in filebrowser on Windows. (suhr)
 -   Test new filebrowser on Windows. (suhr)
 -   Handle directory that can not be opened. (suhr)
 -   Scrollbar is drawed wrong when few elements in list. (deva)
 - Refactor GUI::EventHandler. (deva)
 - Make Carla store plugin setting. (deva)
 - Make it work in QTractor. (deva)
 - Add jackaudio output module. (deva)
 - Support multiple samplerates by resampling at load-time (feature request from Cédric 'SxDx'). (deva)
 - Modernise autoconf. (deva)
 - Add new unit test system. (deva)
 - Find and fix LV2 midi velocities magically disappearing. (suhr) We can't reproduce this. Please contact us if you have this problem.

Version 0.9.3
==============
Released on May 7th 2013, ie. LAC 2013 version
 - Make filebrowser use strings instead of chdir. (suhr)
 - Set "Creator" in the LV2 config. (deva)
 - Prevent mouse button up events from propagating after a double click if the window if closed. (deva)
 - libpng error handling (especially ubuntu libpng version mismatch vs. ardour, 12.49 vs. 1.6). (deva)
 - Optimise GUI rendering so that it doesn't feel sluggish to work with. (deva)
 - Fix bug, where the plugin starts using 100% cpu even with no notes playing. (deva)
 - Make midifile load send load status to GUI. (deva)
 - Make DrumKitLoader stop loading on plugin deletion and if a new drumkit is being loaded. (deva)
 - Make listview scrollbar knob work. (deva)
 - Make "give me all parameter value" message with engine respons for GUI initialisation. (deva)
 - Make humaniser parameters value set/get work using messages. (deva)
 - Create GUI::ProgressBar class for use in load feedback. (deva)
 - Implement engine -> GUI signaling mechanism (for load status, etc). (deva)
 - Implement GUI -> engine signaling mechanism (reload drumkit, read parameter, etc). (deva)
 - Make layout engine classes (Painter::Box/Painter::Bar). (deva)
 - Refactor GUI::Font. (deva)
 - Design and render as png-pixmaps new fonts. (muldjord)
 - Design new layout widgets. (muldjord)
   * Pushbutton
   * Knob
   * On/off switch
   * Lineedit
   * Combobox
   * Item view with scrollbars
 - Implement new layout as a new layout engine. (deva)
 - Create PNG loader. (deva)
 - Make GUI::Image class able to use libpng 1.2. (nemo)
 - Create RC handler (embed PNG images and fonts directly in the binary). (deva)
 - Make 'instrument group' feature that can stop an open hihat, when a closed hihat is played. (deva)
 - Check for x11 lib and headers in configure. (deva)

Version 0.9.2 and older (prehistoric)
=====================================
Released on March 25th 2013.
 - Make autotools project.
 - Make event interface.
 - Make midi-node -> sample mapping.
 - Make drumkit xml file format spec.
 - Make xml reader/parser.
 - Make alternative audio backends work
   * ALSA (output)
   * ALSA Midi (input)
   * Jack (output)
   * JackMidi (input)
   * SndFile (output)
   * Midifile (input)
 - Make Win32 port.
 - Make plugin-able
   * LV2
   * VST
 - Make basic drumkit editor.
