Repository navigation
Releases: Kosmodrom-lab/CPlay
Release list
cplay v2.5
Release v2.5 — Dynamic Memory Blitting, Integrated DSP & Responsive Engine
cplay v2.5 introduces a complete architectural refactoring of the console blitting pipeline, expanding matrix memory buffering across all UI screens, upgrading real-time audio telemetry, and delivering a rock-solid high-DPI options interface.
🚀 Key Improvements & Features
🎛️ Dual-Screen & Matrix Memory Blitting Pipeline
Zero-Flicker Full-Matrix Buffering: Extended direct video memory matrix writes (CHAR_INFO) across all screens (Player View, EQUALIZER & DSP, Audio Engine & Accessibility, and Playlist Browser).
Single Atomic Flushes: Standardized screen updates using FlushBufferEx(), eliminating console flicker and cursor tearing during rapid navigation.
📊 Live Hardware Monitoring
Smart Device Label Extraction: Parsed and clean-formatted active Windows audio endpoints (extracting core device descriptions) aligned flush-right on the bottom telemetry bar.
🎚️ High-DPI Responsive Graphic EQ & DSP Module
High-DPI Responsive Response Curve: Re-engineered DrawEqResponseGraph() to scale dynamically with Windows Display DPI scaling (100%, 125%, 150%, 200%), ensuring smooth rendering on high-resolution displays.
Re-aligned Options Layout: Shifted options listboxes and parameter form down by 1 row to give the header room to breathe and eliminate bottom label clipping on the EQ response graph.
Integer-Scaled Parameter Logic: Refactored floating-point EQ gain evaluations across numeric form displays and file persistence to pure integer math, guaranteeing deterministic formatting.
⚡ Performance & Engine Refinements
Optimized Cover Art Scaling: Reduced background GDI software scaling frequency from 20 FPS to a balanced 1-second ticker (with instant repaints on window restore), dramatically lowering idle CPU load.
Seamless Audio Device Switching: Built smooth BASS device re-initialization and stream position restoration when changing output soundcards on the fly.
CPlay v2.4
CPlay v2.4 — Release Notes
This release focuses on rendering stability, high-DPI scaling accuracy, and search performance optimizations across Windows 10 and 11 environments.
ߚ What's New & Fixed in v2.4
-
GDI Cover Art & Focus Interruption Fix
- Fixed an issue where opening external GUI applications (such as
tPad) caused the cover art to disappear due to console clipping region invalidation. RenderCoverArtFast()now validates window clipping regions, automatically recreates memory DCs upon context switches, and re-blits on main loop ticks to ensure artwork never vanishes.- Added view-state guarding so cover art only renders on the main screen and no longer bleeds through into the Playlist or Options views.
- Fixed an issue where opening external GUI applications (such as
-
Native High-DPI Display Scaling Support
- Resolved compiler linkage issues with
SetProcessDPIAware()by linkinguser32.ilb. - Grid-to-pixel calculations in
RenderCoverArtFast()now map 1:1 across 125%, 150%, and 200% display scaling on Windows 10/11 without pixel distortion or blur.
- Resolved compiler linkage issues with
-
Zero-Allocation Playlist Search Acceleration
- Replaced
INSTR(LCASE$(...), LCASE$(...))inFilterPlaylist()with Fletchie'sxinstr()using direct string pointers (&fileNameOnly,&cleanQuery). - Completely eliminated temporary heap allocations (
LCASE$) during search filters, unlocking instant, lag-free search passes over collections of 40,000+ tracks.
- Replaced
ߎΠKeyboard Controls Reminder
| Key | Function |
|---|---|
Space |
Play / Pause |
Left / Right |
Seek -5s / +5s |
Up / Down |
Volume Up / Down |
N / P |
Next / Previous Track |
S |
Toggle Shuffle |
B |
Open Playlist Browser & Search |
O |
Open Equalizer & Audio DSP Settings |
C / L |
Toggle Extended Comments / Synced Lyrics |
T |
Cycle Retro Color Themes |
Q |
Exit CPlay |
cplay v2.3 — Seamless USB DAC Support & Dynamic Device Switching
🎧 Engine & Hardware Improvements
Universal USB DAC & High-Res Audio Stabilization: Resolved DirectSound device initialization failures (BASS_ERROR_ILLPARAM / Error 20) and driver buffer starvation artifacts across external USB DACs (validated on FiiO Q series and iBasso DC-03 Pro).
On-the-Fly Dynamic Device Switching: Added seamless audio output device switching during active playback without requiring an application restart, dropping active stream handles, or crashing Windows USB audio endpoints.
USB Ring-Buffer Headroom Optimization: Configured BASS buffer timing parameters (BASS_CONFIG_BUFFER, BASS_CONFIG_UPDATEPERIOD, BASS_CONFIG_DEV_BUFFER) specifically tuned to prevent USB audio packet drops and hotplugging stalls under Windows 7+.
🛠 Fixes & Stability
Startup Initialization Order: Fixed a race condition where audio device initialization ran before device enumeration and configuration parsing. The app now scans soundcards and loads cplay.ini first to guarantee correct hardware targeting.
Context Reset on Driver Failures: Implemented forced BASS_Free() calls between BASS driver init attempts to prevent stale DirectSound handle leaks (BASS_ERROR_ALREADY).
Infinite Track-Skipping Prevention: Guarded the main playlist processing loop against dead/lost audio device contexts (hStream == 0), replacing rapid track-skipping loops with clear, interactive user recovery prompts.
Clean Fallback Execution: Improved fallback logic when targeted soundcards are disconnected—gracefully falling back to the default Windows system endpoint without locking audio handles.
cplay v2.2
CPLAY v2.2 - NATIVE DSP ENGINE & ARCHITECTURE UPDATE
SUMMARY OF CHANGES
-
AUDIO ENGINE & DSP UPGRADES
- Bauer Stereophonic-to-Binaural (BS2B) Crossfeed Filter:
- Added native 16-bit PCM Crossfeed DSP module (CrossfeedDSP / ApplyCrossfeed)
to eliminate harsh hard-panning and reduce listening fatigue. - Blends attenuated (~30%) and low-pass delayed (~220us) signals across channels.
- Added native 16-bit PCM Crossfeed DSP module (CrossfeedDSP / ApplyCrossfeed)
- Volume Normalization (Exponential AGC):
- Upgraded automatic gain control (ApplyAgcSmoothed) with dual-rate
exponential moving averages (fast attack, slow release). - Fixed volume "bounce" when switching UI screens by keeping smoothing history.
- Upgraded automatic gain control (ApplyAgcSmoothed) with dual-rate
- Master DSP Dispatcher Integration:
- Crossfeed added as the 7th DSP module in ApplyAllDSP.
- Bauer Stereophonic-to-Binaural (BS2B) Crossfeed Filter:
-
UI & LAYOUT IMPROVEMENTS
- Expanded Options Screen Space:
- DrawOptionsScreen updated to display 7 active DSP modules.
- Presets Listbox and 10-Band EQ Parameters Form moved down to Row 10.
- Input Dispatcher Alignment:
- Updated selection bounds to index 6 for the 7th DSP item.
- Added spacebar toggle support and crossfeed_enabled INI persistence.
- Expanded Options Screen Space:
-
CORE ENGINE & STREAM PIPELINE FIXES
- Optimized Stream Loop Initialization (WHILE argIdx < g_TrackCount):
- Reordered loop so CreateTrackStream runs before handle validation.
- Moved byte position restoring (BASS_ChannelSetPosition) before prebuffering.
- Placed BASS_ChannelPreBuf(hStream, 2000) at the end of setup to guarantee
fully processed DSP audio from sample 0.
- Optimized Stream Loop Initialization (WHILE argIdx < g_TrackCount):
-
DOCUMENTATION
- Added DSP_Guide.txt detailing module operations, equipment profiles
(IEMs vs. Flatheads), and incompatible DSP combinations.
- Added DSP_Guide.txt detailing module operations, equipment profiles