The NEWS file (from the spectmorph source tree) contains the list of changes
for each release.
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
* switch to 32 values for 32 perceptually spaced noise bands, instead of the old
* 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
* introduced smwavset tool, which allows managing instruments consisting of
- 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:
* 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