Skip to content

Releases: swesterfeld/spectmorph

SpectMorph 1.0.0-beta2

02 Jul 14:34
Compare
Choose a tag to compare
Pre-release

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

26 Jun 19:45
Compare
Choose a tag to compare
Pre-release

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

01 Nov 20:51
Compare
Choose a tag to compare

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

18 May 14:01
Compare
Choose a tag to compare

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)