ChadVis: The Suno Frontend for the Elite
“I’m not saying this is better than sex, but I’ve never had sex that supported projectM v4 presets with zero-copy PBO frame capture.” — Some Senior Dev who definitely uses Arch, btw.
🚀 What is this?
ChadVis is a native C++23 / Qt6 desktop frontend for suno.com. Suno publishes no supported API for this client, so ChadVis works from capture-derived evidence recorded under docs/suno_api/ — an unofficial, [T1]/[LEAD]/[VERIFY]-labeled research corpus. Most of that surface is still unverified, so the client fails closed rather than guessing. On top of it sit local superpowers the web app can only dream of: a full projectM v4 video workspace with Milkdrop preset support, word-synced karaoke lyrics, FFmpeg recording, and an offline SQLite library cache.
| Feature |
The Chad Way |
The “Other” Way |
| Language |
C++23 (Pure Power) |
Legacy Garbage |
| Product |
Suno client shell, projectM second |
Either one, never both |
| Visuals |
projectM v4 (Milkdrop) |
Flat static album art |
| Recording |
FFmpeg software encode, HW paths in code but not enabled by the build |
Recording your screen with a phone |
| AI Integration |
Capture-based, fail-closed, unofficial |
Guessing endpoints and hoping |
| Flex Factor |
High (Arch BTW) |
Non-existent KK&D n00bz |
On that recording row, precisely: the encoder is real and the build links exactly libavcodec, libavformat, libavutil, libswscale, and libswresample (cmake/Dependencies.cmake:123) — no hardware-acceleration component, and no -hwaccel configure option anywhere in cmake/, CMakeLists.txt, or build.sh. Hardware paths are in the source: src/recorder/EncoderSettings.hpp:70-76 carries the NVENC/VAAPI/QuickSync/AMF enum, the panel offers h264_nvenc and hevc_nvenc, and src/recorder/VideoRecorderFFmpeg.cpp:553-640 opens a real device (av_hwdevice_ctx_create) and real HW frames. But that path is runtime-optional and inherited from your FFmpeg build, not something this project enables: the encoder is resolved by name through avcodec_find_encoder_by_name (src/recorder/VideoRecorderFFmpeg.cpp:333), so it works only where the installed FFmpeg was compiled with that encoder, and there is no in-tree evidence it has ever run. Defaults are software H.264 with no HW device (src/recorder/EncoderSettings.hpp:79,92). Read “HW” as not enabled by ChadVis, not as absent from the codebase.
🛠️ Quick Start
We build from source because we respect our hardware. Full prerequisites and platform notes live in the Installation Guide; the short version:
git clone https://github.com/Nsomnia/chadvis-projectm-qt.git
cd chadvis-projectm-qt
./build.sh
./build.sh performs an incremental build and preserves the existing CMake configuration. Use ./build.sh --rebuild only when a clean rebuild is required; ./build.sh --help shows the compact option list. The executable lands at build/chadvis-projectm-qt.app/Contents/MacOS/chadvis-projectm-qt on macOS (build/chadvis-projectm-qt elsewhere, because the macOS target is a real MACOSX_BUNDLE); the test suites are registered in build/tests, so run ctest --test-dir build/tests --output-on-failure — pointing ctest at build/ discovers zero tests and still exits zero.
📖 Documentation
Start at the hub: docs/README.md. If you only read one page, read that one.
| Section |
Start Here |
Contents |
| User |
docs/user/INSTALL.md |
Install/build notes, config reference, usage & hotkeys |
| Dev |
docs/dev/ARCHITECTURE.md |
Process ownership, QML shell, bridges, contributing, testing |
| API |
docs/suno_api/README.md |
Unofficial capture-based research: endpoint inventory, OAuth gate, provenance. Most of it is [LEAD]/unverified; generation, B-Side, and billing routes are disabled or runtime-gated |
| Integration |
docs/integration/SUNO.md |
Suno integration, projectM v4 bridge internals |
| Lore |
docs/lore/MANIFESTO.md |
The manifesto, project history, dev banter |
| Changelog |
CHANGELOG.md |
What’s new, what’s still broken, pre-pivot history |
🤝 Contributing
Think you’re a 10x developer? Prove it. Read docs/dev/CONTRIBUTING.md, send a PR, and make sure your code is as clean as a freshly formatted NVMe drive. No exceptions, only vc::Result<T>.
📜 License
MIT. Because we’re not as restrictive as Richard wants us to be, but we still love freedom.
评论