Overview of Changes in spectmorph-0.5.2:

* Support bpm/beat synchronization for LFO
  - new presets using beat sync LFO: Mars / Saturn
* Add WavSource custom position playback mode
* New Instruments: Sven Ah / Ih / Oh (another male human voice)
* Store data in XDG directories on Linux:
  - move ~/.spectmorph directory to $XDG_DATA_HOME/spectmorph
  - move ~/SpectMorph directory to $XDG_DOCUMENTS_DIR/SpectMorph
  - create $XDG_DOCUMENTS_DIR/SpectMorph directory when needed (on write)
  - backward compatibility: use ~/SpectMorph if it already exists
* Bump number of control inputs from 2 to 4
* Implemented midi CC control for smjack (General Purpose Controller 1..4)
* Fix crashes caused by dangling MorphOperator pointers
* Fix loading floating point wav files
* Minor fixes and cleanups

Overview of Changes in spectmorph-0.5.1:

* Add new LFO modes (saw, square, random)
* Support generic 64-bit linux binaries
  - new linux file selector (no longer needs Qt)
  - ship font for static build
* Fix crashes caused by fftw planner being used from multiple threads
* Ported all python2 code to python3
* Support midi all notes off
* Implement LV2 StateChanged
* French translation for smjack desktop file (Olivier Humbert)
* Thread race fix (JP Cimalando)
* Minor fixes and cleanups

Overview of Changes in spectmorph-0.5.0:

* Support user defined instruments
  - graphical instrument editor
  - new WavSource operator
* Make standard instrument set smaller (less download/disk usage)
* Graphical ADSR editor
* Added "SpectMorph User Manual" (online: html/pdf)
* Use different colors for active/used/unused operators
* LV2 now requires instance access feature
* Add file dialog wrapper shell scripts to work with some ardour bundles
* Integrate XML (pugixml) and ZIP (minizip) 3rd party code
* Minor fixes and cleanups

Overview of Changes in spectmorph-0.4.1:

* macOS is now supported: provide VST plugin for macOS >= 10.9
* Include instruments in source tarball and packages
* Install instruments to system-wide location
* New Instruments: Claudia Ah / Ih / Oh (female version of human voice)
* Improved tools for instrument building
  - support displaying tuning in sminspector
  - implement "smooth-tune" command for reducing vibrato from recordings
  - minor encoder fixes/cleanups
  - smlive now supports enable/disable noise
* VST plugin: fix automation in Cubase (define "effCanBeAutomated")
* UI: use Source A / Source B instead of Left Source / Right Source
* UI: update db label properly on grid instrument selection change
* Avoid exporting symbols that don't belong to the SpectMorph namespace
* Fix some LV2 ttl problems
* Fix locale related problems when using atof()
* Minor fixes and cleanups

Overview of Changes in spectmorph-0.4.0:

* Windows is now supported: provide 64-bit Windows VST plugin
* Plugin UI redesign
  - use pugl library for portability (uses GL + cairo) instead of Qt5
  - use categories for instruments
  - directly support instrument names in linear morphing
  - get rid of Qt5 dependency for libspectmorph, smjack, VST and LV2 plugins
  - UI now has "Zoom" feature to support higher DPI displays
* Use non-linear configurable new velocity -> volume mapping for midi
* New instrument: French Horn
* Improved tools for building custom instruments
  - tools are now installed by default
  - sminstbuilder files support new syntax for relative paths
  - encoder cache moved to ~/.cache/smenccache, which is created if necessary
  - use number of processors as default for jobs
