Just a simple media player
- C++ 94.5%
- CMake 3.6%
- C 1.9%
| .forgejo/workflows | ||
| include/shriek | ||
| src | ||
| third_party/minimp4 | ||
| triplets | ||
| .gitignore | ||
| CMakeLists.txt | ||
| CMakePresets.json | ||
| README.md | ||
| vcpkg-configuration.json | ||
| vcpkg.json | ||
Shriek
A cover-art-focused media player built with wxWidgets, FAudio, and SQLite.
Dependencies
| Library | Purpose |
|---|---|
| wxWidgets | GUI toolkit |
| libFLAC / libvorbis / opusfile | FLAC / Ogg Vorbis / Opus decoding |
| minimp3 / minimp4 + FDK-AAC | MP3 / MP4 (AAC) decoding |
| FAudio | Audio output (XAudio2-compatible) |
| SQLite3 | Library database |
All dependencies are managed via vcpkg (manifest mode). The core has no
FFmpeg dependency; FFmpeg support (extra formats + rich metadata/cover art) is
provided by an optional, separately-built decoder plugin — see
plugins/ffmpeg.
Prerequisites
- CMake 3.24+
- Ninja (recommended generator)
- vcpkg — set
VCPKG_ROOTenvironment variable to your vcpkg clone
Windows
- Visual Studio 2022 (or Build Tools) with C++ workload
macOS
- Xcode command-line tools
Building
Windows (static, Release)
cmake --preset windows-x64-static
cmake --build --preset windows-release
Windows (Debug)
cmake --preset windows-x64-debug
cmake --build --preset windows-debug
macOS (Apple Silicon)
cmake --preset macos-arm64-static
cmake --build --preset macos-arm64
Linux
cmake --preset linux-x64
cmake --build --preset linux-x64
Project Structure
Shriek/
├── CMakeLists.txt Root build script
├── CMakePresets.json Build presets (Win/Mac/Linux)
├── vcpkg.json vcpkg manifest
├── vcpkg-configuration.json vcpkg registry config
├── include/
│ └── shriek/decoder_plugin.h Decoder plugin ABI (shared with plugins)
├── third_party/
│ └── minimp4/ Vendored MP4 demuxer (single header)
├── plugins/
│ └── ffmpeg/ Optional FFmpeg decoder plugin (own build)
└── src/
├── main.cpp Entry point
├── app/
│ └── ShriekApp wxApp subclass
├── ui/
│ ├── MainWindow Top-level frame
│ ├── AlbumGridPanel Scrollable album cover grid
│ ├── NowPlayingPanel Current-track art & info
│ └── PlaybackControlsPanel Transport & volume
├── audio/
│ ├── AudioEngine FAudio playback engine
│ └── Decoder Built-in + plugin decoders → float PCM
├── plugin/
│ └── PluginManager Loads decoder plugins from plugins/
├── db/
│ ├── Database SQLite wrapper
│ └── LibraryScanner Recursive folder scanner
└── models/
├── Album.h
└── Track.h
Roadmap
- Album deduplication on scan
- Playlist / queue management
- Seek bar integration
- Gapless playback
- Podcasting 2.0 support (RSS feeds, chapters, value tags)