Skip to content

1.11.10

Latest

Choose a tag to compare

@space928 space928 released this 12 Apr 08:02
· 23 commits to main since this release
1d5ae79

This update brings a few UI improvements, a new plugin system, and an internal overhaul of the audio system.

Highlights:

Features / Changes:

  • Added plugin system, which allows QPlayer to be extended with custom plugins
  • Implemented crash handler, QPlayer will now attempt to save a log and project file when an unrecoverable error occurs
  • EQ now processes samples in double precision
  • Sound cue pause now adds a 5 sample fade out
  • Added an OSC cue plugin which allows QPlayer to send an OSC message when an OSC cue is triggered
  • Implemented a plugin which allows the MagicQCTRL hardware to control QPlayer (https://github.com/space928/MagicQCTRL)
  • Creating a new project and opening a project now trigger a running cues check to prevent interruptions
  • Complete overhaul of the audio limiter, the new algorithm should be punchier or smoother as desired and generally adapt better to a range of program material.
  • Added AutoGain feature to the limiter
  • Added plugin manager window
  • Added new splash screen

Fixes / Internal Changes:

  • The project now uses a custom source generator to generate a lot of the code needed for the binding logic needed by the UI
  • Changed how cues are implemented internally to allow for cues from plugins to be supported
  • Updated project to dotnet 10
  • Removed old dependencies
  • Improved text rendering
  • Documentation updates
  • Fixed create cue menu bug
  • Fixed a couple of property dependency bugs
  • Improvements and bugfixes to some of the views
  • Added create cue button and hint text to the cue stack
  • OSC go now triggers a delayed go instead of an instant go
  • Fixed bugs in the pcm -> floating point converters
  • Fixed some bugs in the resampler
  • Bugfix for single file compilation which resulted in a failure to read the assembly metadata
  • Fixed potential crash when reading broken peak files
  • Reimplemented fade in/out code for reliability and performance, it should behave more predictably now
  • Fixed OOB read in metering sample provider
  • Fixed mixer automatic input removal code which removed inputs in the wrong order
  • Fixed plugin loader bug in locating DLLs
  • Added API to allow plugins to scroll the cue list
  • Timers have been replaced with DispatcherTimers which should be more performant
  • Minor UI improvements
  • The WASAPI driver now attempts to set the AudioClientStreamOptions to Raw, which might help prevent windows APOs from messing with the audio
  • Improvements to the delay buffer class
  • API improvements for the EQSampleProvider static methods + new filter types added
  • Reimplemented a lot of the LoopingSampleProvider for better reliability, it is now specialised to work specifically with the QAudioFileReader
  • Removed almost all of the locks from the audio thread
  • Implemented asynchronous audio buffering system, which allows audio files to be read and buffered in separate worker threads automatically
  • All of it's seeking code has been moved to the QAudioFileReader and it has been partially re-written for clarity and performance
  • QAudioFileReader now implements an advanced buffering system reduce dropouts and removes all locks/blocking from the audio thread. It also handles seeking to specific sample positions itself as well now
  • Peak files now store the peak level of a sample separately
  • Fixed a couple of event handler leaks
  • Reduced GC pressure for some property change notifications by caching the event args
  • Removed dependency on JetBrains profiler
  • Loop mode is now a hidden combo box in the cue list for ease of editing
  • Replaced uses of ProgressBar with MeterBar, which disables (a bit forcefully) UI Automation, which was causing performance issues
  • Fixed nullable generation in source generator
  • QAudioFileReader now reads a number of samples into a junk buffer when seeking to warm up the underlying reader stream
  • Lots of internal refactoring

Full changelog:
1.10.3...1.11.10