RIVET

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.

Fedora / required development packages
sudo dnf install gcc-c++ cmake ninja-build pkgconf-pkg-config qt6-qtbase-devel pipewire-jack-audio-connection-kit-devel

Runtime 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.

Application checkout / Debug build
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/rivet

RIVET_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.

Optional local installation
cmake --install build --prefix "$PWD/local-install"

First launch

  1. Refresh available ports.
  2. Select left/right playback destinations and, optionally, a JACK MIDI source. Unconnected output is supported.
  3. Start audio. Startup is silent.
  4. 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.

Application tests
ctest --test-dir build --output-on-failure
./build/rivet_jack_check
python3 tests/isolated_audio.py

CTest 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.

Offscreen UI and version checks
QT_QPA_PLATFORM=offscreen ./build/rivet --version
QT_SCALE_FACTOR=2 QT_QPA_PLATFORM=offscreen ./build/rivet --smoke-test

Let 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.

Optional PipeWire sample-rate hint
PIPEWIRE_RATE=1/48000 ./build/rivet

Buffer 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