Releases: space928/QPlayer
Releases · space928/QPlayer
Development Build
1.11.10
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
1.10.3
EQ, Looping, QoL, and Performance Improvements:
- Improved performance and reliability of the audio subsystem
- Sound cue end time is now more accurate as it's logic is now calculated per sample rather than every 50 ms
- Rewrote the audio mixer to be more efficient
- The audio thread now registers itself with the Windows MMCSS to help prevent audio dropouts
- MSC and OSC drivers now use a cancellation token to allow them to be disposed of quickly and correctly
- Improved performance of the waveform graph renderer by preventing un-needed re-renders
- Autosave can now be disabled
- Improved UI performance when many cues are playing
- Audio device querying is now done asynchronously, this should speed up project file loading
- Added placeholder text to the waveform graph for when the waveform is still loading
- Fixed bug where clicking on the waveform to play from a specific time behaved incorrectly when the Start Time of the cue is non-zero
- The waveform window now accepts the normal keyboard shortcuts
- Fixed a bug where pressing the open waveform window button wouldn't always re-activate an already open window
- Added main mixer audio metering + UI
- Optimised audio resampling implementation
- Improved audio processing performance using SIMD intrinsics
- Implemented per-cue parametric EQ
- Implemented proper support for audio cue looping (fixes #9)
- Fixed bug where the local system culture caused string -> double parsing to fail; most of the code now uses the invariant culture for number parsing (fixes #26)
- QPlayer now opens the WASAPI driver by default as it offers better performance
- Updated the splash screen
- Added warning popup when attempting to exit QPlayer while cues are playing
- Exiting the main QPlayer window can now be cancelled if there are unsaved changes
- Loading a new show file now correctly stops all the running cues from the last show file
- Switching to the Wave or DirectSound audio drivers now automatically increases the audio latency to a reasonable value if it's too small
- Fixed some bugs relating to race conditions around opening the correct audio device when loading a show file or creating a new one
- Prevented a few buttons from receiving focus so that they don't inadvertently eat GO commands
- Improved tab navigation of the cue stack fields
- Fixed bug where hidden combo boxes wouldn't close
- Other bugfixes and improvements
Full Changelog: 1.9.2...1.10.3
1.9.2
So many UI Improvements:
- Added an online reference manual: https://space928.github.io/QPlayer/reference/
- Waveforms now update correctly when navigating between sound cues
- Fixed waveform rendering bug when fully zoomed in
- Added Save As
- Added Duplicate cue command
- Improved automatic cue numbering, move Cue up/down now only affects the QID of the cue being moved
- Implemented drag and drop for cue reordering
- Audio files can now be drag/dropped into any point in the cue stack
- Implemented improved text/number/timespan input control with a value spinner knob
- Added audio driver latency setting to the project settings tab
- The audio playback manager now automatically attempts to restart the audio driver in case it crashes
- Added status bar
- Various improvements to the log window
- OSC performance and reliability improvements
- Added show file converter to upgrade form old versions
- Added remote control protocol (based on OSC) which allows QPlayer to control other instances of QPlayer
- Cue colour property is now shown in the cue stack
- Fixed bug where some tooltips had very large spaces in them
- Fixed unsaved changes check, and made it more efficient
- Added exit button to file menu
- Fixed bug where space key was being consumed when editing cue names in the cue list
- Added autosave. Files are automatically backed up to the persistant data directory (in
.../AppData/Roaming/QPlayer), the five latest versions of the file are stored - Added support for receiving Midi Show Control commands from an MA lighting desk over UDP
- Added recent files menu to quickly open recently opened projects
- Implemented Pack feature which allows QPlayer projects to be saved with all their referenced media to a single directory
- Added loading progress popup
- Added more tooltips to various controls in QPlayer
- Waveforms can now be clicked to seek and start playing from the clicked location
- Replaced Halt cue property the a more comprehensive Trigger property
- QPlayer now accepts a single command line argument with the project file to open; this also allows Windows Explorer Open With QPlayer to work
- TimeSpan fields are now much more tolerant of user input, if a value can't be parsed as a time span it's instead parsed as a (decimal) number of seconds
- Cues now support waiting for another cue
- Small UI tweaks and improvements
- Many improvements to the project's internal tooling and codebase
- Various bug fixes
Full Changelog: 1.6.4...1.9.2
1.6.4
Waveforms & OSC:
- Added custom audio waveform renderer control to cues to help with trimming: (Show Tested)
- Added In and Out point draggable markers to the waveform to make it easier to set the start time and duration of clips
- Added transport controls to the waveform window
- Added a playback marker to the waveform
- Fixed some bugs with the volume slider and fades
- Fixed a bug where if no fade out was specified the sound cue wouldn't respect it's duration field
- Fixed some threading issues
- Improved mouse capturing
- Added OSC support (Receive only at the moment) (Show Tested)
- Added OSC commands to play/stop/pause/unpause any cue in the cue stack
- Added OSC commands to select a cue, play/stop/pause/etc the selected cue
- Refactored code to meet modern C# standards
- Upgraded project to dotnet 8 (end users will be required to install the .net 8 runtime)
- Added keyboard shortcut to create cues (ctrl+T)
- QID, name, and delay fields can now be double clicked in the cue stack to be edited
- Fixed order-of-operations bug which resulted in a workaround making the cue editor text boxes difficult to use
- Added drag-and-drop support for adding new audio cues
- Fixed Go and Stop button tooltips being too big
- Cue list header is now sticky and can been seen when scrolling down the cue list
- Many internal refactorings and fixes
Full Changelog: 1.4.1...1.6.4
1.4.1
SHOW TESTED: This version of QPlayer has been used in a real show environment
Added Volume Cues:
- Added volume cues, allowing the volume of a sound cue to be faded after it's started, fixes #13
- Added new fade curves
- Bugfixes related to fading
- Fixed path resolution bugs
Full Changelog: 1.3.3...1.4.1
1.3.3
Preloading & Small improvements:
- Added the ability to preload a cue to a given time
- Fixed StartTime related bugs in SoundCues
- Changed behaviour of pause/unpause to make it global
- Added (readonly) keyboard shortcut list to the settings window
- Other minor changes
Full Changelog: 1.3.2...1.3.3
1.3.2
Fixed some keyboard shortcut bugs.
Full Changelog: 1.3.1...1.3.2
v1.3.1
Full Changelog: 1.2.1...1.3.1
v1.2.1
Full Changelog: https://github.com/space928/QPlayer/commits/1.2.1