"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.
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, andlibswresample(cmake/Dependencies.cmake:123) — no hardware-acceleration component, and no-hwaccelconfigure option anywhere incmake/,CMakeLists.txt, orbuild.sh. Hardware paths are in the source:src/recorder/EncoderSettings.hpp:70-76carries theNVENC/VAAPI/QuickSync/AMFenum, the panel offersh264_nvencandhevc_nvenc, andsrc/recorder/VideoRecorderFFmpeg.cpp:553-640opens 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 throughavcodec_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.
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; 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.
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 |
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>.
MIT. Because we're not as restrictive as Richard wants us to be, but we still love freedom.