asak
April 11, 2026 ยท View on GitHub
asak is a terminal audio tool written in Rust. It gives you a keyboard-driven TUI for browsing audio files, previewing waveforms, recording new .wav files, and selecting playback and recording devices.
What It Does
- Browse and preview
wav,mp3, andoggfiles - Record
.wavfiles with a live monitor waveform - Show a full-take timeline while recording
- Display playback waveform, time, and channel meters
- Choose system input and output devices from the terminal
Install
You need a Rust toolchain with cargo installed.
Install from crates.io:
cargo install asak
Install from this repository:
cargo install --path .
On Linux, you will usually need audio development packages for cpal:
sudo apt install libasound2-dev libjack-dev
If you want JACK support explicitly:
cargo install --path . --features jack
Start
Run the app:
asak
Run it from source:
cargo run
Interface
When asak starts, you choose between three modes:
PlayRecSettings
Play
Play opens a file browser rooted at the current working directory.
- Browse folders and supported audio files
- Open a file to preview it immediately
- See the full waveform with a left-to-right playhead
- See playback time, sample rate, channels, and meters
Keys:
Up/Down: move through the browserEnter: open folder or preview fileBackspace: go to parent directorySpace: pause or resume playbackEsc: stop playback and return to mode selection
Rec
Rec records a .wav file into the current working directory.
- Type a file name in the left panel
- Press
Enterto start recording - Press
Enteragain to stop - Watch the live monitor waveform while recording
- See the full-take timeline update as the recording grows
After saving, asak returns to the mode selector and refreshes the Play browser so the new file is ready to preview.
Keys before recording starts:
Left/Right: move cursor in the filenameHome/End: jump cursorBackspace/Delete: edit filenameEnter: start recording
Keys while recording:
Enter: stop recordingEsc: leave recording mode
Settings
Settings lets you choose playback and recording devices.
- Select
Playback DeviceorRecording Device - Open the device list with
Enter - Move through devices with
Up/Down - Confirm and return with
EnterorBackspace - Refresh device discovery with
r
The system default devices are used as the default selection.
Global Keys
Up/Down: move between modes on the mode selectorEnter: open the selected modeEsc: return to the mode selectorq: quit
Development
Format the project:
cargo fmt
Run Clippy with warnings denied:
cargo clippy --all-targets -- -D warnings
Build a release binary:
cargo build --release
The build script also generates shell completions and man pages into target/completions and target/man.
Notes
asakuses the current working directory as the initial browser root- Recordings are saved into the current working directory by default
- The app runs in an alternate terminal screen while active
Contributing
Issues and pull requests are welcome.