Skip to content

v1.7.0 — Musical Timing, Pitch & Spectral Processing

Latest

Choose a tag to compare

@CristianMoresi CristianMoresi released this 25 Aug 23:18
· 1 commit to main since this release

DSPark 1.7.0 expands the header-only framework with production-ready musical
timing, pitch, spectral processing, native file formats, and stronger real-time
contracts.

Musical timing, pitch, and spectral processing

  • Added OnsetDetector, BeatTracker, and LoopFinder for transient analysis,
    tempo/phase tracking, and bounded crossfade-ready loop discovery.
  • Added TimeStretch for independent high-quality duration and pitch control.
  • Added PitchCorrector with YIN detection, scale-aware quantization, glide,
    and formant preservation.
  • Added SpectralFreeze with phase-aware advance, reconstruction, and
    decorrelation modes.
  • Added KeyDetector and offline LoudnessNormalizer processing under a
    true-peak ceiling.

Native formats and hardened I/O

  • Added dependency-free native FLAC decoding with FlacFile.
  • Added Standard MIDI File reading and writing with MidiFile.
  • Hardened WAV, MP3, FLAC, and MIDI parsing against malformed sizes, truncated
    data, and invalid metadata without introducing runtime codec dependencies.

Real-time and public API contracts

  • Automatic analysis windows now preserve their time span across sample rates,
    with resolved sizes exposed for latency accounting.
  • Audio-thread adoption of staged multi-word state is bounded; a contended
    update may be deferred, but the callback never waits for the control thread.
  • Added Biquad::setCoeffsNow() for stream-owner, single-threaded, and offline
    coefficient updates. BiquadCoeffs and the biquad recursion now use double
    precision for all sample types.
  • AudioBufferView conversions now express const-correctness as constraints,
    and AudioProcessor now represents an unambiguous in-place mutable-buffer
    processor.
  • Allocation failures and invalid prepare() arguments preserve safe, valid
    state across the affected processors and buffers.

Validation and distribution

  • Package recipes for Conan and vcpkg are pinned to the immutable 1.7.0 source
    authority.
  • CI covers GCC, Clang, MSVC, x64, ARM64, AddressSanitizer,
    UndefinedBehaviorSanitizer, float-cast overflow, public header conformance,
    installed-header consumption, and concurrent-suite isolation.
  • Plugin, DSParkLab, documentation, examples, benchmarks, and downstream CMake
    package consumers remain part of the release validation surface.

Most 1.6.1 code remains source-compatible. Review the
1.7.0 migration guide
for analysis-window latency, BiquadCoeffs, AudioBufferView, and
AudioProcessor changes.

See the full changelog
or compare v1.6.1...v1.7.0.