* LPC/LSF support removed
* Some portability fixes for macOS (which however isn't supported yet)

Overview of Changes in spectmorph-0.3.4:

* Added optional ADSR Envelope
* Make LV2 and VST plugin stereo to allow supporting stereo in the future
* LV2 plugin description fixes
* Added about dialog to plugin/smjack UI
* Remove BEAST plugin (plugin code will be moved to BEAST)
* Fixed compilation for newer g++ >= 6 (std::fabs)
* Get rid of some malloc() calls in linear morphing

Overview of Changes in spectmorph-0.3.3:

* Added portamento:
  - VST: support MPE to perform per-voice pitch bend (can be used in Bitwig)
  - new portamento mono mode (all hosts)
* Added vibrato.
* Internal improvements:
  - better property abstraction for (non-linear) UI properties
  - updated polyphase interpolator (used for vibrato|portamento)
  - fixed a few problems when developing against spectmorph(ui) libs
  - don't link against Qt UI library when only QtCore is necessary
* Compile fixes for g++-6.3

Overview of Changes in spectmorph-0.3.2:

* Added new unison effect.
* New instruments: pan-flute, synth-saw.
* UI improvements:
  - support operator folding (to preserve screen space)
  - provide scrollbar if morph plan window height is large
  - repair operator move
* VST plugin crash fixed.
* No longer depend on BEAST/Rapicorn
  - use libsndfile for sound file I/O, added WavData API
  - refactoring, move libnobse code into SpectMorph
* Add icon/.desktop file for smjack
* Added debian package support.
* LPC/LSF morphing code updates - but now disabled by default

Overview of Changes in spectmorph-0.3.1:

* Added plugins for LV2 and VST api.
* New instruments: bassoon, cello, bass-trombone, reed-organ.
* Added different templates to get standard morph plans quickly.
* LV2|VST|JACK will start with default plan now (instead of empty plan).
* Standard instrument set location (~/.spectmorph/instruments/standard):
  - plan templates can refer to instruments in that directory without
    storing any absolute path (index will be instruments:standard)
  - in almost any case, loading instruments isn't necessary anymore
* Resize MorphPlanWindow automatically if operators are removed.
* Changed time alignment during morphing:
  - morphed sounds should starty at the beginning of the note (no extra latency)
  - Start marker for instrument notes no longer necessary
  - SpectMorphDelay plugin no longer necessary
* Some improvements for building new instruments:
  - make some smenc parameters configurable (--config option)
  - improvements to soundfont import
  - new fundamental frequency estimation for tune-all-frames
  - support global volume adjustment (instead of auto-volume)
* Various bugfixes.

Overview of Changes in spectmorph-0.3.0:

* Incompatible file format changes:
  - use 16-bit integer values for sine and noise data instead of floats
    to reduce file size on disk and in memory
  - introduce short_name & name field for instruments
  - changed the way noise is represented from total band energy to
    normalized noise level
* Use Qt5 for the GUI, instead of gtkmm.
* Added Grid Morph operator: allows morphing between more than two sources.
* Adapted code to work with newer beast (0.10.0) and rapicorn (0.16.0).
* Improved tests.
* Various bugfixes.
* Performance improvements.

Overview of Changes in spectmorph-0.2.0:

* implemented user defined morphing using a MorphPlan consisting of operators
  - graphical representation of the operators
  - graphical editing of the MorphPlan
  - implement actual morphing (in per-operator per-voice module object)
  - added MorphPlanSynth/MorphPlanVoice, which allow running MorphPlan's easily
  - added LPC (linear prediction) during encoding, and LPC/LSF based morphing
* BEAST plugin:
  - added GUI required for editing a MorphPlan
  - support four output channels, as well as twc control inputs
  - delay compensation plugin (to compensate SpectMorph delay)
* JACK client:
  - support GUI MorphPlan editing
* added sminspector (graphical tool for displaying SpectMorph instruments)
  - zoomable time/frequency view
  - configurable (FFT/CWT/LPC) time/frequency view transform parameters
  - spectrum, sample, LPC visualization
  - graphical loop point editing
  - allow storing changes in .smset files (for editing loop points)
  - play support via JACK
* improved smtool (old name: smextract); its now installed by default
  - lots of new commands (like "total-noise", "auto-volume", ...)
  - support .smset as input (in addition to .sm); command is executed on all
    .sm files in the .smset
* added shared libraries for gui and jack code
* new integrated memory leak debugger (to find missing delete's)
* support ping-pong loops
* doxygen API docs updates
* migrated man pages from Doxer to testbit.eu wiki (and use wikihtml2man.py)
* performance improvements

Overview of Changes in spectmorph-0.1.1:

* added tool for SoundFont (SF2) import: smsfimport
* file format changes
  - allow time index based loops (required for looped SoundFont presets)
  - allow stereo (multichannel) files in WavSets
  - store phase and magnitude seperately (instead of a sin+cos magnitude)
  - support multiple velocity layers
  - allow storing the original sample data for quality comparisions
  - optimize storage size for smset files if the same Audio file is reused more
    than once
* switch to 32 values for 32 perceptually spaced noise bands, instead of the old
  noise representation
* handle stereo (multichannel) files in smenc, smjack and beast plugin
* performance optimizations
  - LiveDecoder is now really fast, and can handle highly polyphonic synthesis in RT
  - sine synthesis is based on IFFT now
  - noise synthesis is a lot faster, too
  - where possible, use SSE operations in performance critical code
  - use FFTW for FFT, which is faster than gslfft
  - added fast float->int conversion on x86
  - smjack is a lot faster, now
* removed smenc -O2 setting, which was too slow for practical use
* introduced anti-alias filter in LiveDecoder
* cleanups, refactoring, bugfixes

Overview of Changes in spectmorph-0.1.0:

* file format changes
  - instruments based on more than one sample can be shipped as one single file
  - various performance optimizations
  - store data as little endian (since this is more likely to be the host endianness)
  - broken files or old files can be recognized and rejected
* automated tuning algorithm (smextract auto-tune)
* supported looping (for playing notes that is longer than original sample)
* added beast plugin for playing SpectMorph instruments
* added jack client for playing SpectMorph instruments
* added zero padding before start of a sample to get better initial frames
* compile with -Wall
* allow single file argument for smenc (output filename will be constructed with .sm extension)
* support setting smplay decoder mode via command line parameter
* refactoring, cleanups

Overview of Changes in spectmorph-0.0.3:

* added encoder algorithm to find attack envelope, this makes piano sound much
  more realistic
* introduced smwavset tool, which allows managing instruments consisting of
  many samples
  - encoding/decoding a set of samples
  - delta operation for comparing errors of sets of samples
* smextract can now provide an overview of how many bytes in an .sm file can be
  attributed to which fields
* documentation updates
* refactoring, cleanups

Overview of Changes in spectmorph-0.0.2:

* bugfixes
* include proper phases, so phase-correct reconstruction of samples is possible
* new programs:
  - smstrip     - removes debugging information from SpectMorph model files
  - smextract   - extracts data from SpectMorph models, for developers only for now
* added --no-noise / --no-sines switches for smplay
* added -s switch for smenc, to create stripped models
* use boost numeric bindings + lapack for ideal phase/magnitude estimation (smenc -O2) - slow!
* SSE optimizations and other speedups for fast phase/magnitude estimation (smenc -O1)
* use odd/centered FFT to be able to reconstruct phases from FFT data  (smenc -O0)
* use different thresholding scheme for encoder, detecting more partials
* document API with doxygen
* move Encoder and other classes to libspectmorph
* added python binding, capable of reading SpectMorph model files
* added automated tests
* added manual pages for smenc, smplay, smvisualize and smstrip
* added overview document in docs directory

Overview of Changes in spectmorph-0.0.1:

* initial public release with three programs
  - smenc       - builds model of a sample
  - smplay      - resynthesizes sample from model
  - smvisualize - visualizes model
