Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/maxmarsc/audeye
CLI tool to visualize the content of an audio file
https://github.com/maxmarsc/audeye
audio cli dsp metadata rust spectrogram wav waveform
Last synced: 3 months ago
JSON representation
CLI tool to visualize the content of an audio file
- Host: GitHub
- URL: https://github.com/maxmarsc/audeye
- Owner: maxmarsc
- License: mit
- Created: 2022-03-25T13:17:33.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2024-02-24T14:00:11.000Z (10 months ago)
- Last Synced: 2024-09-29T20:41:59.545Z (3 months ago)
- Topics: audio, cli, dsp, metadata, rust, spectrogram, wav, waveform
- Language: Rust
- Homepage:
- Size: 266 KB
- Stars: 36
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Audeye
π π» ποΈAudio content visualization tool![Demo](.github/images/audeye_0_2_0.gif)
Audeye is a terminal tool to visualize audio content, written in Rust
## Features
- wav / aif / flac / ogg-vorbis and many more (see : [libsndfile format compatibility v1.0.31](https://libsndfile.github.io/libsndfile/formats.html))
- mono / stereo / 5.1 / 7.1 ... (up to 9 channels)
- Waveform peak & RMS visualizer
- Spectrogram visualizer
- Signal normalization
- Zoom and move inside both visualizers
- Metadata display## Bindings
- `space` : display bindings
- `left arrow` / `right arrow` : navigate through panels
- `j` / `k` : zoom out / in
- `h` / `l` : move left / right
- [`0`-`9`] : activate / deactivate display of the corresponding channel
- `Esc` : reset channel layout## CLI arguments
- `-n` : normalize the audio signal before displaying it (not channel aware)
- `--fft-window-size`
- `--fft-window-type` : `hanning` / `hamming` / `blackman` / `uniform`
- `--fft-overlap`
- `--fft-db-threshold` : minimum energy level to consider (in dB)
- `--fft-padding-type` : `zeros` / `loop` / `ramp`### Paddings types
The padding type determine how to fill the sides of each FFT window when at the
very edges of the audio content
- Zeros : fill with zeros
- Ramp : fill with zeros and a small amplitude ramp to match the last/next sample
- Loop : fill with the end/beginning of the audio file# Dependencies
Audeye rely on Rust bindings to [libsndfile](https://github.com/libsndfile/libsndfile)## Debian / Ubuntu
```
apt-get install libsndfile1-dev
```# Installation
```
cargo install audeye
```# Build
1. [Install Rust](https://www.rust-lang.org/tools/install)
2. Install [libsndfile](#dependencies)
2. Then run `cargo run `## Development
Please consider audeye is still in early development, feedbacks are very welcome### Requirements
- [cargo](https://doc.rust-lang.org/cargo/getting-started/installation.html)
- [libsndfile](#dependencies)
- [precommit](https://pre-commit.com/#install)
- [clippy](https://github.com/rust-lang/rust-clippy)
- [rustfmt](https://github.com/rust-lang/rustfmt)### Contributing
If you wanna contribute, either make a PR (for small changes/adds) or contact me
on twitter / discord if you wanna get involved more deeply
- [Twitter](https://twitter.com/Groumpf_)
- [Discord](https://discordapp.com/users/Groumpf#2353)### Milestone
- [x] Waveform view
- [x] Spectogram view
- [x] Channels view navigation
- [x] Channel naming (stereo, 2.1, 5.1, 7.1 ...)
- [x] Zoom in/out
- [x] Metadata view
- [x] RMS and Peak in waveform view
- [x] Option : normalize
- [x] Option : FFT windows size and overlap
- [x] Option : FFT dB threshold
- [x] Option : FFT window type
- [x] Option : FFT side smoothing
- [x] Unit tests
- [ ] Optionnal labels on graphs
- [ ] Option : FFT logarithmic scale
- [ ] Option : Waveform envelope ?
- [ ] More audio format support