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.
- 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
You need a Rust toolchain with cargo installed.
Install from crates.io:
cargo install asakInstall from this repository:
cargo install --path .On Linux, you will usually need audio development packages for cpal:
sudo apt install libasound2-dev libjack-devIf you want JACK support explicitly:
cargo install --path . --features jackRun the app:
asakRun it from source:
cargo runWhen asak starts, you choose between three modes:
PlayRecSettings
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 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 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.
Up/Down: move between modes on the mode selectorEnter: open the selected modeEsc: return to the mode selectorq: quit
Format the project:
cargo fmtRun Clippy with warnings denied:
cargo clippy --all-targets -- -D warningsBuild a release binary:
cargo build --releaseThe build script also generates shell completions and man pages into target/completions and target/man.
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
Issues and pull requests are welcome.