/audeye

CLI tool to visualize the content of an audio file

Primary LanguageRustMIT LicenseMIT

Audeye

🔊 💻 👁️Audio content visualization tool

Demo

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)
  • 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

Debian / Ubuntu

apt-get install libsndfile1-dev

Installation

cargo install audeye

Build

  1. Install Rust
  2. Install libsndfile
  3. Then run cargo run <AUDIO_FILE_PATH>

Development

Please consider audeye is still in early development, feedbacks are very welcome

Requirements

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

Milestone

  • Waveform view
  • Spectogram view
  • Channels view navigation
  • Channel naming (stereo, 2.1, 5.1, 7.1 ...)
  • Zoom in/out
  • Metadata view
  • RMS and Peak in waveform view
  • Option : normalize
  • Option : FFT windows size and overlap
  • Option : FFT dB threshold
  • Option : FFT window type
  • Option : FFT side smoothing
  • Unit tests
  • Optionnal labels on graphs
  • Option : FFT logarithmic scale
  • Option : Waveform envelope ?
  • More audio format support