SpectMorph 1.0.0-beta1 has been released.
The main changes are:
- WavSource: added formant preserving algorithms for repitching vocals
- KeyTrack: new operator to combine instruments by note range
- Envelope: new operator to generate arbitrary modulation envelopes
- LFO: support arbitrary user defined curves
There is a tutorial on YouTube for the new features:
-
https://www.youtube.com/embed/mwVUsuOTcN0
Feedback for any issues you might experience with the beta version is
appreciated.
What is SpectMorph?
-------------------
SpectMorph is a free software project which allows to analyze samples of
musical instruments, and to combine them (morphing). It can be used to
construct hybrid sounds, for instance a sound between a trumpet and a
flute; or smooth transitions, for instance a sound that starts as a
trumpet and then gradually changes to a flute.
SpectMorph ships with many ready-to-use instruments which can be
combined using morphing.
SpectMorph is implemented in C++ and licensed under the GNU LGPL version
2.1 or later
Integrating SpectMorph into your Work
-------------------------------------
SpectMorph is currently available for Linux, Windows and macOS (Intel
and Apple Silicon), with CLAP/LV2/VST plugins. Under Linux, there is
also JACK Support.
Links:
------
Website:
https://www.spectmorph.org
Download:
https://www.spectmorph.org/downloads
There are many audio demos on the website, which demonstrate morphing
between instruments.
List of Changes in SpectMorph 1.0.0-beta1:
------------------------------------------
#### New Features
* WavSource: support two formant preserving algorithms for repitching
vocals.
* New operators:
- KeyTrack - can be used to combine instruments by note range.
- Envelope - to generate arbitary modulation envelopes.
* User defined curve editor for KeyTrack, Envelope and LFO.
* Add presets using the new operators:
- KeyTrack Choir Ah/Oh
- StringBrass Fusion
* JACK CC values are now interpreted per channel (allows polyphonic
modulation).
* Support double click to reset properties to default value.
#### Fixes
* Apply midi channel bend to new voices.
* Make portamento affect filter cutoff key tracking.
* Fix problems with WavSource paths stored by LV2 plugin (make Ardour
archives work).
* Fix getting the initial click events / focus plugin UI on macOS under
Bitwig.
* Fix invalid access to past last vector element (#24).
* Make PandaResampler work without problems in ASAN builds.
* Refactor leak debugger to fix possible crashes caused by global
destructors.
* Do not ship sample data in "1 Instrument WavSource" preset.
#### Internals: Improvements
* Generate and store spectral envelopes in each AudioBlock for formant
correction.
* Improve the strategy for portamento synthesis (more accurate and less
CPU usage).
* Propagate portamento frequency to sources.
* Randomize start phase per default to improve "Harmonic Resynthesis"
quality.
* JACK: use two audio outputs to be able to implement stereo support
later on.
* Add fast vectorizable log2 approximation (based on Tims version from
Anklang).
* Phases in LiveDecoder, IFFTSynth: change from float to uint for
performance reasons.
* Various minor performance optimizations.
* Minor LV2 meta data updates (port groups, avoid port resizing extension).
* Use newer compilers: g++-14 for windows, g++-13 for static linux plugins.
* Support automatically downloading instruments from configure.
* Avoid using std::mutex in hard RT code.
#### Internals: Minor Changes
* Refactoring:
- Deduplicate morphing code from MorphGrid and MorphLinear.
- Use shared pointers for GenericIn/GenericOut classes (RAII).
- Get rid of `sm_clamp` / `sm_bound` (-> std::clamp).
* Improve CI support (use debug-cxx, asan, ubsan, test static build,
avoid fftw planning).
* Add post install test which tests audio output for all presets after
installation.
* Validate LV2 feature arrays.
* Support user defined scripts in testmidisynth test.
* Improve error messages for preset loader.
* Build cleanups: remove libbse code, simplify Qt build (remove
smsampleedit).
* Update CLAP version to 1.2.1.
--
Stefan Westerfeld,
http://space.twc.de/~stefan