Soundscope β a CLI audio file analyzer tool.
Soundscope is a crossplatform CLI tool for analyzing audio files.
β¨ Features
- π€ Analysis of both audio files and microphone input in real-time.
- π FFT Spectrum β view the frequency distribution.
- π Waveform Display β see the amplitude over time.
- π LUFS Metering and True Peak β measure loudness precisely.
- π¨ Customizable Theme β change the color scheme to your liking.
π Installation
Using Cargo
cargo install soundscope
or
cargo install --git https://github.com/bananaofhappiness/soundscope
Precompiled Binaries
Grab the latest release for your platform from the Releases page.
π§ Usage
- Run the tool using
soundscopecommand - Open the explorer by pressing
E. - Navigate to your audio file using arrow keys or
H,J,K,L(Vim-style navigation). - Press
Enterto select it. - Play or pause audio by pressing
Space. - Turn Mid and Side Frequencies on/of by pressing
MandSrespectively. - Press
Lto check LUFS andFto check frequencies. - Use the right and left arrow keys to move playhead 5 seconds forward or backward.
- Alternatively, press
Cto Change input mode from audio file to microphone. - In microphone mode, choose Device using
D. - When you are done, press
Qto quit. - Change Theme by pressing
T.
π₯ Demo Video
Watch the demo on YouTube.
π¨ Creating a custom theme
The theme is set in .theme file which must be placed in {YOUR_CONFIG_DIRECTORY}/soundscope directory. Under the hood it is a simple .toml file. Here is an example theme (which is default for the app) containing all possible variables:
[]
= "Black"
# It is default value for everything that is not a background
= "Yellow"
# Color used to highlight corresponding characters
# Like highlighting L in LUFS to let the user know
# that pressing L will open the LUFS meter
= "LightRed"
[]
= "Yellow"
= "Yellow"
= "LightRed "# if not set, default is LightRed
# Current playing time and total duration
= "Yellow"
# Buttons like <-, +, -, ->
= "Yellow"
# Color of a button when it's pressed
= "LightRed"
= "Yellow"
[]
= "Yellow"
# Frequencies and LUFS tabs text
= "Yellow"
= "Yellow"
= "Yellow"
= "Yellow"
= "LightGreen"
[]
= "Yellow"
= "Yellow"
# Frequencies and LUFS tabs text
= "Yellow"
# Text color on the left
= "Yellow"
# Color of the numbers on the left
= "Yellow"
[]
= "Black"
= "Yellow"
[]
= "Black"
= "Yellow"
= "LightRed"
= "Yellow"
= "LightRed"
[]
= "Black"
= "Yellow"
= "Yellow"
Only global foreground and global background colors are mandatory. You can pass the HEX color code or use one of the predefined colors below:
- Black
- Red
- Green
- Yellow
- Blue
- Magenta
- Cyan
- Gray
- DarkGray
- LightRed
- LightGreen
- LightYellow
- LightBlue
- LightMagenta
- LightCyan
- White
Color separators -, _, and are supported and names are case insensitive. For example, Light-blue or light_blue or light Blue are all valid.
After creating a theme into .theme file and placing it into {YOUR_CONFIG_DIRECTORY}/soundscope, press T to open up the theme selection list and choose yours.
π Known Issues
- Microphone input analysis is slow on macOS (at least on mine).
- The programm may crash while opening files with length < 15 sec.
- After the playhead reaches the end of the file, the file needs to be reopened in order to be played again. This isn't a bug, but fixing it would be a useful qualityβofβlife (QoL) improvement.
- It works fine with stereo tracks but was not tested with tracks that have different number of channels.
π£ Roadmap
- Zooming the Waveform in and out.
- Custom themes support.
π€ Contributing
Pull Requests, Issues and Suggestions are welcome!
π License
This project is licensed under the MIT License β see LICENSE for details.
β Support
If you like soundscope and want to support its development:
Your support helps keep this project alive β€οΈ