Skip to content

FMotalleb/nu_plugin_audio_hook

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

72 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎵 nu_plugin_audio_hook

A Nushell plugin for generating and playing sounds. Supports beeping, tone generation, metadata manipulation, and playback for multiple audio formats.


✨ Features

  • sound beep → Play a simple beep sound.
  • sound make → Generate a noise with a given frequency and duration.
  • sound meta → Retrieve metadata (duration, artist, album, etc.) from an audio file.
  • sound meta set → Modify ID3 metadata frames in an audio file. More about ID3.
  • sound play → Play an audio file. By default, supports FLAC, WAV, MP3, and OGG. Use the all-decoders feature to enable AAC and MP4 playback.

📌 Usage

Generate a simple noise

sound make 1000 200ms

Generate a noise sequence

[ 300.0, 500.0, 1000.0, 400.0, 600.0 ] | each { |it| sound make $it 150ms }

Play an audio file (first 3 seconds only)

sound play audio.mp3 -d 3sec

Retrieve metadata from an audio file

sound meta audio.mp4

Example Output:

╭──────────────┬────────────────────────────╮
│ duration     │ 4min 5sec 551ms 20µs 408ns │
│ artist       │ SINGER                     │
│ title        │ TITLE                      │
│ album        │ ALBUM                      │
│ album_artist │ SINGER                     │
│ track_no     │ 1                          │
│ total_tracks │ 1                          │
╰──────────────┴────────────────────────────╯

Modify ID3 metadata (change the artist tag)

sound meta set audio.mp3 -k TPE1 -v new-artist

Play an MP3 file using its metadata duration

sound meta audio.mp4 | sound play audio.mp3 -d $in.duration

List all available ID3 frame names

sound meta list

🔧 Installation

🚀 Recommended: Using nupm

git clone https://github.com/FMotalleb/nu_plugin_audio_hook.git  
nupm install --path nu_plugin_audio_hook -f  

🛠️ Manual Compilation

git clone https://github.com/FMotalleb/nu_plugin_audio_hook.git  
cd nu_plugin_audio_hook  
cargo build -r --features=all-decoders  
plugin add target/release/nu_plugin_audio_hook  

📦 Install via Cargo (using git)

cargo install --git https://github.com/FMotalleb/nu_plugin_audio_hook.git --features=all-decoders  
plugin add ~/.cargo/bin/nu_plugin_audio_hook  

📦 Install via Cargo (crates.io) Not Recommended

Since I live in Iran and crates.io often restricts package updates, the version there might be outdated.

cargo install nu_plugin_audio_hook --features=all-decoders  
plugin add ~/.cargo/bin/nu_plugin_audio_hook  

🔍 Supported Features

You can enable specific features when compiling or installing:

  • full → Enables all features below.
  • flac (default) → FLAC format support.
  • vorbis (default) → OGG Vorbis support.
  • wav (default) → WAV format support.
  • minimp3 → MP3 decoding.
  • symphonia-all → Enables all Symphonia-based decoders:
    • symphonia-aac → AAC decoding.
    • symphonia-flac → FLAC decoding.
    • symphonia-isomp4 → MP4 (audio) decoding.
    • symphonia-mp3 (default) → MP3 decoding.
    • symphonia-vorbis → OGG Vorbis decoding.
    • symphonia-wav → WAV decoding.