Releases: swesterfeld/spectmorph
Releases · swesterfeld/spectmorph
SpectMorph 1.0.0-beta2
SpectMorph 1.0.0 beta2
Updates for macOS
- Plugin user interface now works correctly on macOS 14 (#28).
- Update clang++ compiler version on macOS.
- Minimum supported macOS version is now macOS 11.
SpectMorph 1.0.0-beta1
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.
SpectMorph 0.6.1
SpectMorph 0.6.1
Instrument Editor
- Support click & drag sample to scroll & zoom (#22).
- Support stereo to mono conversion when loading stereo samples (#14).
- Add manual volume editing / normalization.
- Implement automatic selection triggered by midi.
New instruments
- Bass Flute
- Soprano Saxophone
- Clarinet, Bass Clarinet
- Tenor Trombone
- Viola, Double Bass
- Make samples and meta information for standard instruments available on github.
Improvements
- Support multiple banks for WavSources / instrument editor.
- Avoid allocations in DSP thread to be hard RT capable.
- Allow overriding analysis parameter for frame stepping to get higher time resolution.
Fixes
- Make UI work properly in Ableton Live (and possibly other hosts) on macOS.
- Fix UI scaling problem on M1 macOS builds.
- Fix crash if instrument editor is closed without any samples.
- Fix cases of undefined behaviour.
- Fix timing problems for long notes, reproduce long WavSource notes with exact tempo.
- Fix use-after-free for outdated control events.
- Fix freetype related memory leak.
SpectMorph 0.6.0
New features
- New, more flexible modulation system
- Added filter with different filter modes
- Provide visual feedback for modulated properties
- Provide signed .pkg installers for macOS (Intel and ARM)
CLAP Plugin
- Provide CLAP Plugin
- Support for per-voice modulation
- Support timestamped modulation/automation events
LV2 Plugin
- Support LV2 on all platforms
- Fix crashes triggered by Carla (absolute_path/abstract_path returning NULL)
- Support newer LV2 development headers
Minor Changes
- Support "Velocity" as modulation source
- Make pitch bend range configurable
- New Presets with filter: "Cheese Cake Bass", "Liquid Silver"
- Sort midi events by timestamp to workaround Bitwig bug
- Sliders now support shift+drag for fine editing
- Support for Apple Silicon
- Avoid crashes if XOpenIM / XCreateIC return NULL (#15).
- Fix statically linked plugin data directory location (works in flatpak apps now).
- Add dockerized MXE builds for windows, bump compiler version to gcc-12.
- Bump minimum C++ standard to C++17
- Fix build on RISC-V (#13)
- Use GitHub CI for Linux, macOS and Windows
- Change license from "LGPL v3 or later" to "LGPL v2.1 or later".
- Minor fixes and cleanups
Internals: Properties
- Add generic property handling
- Simplify load/save/gui for properties
- Support modulatable properties using ModulationList
- Add gui for editing property value and ModulationList
- MorphPlan is no longer ref-counted, just one instance per Project
- Introduced MorphOperatorConfig objects for cleaner/faster parameter updates
Internals: Filter
- Add two filter types: "Ladder" and "Sallen-Key" filter to output operator
- Integrated PandaResampler for SIMD 4x filter oversampling
- Support modulation with high time resolution for filter
Internals: UI Toolkit
- Support multiple update regions in UI toolkit
- Optimize drawing for UI toolkit
- Support "software sprites" for efficient visual feedback
- Map Ctrl+Left Click to Right Click on macOS
Internals: Optimizations
- Pass wav set pointers (instead of strings) to morph linear/grid/source.
- Avoid fmod() for phase truncation.
- Build using -ffast-math
- NotifyBuffer: fast dsp thread -> ui thread notifications (no malloc in dsp thread)
- Avoid allocations in dsp thread in many cases (retrigger, noise decoder process)
- Support optimized SIMD code on ARM (Apple Silicon), code from Peter Johnson (#11)