VidPlayer v2.0.9.2-C# / WPF Rebuild CS V1.0
Overview
This release is the first complete C# / WPF edition of VidPlayer. It replaces the previous Python/PySide6 application architecture with a component-based .NET 10 implementation while keeping the familiar portable VidPlayer data layout and compatibility with existing playlists, themes, language files, settings, artwork mappings, visualizer presets, and updater data.
The release also includes the rebuilt C# VPTheme Editor, the protected Theme Environment Tester, and the rebuilt C# VPACDRipper.
This is not a small patch to the Python executable. It is a separate implementation intended to have its own repository, releases, source packages, issue tracking, and future development history.
Binary package
VidPlayer-v2.0.9.2-CS-V1.0-win-x64.zip should contain the entire portable application tree, including:
VidPlayer.exe- all required external
VidPlayer.*.dllcomponent assemblies VidPlayerUpdater.exe- portable VLC and plugins
- FFmpeg and ffprobe
- icons, themes, language files, and UI sounds
- VPTheme Editor
- Theme Environment Tester
- VPACDRipper and native BASS DLLs
README.mdRELEASE.mdFEATURES.txtLICENSE.txt
Do not publish a package containing only the main EXE.
Source package
VidPlayer-v2.0.9.2-CS-V1.0-source.zip should contain the exact source used for the binary release:
VidPlayer.sln- all
src\VidPlayer.*projects - updater source
tools\VidPlayer.Tools\VidPlayer.Tools.sln- VPTheme Editor source
- Theme Environment Tester source
- VPACDRipper source
- build scripts
- release documentation
- source-available license
- third-party notices and retained reference material where redistribution is permitted
Installation
- Download the Windows x64 binary ZIP.
- Extract the complete archive to a writable folder.
- Keep all folders and DLLs in their supplied locations.
- Launch
VidPlayer.exe.
The release is self-contained. A separately installed .NET runtime is not required.
Do not run the application from inside the ZIP, and do not move only VidPlayer.exe out of the extracted folder.
Main player rebuild
Architecture
- Rewritten in C# and WPF.
- Targets .NET 10 and Windows x64.
- Uses separate VidPlayer-authored component projects for core services, playback, LibVLC integration, playlists, media metadata, themes, localization, visualizers, Discord, infrastructure, and updater behavior.
- Keeps the
VidPlayer.*.dllproject assemblies external beside the EXE. - Bundles managed framework and managed third-party dependencies into the primary EXEs.
- Keeps native and user-editable portable assets external.
Playback
- Portable LibVLC / LibVLCSharp playback.
- AAC, FLAC, M4A, MP3, OGG, WAV, and WMA file opening.
- Audio CD CDDA playback.
- Play, pause/resume, stop, previous, next, seek, and autoplay-next.
- Optional last-playlist, track, and position restoration.
- Optional VLC volume boost from 0% through 200%, disabled by default.
Playlist system
- Separate or docked playlist.
- Left, right, top, bottom, and visualizer-tab dock positions.
- Pop Out support.
- Search, drag reordering, file drop, Move Up, Move Down, Play Selected, Remove Selected, Previous, Next, Save, Load, Unload, Clear, and Play Audio CD.
- Detailed cancellable bulk-load progress.
.vpland JSON playlist compatibility.
Visualizer
- Bars, waveform, XP WMP-style blobs, and spectrogram modes.
- Main, full-screen, and mini visualizer views.
- Color presets and custom HEX colors.
- FFT analysis with logarithmic bands and smoothing.
- Synchronized FFmpeg analysis/fallback.
- Optional real LibVLC PCM callbacks using safely converted signed 16-bit stereo PCM.
- Live PCM status reporting.
Artwork, metadata, and lyrics
- Embedded and external artwork.
- Artwork mappings and VPLogo fallback.
- Full Screen Artwork with filename and playback state.
- Single-file and multi-file File Info.
- TagLibSharp and ffprobe metadata.
- LRC, SRT, VTT, ASS, and SSA subtitle/lyrics support.
- Font, color, background, opacity, position, and timing controls.
Appearance and accessibility
- Light, Dark, System Default, SteamLike, and custom VPThemes.
- Application-wide themed WPF resources.
- Theme gradients, fonts, icons, and sound packs.
- Dark popup-menu and context-menu styling.
- Configurable UI sounds and volume.
- 75%–150% UI scaling.
- Remembered window size, position, and maximized state.
- Mini Mode.
- Always-on-top mode.
Discord Rich Presence
- Built-in application ID
1531530274821767289. - No user-editable application-ID setting.
- Current-track metadata and timing where available.
- Automatic reconnect attempts when Discord starts after VidPlayer.
Updater rebuild
The included updater is a separate C# / WPF application with:
- automatic and manual checks
- release-channel selection
- silent mode
- cancellation
- update-package layout normalization
- path traversal and install-root containment protection
- SHA-256 verification when available
- preservation of portable user data
- manifest-based rollback creation
- rollback retention limits
- rollback restore and deletion
- optional VidPlayer close/relaunch behavior
VPTheme Editor rebuild
The release replaces the old Python editor with VPTheme.Editor.exe.
Included capabilities:
- new/open/save/save-as/duplicate workflows
- unsaved-change handling
- automatic theme-folder detection
- theme list filtering and refresh
- Dark, Light, and SteamLike starter themes
- schema-driven editing of roughly 170 properties
- window, dialog, menu, control, playlist, slider, progress, tooltip, font, icon, and sound configuration
- interactive Main, Settings, Playlist, and About previews
- self-contained theme asset packaging
- custom fonts, icons, and UI sound packs
Default/...and relative asset paths- saved editor placement and crash logs
Theme Environment Tester
VPTheme_ThemeEnvironmentTester.exe is a companion to VPTheme Editor.
- It is launched through Test Run Theme.
- It receives the current theme, including unsaved editor changes.
- It displays mock versions of VidPlayer’s main window and subwindows.
- It includes playlist, Settings, File Info, About, Mini Mode, Full Screen Artwork, Full Screen Visualizer, and Mini Visualizer previews.
- It can load filenames and show them in the mock interface.
- It does not initialize LibVLC, play audio, or permanently modify VidPlayer settings.
- It validates an editor-created token, process ID, session file, and named mutex.
- Direct standalone launch shows an error and exits.
VPACDRipper rebuild
The release replaces the previous Win32 interface with a C# / WPF application while retaining the native BASSCD engine.
Capabilities include:
- optical drive discovery
- Audio CD track enumeration
- track duration reading
- CD-Text disc and track metadata
- editable titles and artists
- track selection, Check All, and Clear All
- WAV PCM output
- FLAC output through BASSenc FLAC
- MP3 output through BASSenc MP3
- Rip Selected and Rip All
- cancellation
- per-track and overall progress
- output folder management
- detailed logs
- safe cleanup of incomplete files
- duplicate-safe filenames
- MusicBrainz search shortcut
- Dark, Light, and System UI choices
- portable INI and window-placement settings
The native files bass.dll, basscd.dll, bassenc.dll, bassenc_flac.dll, and bassenc_mp3.dll must remain beside VPACDRipper.exe.
Migration from the Python edition
Install CS V1.0 into a separate directory first. After confirming the new installation starts correctly, copy only user data that is still needed.
Compatible portable data includes:
config.jsonrecents.jsonartmap.jsonvisualizer_presets.json.vplplaylists- custom
.vpthemefiles and asset folders .langufiles- localized documentation
- subtitle and lyrics sidecar files
- selected updater settings
Do not copy the old Python executable, Python runtime, old editor executable, old Win32 ripper executable, or old managed/native DLL layout over the C# binaries.
Portable component placement
VidPlayer\
├─ VidPlayer.exe
├─ VidPlayer.*.dll
├─ FEATURES.txt
├─ README.md
├─ RELEASE.md
├─ LICENSE.txt
├─ bin\
│ ├─ VLCLibs\
│ ├─ ffmpeg.exe
│ ├─ ffprobe.exe
│ ├─ icons\
│ ├─ Langu\
│ ├─ VPACDRipper.exe
│ ├─ bass.dll
│ ├─ basscd.dll
│ ├─ bassenc.dll
│ ├─ bassenc_flac.dll
│ ├─ bassenc_mp3.dll
│ └─ VPThemes\
│ ├─ VPTheme.Editor.exe
│ ├─ VPTheme_ThemeEnvironmentTester.exe
│ └─ themes and assets...
└─ update\
├─ VidPlayerUpdater.exe
├─ VidPlayer.Core.dll
├─ VidPlayer.Infrastructure.dll
├─ 7z.exe
└─ rollbacks\
Build information
Main application
Open VidPlayer.sln in Visual Studio with the .NET desktop/WPF workload, or run Build-Release.cmd with .NET 10 installed.
The release builder verifies:
- successful restore/build/publish
- required VLC runtime and plugins
- FFmpeg and ffprobe
- themes, languages, and icons
- updater and 7-Zip
- external VidPlayer-authored assemblies
- absence of loose System.* and Microsoft.* DLLs beside the main EXEs
Companion tools
Build tools\VidPlayer.Tools\VidPlayer.Tools.sln or run its Build-Release.cmd.
Place the editor and tester together in runtime-assets\bin\VPThemes. Place the ripper, INI, and BASS DLLs in runtime-assets\bin. Rebuild the main release package afterward.
Known requirements and boundaries
- Windows x64 only.
- A physical optical drive and readable Audio CD are required for CD playback/ripping.
- Discord desktop must be running for Rich Presence.
- The expected Discord artwork asset must exist in the Discord application.
- The Theme Environment Tester is intentionally not a media player.
- VPACDRipper requires the supplied x64 BASS native libraries.
- Portable VLC, its plugin tree, FFmpeg, and ffprobe must remain in the provided locations.
Reporting a problem
Include:
- Windows version
- exact release tag
- steps that reproduce the problem
- media format or Audio CD details when relevant
Logs\vidplayer_startup.logLogs\libvlc.logfor playback/PCM issuesBuild-Release.logfor source-build problems- updater or VPACDRipper logs when the problem concerns those components
Do not include private media files, tokens, or personal folder contents unless they are necessary and safe to share.
Licensing
VidPlayer is distributed under the included source-available LICENSE.txt. Public redistribution, public forks, bundling, resale, and distribution of modified builds require permission from the project owner.
All third-party components remain under their own licenses and terms. BASS and its add-ons have separate licensing requirements.
Credits
- Project owner and developer: sonic Fan Tech / sonic Fan Games
- C# rebuild assistance: OpenAI ChatGPT / Codex
- Playback: VideoLAN LibVLC and LibVLCSharp
- Media analysis: FFmpeg / ffprobe
- Metadata: TagLibSharp
- UI sounds: NAudio
- Discord Rich Presence: DiscordRichPresence / Lachee DiscordRPC
- Audio CD ripping: BASS, BASSCD, BASSenc, BASSenc_FLAC, and BASSenc_MP3