Skip to content

CLI tool to visualize the content of an audio file

License

Notifications You must be signed in to change notification settings

maxmarsc/audeye

Folders and files

NameName
Last commit message
Last commit date

Latest commit

19e9f45 · Feb 24, 2024

History

90 Commits
Nov 9, 2022
Feb 24, 2024
May 2, 2022
May 2, 2022
Oct 26, 2021
Sep 2, 2022
Feb 24, 2024
May 2, 2022
Nov 9, 2022

Repository files navigation

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