From 19120d4f9761c67d99ed1ce3da6084b83f5a49c9 Mon Sep 17 00:00:00 2001 From: srdusr Date: Sat, 30 Aug 2025 19:22:59 +0200 Subject: Linux-specific dotfiles --- linux/home/.scripts/spec | 73 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100755 linux/home/.scripts/spec (limited to 'linux/home/.scripts/spec') diff --git a/linux/home/.scripts/spec b/linux/home/.scripts/spec new file mode 100755 index 0000000..19810fc --- /dev/null +++ b/linux/home/.scripts/spec @@ -0,0 +1,73 @@ +#!/usr/bin/env bash + +# Created By: srdusr +# Created On: Wed 18 Oct 2023 20:19:03 CAT +# Project: Create Spectrograms of audio files + +# Dependencies: sox + +# Define the timestamp function +timestamp() { + date +%Y%m%d%H%M%S +} + +spec() { + + if [[ $# -eq 0 ]]; then + echo "No audio files provided." + return + fi + + local outdir + + if [[ -d "$HOME/pictures" ]]; then + outdir="$HOME/pictures/spectrograms" + elif [[ -d "$HOME/Pictures" ]]; then + outdir="$HOME/Pictures/Spectrograms" + elif [[ -d "$HOME/Images" ]]; then + outdir="$HOME/Images/Spectrograms" + else + outdir="./spectrograms" # Save to the current directory if none of the expected directories exist + fi + + for file in "$@"; do + if [[ -f "$file" ]]; then + local filename + filename=$(basename "$file") + local filename_no_extension="${filename%.*}" + local target_dir="$outdir" + local outname="$target_dir/sox-spec-$(timestamp)-${filename_no_extension}.png" + + if [[ ! -d "$target_dir" ]]; then + mkdir -p "$target_dir" # Create the directory if it doesn't exist + fi + + sox "$file" -S -n spectrogram -o "$outname" + + # Add the generated spectrogram file name to the array + spectrogram_files+=("$outname") + else + echo "File not found: $file" + fi + done + + if [[ ${#} -gt 0 ]]; then + read -p "Do you want to open the spectrogram(s)? (y/n): " open_choice + case "$open_choice" in + [Yy]) + for file in "${spectrogram_files[@]}"; do + xdg-open "$file" # Open the spectrogram images generated from the provided audio files + done + ;; + [Nn]) + echo "Not opening the spectrogram(s)." + ;; + *) + echo "Invalid choice. Not opening the spectrogram(s)." + ;; + esac + fi +} + +# Call the spec function with provided arguments +spec "$@" -- cgit v1.2.3