Developer guide / Fedora
Build the foundation.
Source-build instructions for the native RIVET 0.1.0 application, checked against its BUILDING.md and CMake configuration on 16 September 2026.
Start with the application source.
These commands run from a RIVET application checkout, not this website folder. No public source URL is configured in the reference repository. If you do not have the application source, there is currently no public build to retrieve.
The repository records successful system-package Debug and Release builds on Fedora 44 x86_64 with GCC 16.2.1, Qt 6.11.2 and PipeWire 1.6.8. These results were recorded by the application project; this website milestone did not rerun its audio tests.
Install the development tools.
Required: a C++20 compiler, CMake 3.22+, Qt 6.7+ Widgets, pkg-config and JACK development headers/library. These package names and commands come from the verified application build reference.
sudo dnf install gcc-c++ cmake ninja-build pkgconf-pkg-config qt6-qtbase-devel pipewire-jack-audio-connection-kit-develRuntime audio needs an existing user PipeWire session and its JACK compatibility library, pipewire-jack-audio-connection-kit. RIVET never starts an audio server.
Dependencies for later phases
Direct ALSA MIDI is deferred. alsa-lib-devel, libsndfile-devel, sqlite-devel and pipewire-devel are possible later dependencies, not required or linked by Phase 1. libsndfile is intended for file audio; SQLite may support future indexing.
Configure, build and run.
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Debug -DRIVET_REQUIRE_JACK=ON
cmake --build build -j 4
ctest --test-dir build --output-on-failure
./build/rivetRIVET_REQUIRE_JACK=ON makes missing JACK headers a configuration error. Without this option, CMake permits a limited UI/core-only build that explicitly reports audio unavailable.
For Release, use a separate directory and -DCMAKE_BUILD_TYPE=Release. The reference checkout’s fresh system-package directories are build-system and build-system-release; its older directories retain temporary dependency paths.
cmake --install build --prefix "$PWD/local-install"First launch
- Refresh available ports.
- Select left/right playback destinations and, optionally, a JACK MIDI source. Unconnected output is supported.
- Start audio. Startup is silent.
- Optionally enable the quiet development sine to verify output, then disable it when finished.
There is no playable instrument. The MIDI input monitors events; it does not trigger voices.
Check the build.
ctest --test-dir build --output-on-failure
./build/rivet_jack_check
python3 tests/isolated_audio.pyCTest covers deterministic DSP/MIDI and an offscreen Qt startup/settings/shutdown check. The separate JACK check needs a live server; exit code 77 means the server is unavailable, not a pass.
The Python helper additionally needs Python 3 and pipewire. It creates a private test daemon for audio/MIDI capture, disconnect recovery and server-shutdown checks. It does not control the desktop daemon or send test audio to physical speakers.
QT_QPA_PLATFORM=offscreen ./build/rivet --version
QT_SCALE_FACTOR=2 QT_QPA_PLATFORM=offscreen ./build/rivet --smoke-testLet the server set the rate.
RIVET displays the actual sample rate and buffer size. PipeWire accepts a launch-time rate hint; the server may retain its current rate.
PIPEWIRE_RATE=1/48000 ./build/rivetBuffer requests happen while RIVET is stopped and can affect the shared JACK graph. Choose Follow server if a request is rejected. After port loss or server shutdown, refresh and restart explicitly; automatic reconnect is not implemented.
When configuration fails.
Qt 6 cannot be found
Check that Qt 6.7+ development files are installed. Use a fresh build directory when changing Qt installations. Consult Qt’s CMake documentation for non-system installations.
JACK development files are missing
Install the required PipeWire/JACK development package above. Use a fresh build directory if a cache still points into a temporary extracted RPM. Keep RIVET_REQUIRE_JACK enabled when validating real audio.
Audio cannot start or selected ports are missing
Confirm your user audio server is running, refresh available ports and choose valid destinations. A UI-only build cannot start audio. RIVET reports errors instead of silently changing another client’s connections.
Where are settings and logs?
Preferences normally live in ~/.config/Retrace/RIVET.conf. Logs normally live in ~/.local/state/Retrace/RIVET/rivet.log; the application status bar shows the actual location. Diagnostic activation is never restored on startup.
Full BUILDING reference (Markdown) · PipeWire JACK configuration