commit 8bf4c4a567b82c10525d674328bc9dc020945d8a Author: prova <2+prova@noreply.localhost> Date: Mon Jul 6 18:52:33 2026 +0000 Upload files to "/" diff --git a/resampletocdq.sh b/resampletocdq.sh new file mode 100644 index 0000000..190abf5 --- /dev/null +++ b/resampletocdq.sh @@ -0,0 +1,80 @@ +#!/bin/bash + +# ========================================================= +# Script for resampling audio files to cd resolution +# and automatically adjusting the peak level +# +# Dependencies: SoX, flac, bash, awk +# ========================================================= + +function printHelp() { + echo 'Usage: cmd [OPTION]... FILES' + echo 'Options:' + echo ' --help (-h): Print this page' + echo ' --no-gain-adjustment (-ng): Disable gain adjustment, no peak level changes' + #echo ' ' + #echo ' ' + #echo ' ' +} + +cmd=sox_ng +iterations=2 +gainAdjustment=true +destination='resampled' +gain='0.00' +safeGuard='0.00' +targetLevel='0.01' # -0.01 dB +files=() + +if [[ -z "${*}" ]]; then + echo 'No arguments given.' + printHelp + exit +fi + +for argument in "${@}"; do + if [[ "${argument}" == '-h' ]] || [[ "${argument}" == '--help' ]]; then + printHelp + exit + elif [[ "${argument}" == '--no-gain-adjustment' ]] || [[ "${argument}" == '-ng' ]]; then + echo 'Disabling gain adjustment...' + iterations=1 + gainAdjustment=false + elif [[ ! -r "${argument}" ]]; then + echo "The argument or filepath provided \`${argument}\` does not exist, quitting..." + exit + else + files+=("${argument}") + fi +done + +mkdir -vp "${destination}" + +for (( i = 0 ; i < iterations ; i++ )); do + for file in "${files[@]}"; do + cmdOutput="$("${cmd}" -DV4 "${file}" -b 16 -t flac "resampled/${file}" gain "${safeGuard}" rate -u -L -d 33 -b 96 44100 gain "${gain}" 2>&1)" + clipping="$(echo "${cmdOutput}" | grep -i 'clipped')" + + echo "${cmdOutput}" + if [[ -n "${clipping// /}" ]]; then + echo 'Audio clipped, resetting...' + + safeGuard="$(echo "${safeGuard} 0.30" | awk '{ print $1 - $2 }')" + gain='0.00' + i=-1 + break + fi + done + + if [[ "${gainAdjustment}" == true ]] && [[ "${i}" != -1 ]]; then + peakLevel="$(cd "${destination}" && "${cmd}" "${files[@]}" -n stats 2>&1 | grep 'Pk lev' | awk '{ print $4 }')" + if [[ -z "${peakLevel// /}" ]]; then + echo 'Error invoking SoX, check dependencies and audio files' + exit + fi + echo -e "\nTracks peak level: ${peakLevel} dB" + + gain="$(echo "${targetLevel} ${peakLevel} ${gain}" | awk '{ print $3 + (($1 + $2) * -1) }')" + echo "Applied gain: ${gain} dB" + fi +done diff --git a/tagflac.sh b/tagflac.sh new file mode 100644 index 0000000..2060f5e --- /dev/null +++ b/tagflac.sh @@ -0,0 +1,42 @@ +#!/bin/bash + +# Controllo che esistano file FLAC nella cartella +shopt -s nullglob +files=(*.flac) + +if [ ${#files[@]} -eq 0 ]; then + echo "Nessun file .flac trovato nella cartella." + exit 1 +fi + +read -p "Album: " album +read -p "Artista: " artista +read -p "Data: " data + +#Rimuove eventuali +metaflac --remove-all-tags *.flac +#set tag +metaflac --set-tag="ARTIST=$artista" --set-tag="ALBUM=$album" --set-tag="DATE=$data" *.flac + +track=1 + +for file in "${files[@]}"; do + echo "----------------------------------------" + echo "File: $file" + + read -p "Titolo per questo brano: " title + + # numero traccia + tracknumber=$(printf "$track") + + # Aggiunge i nuovi tag + metaflac --set-tag="TRACKNUMBER=$tracknumber" \ + --set-tag="TITLE=$title" "$file" + + echo "Tag aggiornati: TRACKNUMBER=$tracknumber, TITLE=$title" + + ((track++)) +done + +echo "----------------------------------------" +echo "Operazione completata."