Section B: Complete Functional Reference
1. Global Transport, Session & Hardware Controls
Play / Pause: Press Space or P
Record Audio: Press R (Initiates a 3-second countdown; inputs are locked during countdown).
Record Audio + Video: Click the 🖵 button.
Stop: Press S
Export / Mux: Press X or click Export / Mux (Command Post)
Save/Load Session: Click the respective buttons on the Command Post to save/load .qjams project files.
Hardware Audio Cycler: Use the Dropdown menu on the Dashboard to switch active input interfaces on the fly.
Hardware Toast Notifications: QJams automatically displays real-time popups when USB audio devices or cameras are attached/disconnected.
2. Session Manager (12-Track Panel)
Select Track: Click a Track Row to arm it.
Reorder Tracks: Drag & Drop the handle (☰) on the far left of a track row.
Rename Track: Press F2 or click the Pencil Icon.
Solo button (Note icon): Single out one or more tracks. The master solo button reverses the selections. Ctrl+master button toggles all on or off/
Track Volume: Adjust the Number Spinner (ranges from -24 dB to +24 dB post-buffer).
Track Cut / V-Fade / Blend: Click the Scissors Icon on the specific track row. Applies edits only to that layer.
Track Undo / Wipe: Click the Undo Arrow on the track row to revert the last edit. Ctrl + Click the arrow to permanently wipe the track clean.
Batch Import max 12 Stems (songs, tracks): Drag & Drop multiple WAV/FLAC files directly onto the Session Manager or Timeline Canvas to automatically load them sequentially across tracks. Note: In Beta 2.0 all stems are inserted at playhead (i.e. vertical) position. Use case: add drum, bass, keyboard, metronome layers to quickly create a practice track.
3. Playlist & Preset Controls
Playlist Quick Add / Remove: Click the + or - button on the Dashboard to add/remove the loaded song from the active playlist.
Activate Preset: Press keys 1 through 0 or click the numbered UI buttons to load an assigned playlist.
Assign Preset (Keyboard): Press Ctrl + 1 through 0.
Assign Preset (Mouse): Ctrl + Click on the Playlist area, or click an empty preset button (-) and click Save Playlist.
Reorder Presets: Drag & Drop one numbered preset button onto another.
Clear Preset Slot: Right-click the preset button, or click the Clear Icon in the left header. (The .m3u file remains on disk).
Rename Playlist: Click the Text Insert Icon (Left Header) to rename the .m3u file on disk.
Delete Playlist: Click the Trash Can Icon (Left Header) to permanently delete the .m3u file.
Rename Track File: Click the Pen Icon (Right Header). Renames the physical file and rewrites embedded FFmpeg metadata.
Remove Playlist Track: Press Del or click the Delete Icon.
Multi-Select Tracks: Shift + Click or Ctrl + Click to select multiple tracks for batch operations.
Reorder Playlist Tracks: Drag & Drop tracks up or down in the list.
Sort Playlist: Click the Sort Icon to toggle ascending/descending order.
4. The Timeline & Master Edits
Select Loop: Shift + Click and drag on the Waveform.
Clear Loop: Press Esc.
Loop Anchor: Click anywhere on the waveform without Shift to clear loop points and move the playhead immediately.
Master Cut: Click the Scissors Icon (Dashboard). Deletes audio within the loop and snaps the timeline together.
Master V-Fade: Ctrl + Click the Scissors Icon (Dashboard). Smoothly ducks/fades audio to absolute silence.
Master Blend: Shift + Click the Scissors Icon (Dashboard). Fades out the left side, fades in the right side, and seamlessly overlaps.
Master Undo: Click the Undo Arrow (Dashboard). Reverts the last global master edit.
Master S-Curve Volume Ramp: Shift + Mouse Scroll on the Waveform. Dynamically amplifies or attenuates the selected loop region by +0.5 dB or -0.5 dB using smooth S-curve crossfades.
Reset Canvas: Click the Trash Can Icon (Dashboard). Wipes the session and generates a blank canvas.
Copy to Clipboard (Single Track): Press Ctrl + C.
Copy to Clipboard (All Tracks): Press Ctrl + Shift + C.
Paste Clipboard: Press Ctrl + V. Destructively overlays the snippet at the playhead position and advances the playhead to the end of the pasted clip.
Click the Length button on the audio bar to cut off the empty tail of a (multi) track.
Slow down or speed up your track with the Speed button in the audio bar.
Persistent Event Logging: Enable persistent logging to QJams.log via the settings menu to capture hardware discovery states, JACK graph topologies, and memory gatekeeper calculations ([MEM-GATE]) for troubleshooting. Submit this file when reporting issues.
Example of (normal healthy) log output
=========================================================
QJams Session Log - Boot: 2026-09-15 16:55:22
=========================================================
[16:55:22]
=== QJAMS HARDWARE DISCOVERY TEST ===
[16:55:22] [SYSTEM] Display Server: wayland
[16:55:22] [JACK DSP] Daemon Version: 3.1.6.8 (using PipeWire 1.6.8)
[16:55:22] [JACK DSP] Buffer Size: 1024 frames
[16:55:22] Discovered Camera: Logitech Webcam C925e at /dev/video0
[16:55:22] [Video] Found 1 capture devices:
[16:55:22] 1: Logitech Webcam C925e (/dev/video0)
[16:55:22]
[Audio] Found 7 physical capture devices:
[16:55:22] 1: Ryzen HD Audio Controller Pro [4 channels]
[16:55:22] 2: Ryzen HD Audio Controller Pro 2 [2 channels]
[16:55:22] 3: Logitech Webcam C925e Analog Stereo [2 channels]
[16:55:22] 4: SA9226 192KHz audio controller Analog Stereo [2 channels]
[16:55:22] 5: Radeon High Definition Audio Controller Digital Stereo (HDMI 4) [P34WD-40] [2 channels]
[16:55:22] 6: Midi-Bridge [1 channels]
[16:55:22] 7: BLE MIDI 1 [1 channels]
[16:55:22] - Pre-Boot Routing: Target explicitly forced to Logitech Webcam C925e Analog Stereo
[16:55:22] ======================================
[16:55:22] Quad Cortex Pro: not detected
[16:55:22] JACK sample rate dynamically updated to 48000 Hz
[16:55:22] Audio Engine Live: CachyOS RT thread active.
[16:55:22] Attempting to patch playback device: SA9226 192KHz audio controller Analog Stereo
[16:55:22] [JACK EVENT] Hardware Port ADDED: QJams_Engine:capture_1
[16:55:22] [JACK EVENT] Hardware Port ADDED: QJams_Engine:capture_2
[16:55:22] [JACK EVENT] Hardware Port ADDED: QJams_Engine:playback_1
[16:55:22] [JACK EVENT] Hardware Port ADDED: QJams_Engine:playback_2
[16:55:22] [JACK DSP] Connected Playback L: QJams_Engine:playback_1 - SA9226 192KHz audio controller Analog Stereo:playback_FL
[16:55:22] [JACK DSP] Connected Playback R: QJams_Engine:playback_2 - SA9226 192KHz audio controller Analog Stereo:playback_FR
[16:55:22] Attempting to patch capture device: Logitech Webcam C925e Analog Stereo
[16:55:22] [JACK DSP] Connected Capture L: Logitech Webcam C925e Analog Stereo:capture_FL - QJams_Engine:capture_1
[16:55:22] [JACK DSP] Connected Capture R: Logitech Webcam C925e Analog Stereo:capture_FR - QJams_Engine:capture_2
[16:55:23] Video Engine Live: V4L2 Thread capturing MJPEG at 1920x1080 30FPS.
[16:55:23] Status: Starting Audio Engine...
[16:55:23] Status: Ready
[16:55:23] [IPC] Topology change detected (ADDED).
[16:55:23] [IPC] Topology change detected (ADDED).
[16:55:23] [GTK TIMER] Port debounce finished. Executing graph validation...
[16:55:23] Quad Cortex Pro: not detected
[16:55:23] [MEM-GATE] Dynamic History Calc: Floor=2GB | Base=2285,2 MB | Remaining=40143,7 MB | Capacity=64 states
[16:55:23] [DSP-SYNC] Detached in 30,49ms (RT=ACK, Stretcher=ACK)
[16:55:23] [DSP-SYNC] Detached in 39,84ms (RT=ACK, Stretcher=ACK)
[16:55:23] Status: Ready
[16:55:28] Status: Playlist Loaded
[16:55:29] Status: Importing stem...
[16:55:29] [DSP-SYNC] Detached in 43,00ms (RT=ACK, Stretcher=ACK)
[16:55:29] [IO-DECODE] Loaded: "drones.flac" | Track 0 | 48000Hz - 48000Hz (Ratio=1,000) | Frames=5554176 | Status=OK
[16:55:29] Status: Stem Imported Successfully
[16:55:32] Status: Importing stem...
[16:55:32] [DSP-SYNC] Detached in 42,98ms (RT=ACK, Stretcher=ACK)
[16:55:32] [IO-DECODE] Loaded: "drone_granular_v5.wav" | Track 0 | 48000Hz - 48000Hz (Ratio=1,000) | Frames=1440000 | Status=OK
[16:55:36] Status: Stem Imported Successfully
[16:55:40] [DSP-SYNC] Detached in 31,56ms (RT=ACK, Stretcher=ACK)
[16:55:41] [DSP-SYNC] Detached in 35,82ms (RT=ACK, Stretcher=ACK)
[16:55:43] Status: Playlist Loaded
[16:55:45] Status: Importing stem...
[16:55:45] [MEM-GATE] Dynamic History Calc: Floor=2GB | Base=3423,0 MB | Remaining=40521,5 MB | Capacity=64 states
[16:55:45] [DSP-SYNC] Detached in 34,50ms (RT=ACK, Stretcher=ACK)
[16:55:45] [MEM-TEARDOWN] Deferred release: Pointer=0x7f1c88387990
[16:55:45] [DSP-SYNC] Detached in 45,13ms (RT=ACK, Stretcher=ACK)
[16:55:46] [IO-DECODE] Loaded: "Atmospheric Ambient Pad Backing Track in C Major.flac" | Track 0 | 44100Hz - 48000Hz (Ratio=1,088) | Frames=29059866 | Status=OK
[16:56:03] Status: Stem Imported Successfully
[16:56:16] [DSP-SYNC] Detached in 36,95ms (RT=ACK, Stretcher=ACK)
[16:58:03] Status: Canvas cropped to recording length
[16:58:15] Status: PLAYING
[16:58:19] [DSP-SYNC] Detached in 41,23ms (RT=ACK, Stretcher=ACK)
[16:58:19] Status: Ready
[16:58:32] [DSP-SYNC] Detached in 33,69ms (RT=ACK, Stretcher=ACK)
[16:59:07] Status: Canvas cropped to recording length
[16:59:19] [DSP-SYNC] Detached in 28,33ms (RT=ACK, Stretcher=ACK)
[17:00:23] Status: Autosaving in background...
[17:00:23] [DSP-SYNC] Detached in 30,51ms (RT=ACK, Stretcher=ACK)
[17:00:24] Status: Autosave Complete
[17:03:47] Video Engine cleanly shutdown.
[17:03:47] Audio engine cleanly shut down.