diff --git a/split_tracks b/split_tracks index 6136204..cc44391 100755 --- a/split_tracks +++ b/split_tracks @@ -16,9 +16,9 @@ function make_drum() { echo sox -v "$volume_reduction_factor" "$drum_track" "$quiet_drums" sox -v "$volume_reduction_factor" "$drum_track" "$quiet_drums" - echo sox -m "${no_drums[@]}" "$quiet_drums" "$mixed_wav" - sox -m "${no_drums[@]}" "$quiet_drums" "$mixed_wav" - rm -r "$quiet_drums" + echo sox -m "${nodrums[@]}" "$quiet_drums" "$mixed_wav" + sox -m "${nodrums[@]}" "$quiet_drums" "$mixed_wav" + rm "$quiet_drums" echo opusenc --comp 10 --downmix-stereo \ --title "'${tags[TITLE]}'" --artist "'${tags[ARTIST]}'" \ --album "'${tags[ALBUM]}'" --tracknumber "'${tags[TRACKNUMBER]}'" \ @@ -30,6 +30,22 @@ function make_drum() { rm "$mixed_wav" } +function make_drumonly() { + mkdir -p "${dest_dir['drums only']}" + echo echo dest dir: ${dest_dir['drums only']} + echo drum track: "$drum_track" + # final_opus="$(sed 's/\.wav$/.opus/' <<< "$drum_track")" + final_opus="${dest_dir['drums only']}/$(sed 's/\.flac$/.opus/' <<< "$file_name")" + echo opusenc --comp 10 --downmix-stereo \ + --title "'${tags[TITLE]}'" --artist "'${tags[ARTIST]}'" \ + --album "'${tags[ALBUM]}'" --tracknumber "'${tags[TRACKNUMBER]}'" \ + --date "'${tags[DATE]}'" "'$drum_track'" "'$final_opus'" + opusenc --comp 10 --downmix-stereo \ + --title "${tags[TITLE]}" --artist "${tags[ARTIST]}" \ + --album "${tags[ALBUM]}" --tracknumber "${tags[TRACKNUMBER]}" \ + --date "${tags[DATE]}" "$drum_track" "$final_opus" +} + function make_karaoke() { mkdir -p "${dest_dir[karaoke]}" quiet_vocals="${actual_work_dir}/quiet vocals.wav" @@ -38,8 +54,9 @@ function make_karaoke() { final_opus="$(sed 's/\.wav$/.opus/' <<< "$mixed_wav")" echo sox -v "$volume_reduction_factor" "$vocal_track" "$quiet_vocals" sox -v "$volume_reduction_factor" "$vocal_track" "$quiet_vocals" - sox -m "${karaoke}" "$quiet_vocals" "$mixed_wav" - rm -r "$quiet_vocals" + echo sox -m "${karaoke[@]}" "$quiet_vocals" "$mixed_wav" + sox -m "${karaoke[@]}" "$quiet_vocals" "$mixed_wav" + rm "$quiet_vocals" echo opusenc --comp 10 --downmix-stereo \ --title "'${tags[TITLE]}'" --artist "'${tags[ARTIST]}'" \ --album "'${tags[ALBUM]}'" --tracknumber "'${tags[TRACKNUMBER]}'" \ @@ -51,17 +68,19 @@ function make_karaoke() { rm "$mixed_wav" } -volume_reduction_factor='0.3' +volume_reduction_factor='0.2' src_library="${HOME}/flac" work_dir="${HOME}/split" actual_work_dir="${work_dir}/htdemucs_ft" -type -P 'demucs' || ( +type -P 'demucs' &>/dev/null || ( printf 'No demucs in path.\nInstall with `pip install demucs` or something.\n\n' >&2 exit 1 ) find "$src_library" -type f -name '*.flac' | while read -r file; do + # if find "$work_dir" -type f &>/dev/null; then rm -rf "${work_dir}"/*; fi + file='/home/luket/flac/Red Hot Chili Peppers/1991-09-24 Blood Sugar Sex Magik/07 Mellowship Slinky In B Major.flac' echo $file # file is full original path + filename src_dir="$(dirname "$file")" @@ -70,9 +89,17 @@ find "$src_library" -type f -name '*.flac' | while read -r file; do unset dest_dir declare -A tags + echo tag time while read -r line; do + echo line: $line tag_type="$(cut -d= -f1 <<< "$line")" tag_val="$(cut -d= -f2- <<< "$line")" + [[ "$tag_type" == 'ReleaseDate' ]] && tag_type='DATE' + [[ "$tag_type" == 'Year' ]] && tag_type='YEAR' + [[ "$tag_type" == 'Artist' ]] && tag_type='ARTIST' + [[ "$tag_type" == 'Title' ]] && tag_type='TITLE' + [[ "$tag_type" == 'Tracknumber' ]] && tag_type='TRACKNUMBER' + [[ "$tag_type" == 'Album' ]] && tag_type='ALBUM' tags[$tag_type]="$tag_val" done < <(metaflac --list --block-type=VORBIS_COMMENT "$file" | grep 'comment\[' | cut -d: -f2- | sed 's/^ //') @@ -80,7 +107,7 @@ find "$src_library" -type f -name '*.flac' | while read -r file; do ensure=( TRACKNUMBER TITLE DATE ALBUM ARTIST ) for tag_type in "${ensure[@]}"; do if [[ -z "${tags[$tag_type]}" ]]; then - $tags[$tag_type]="missing $tag_type" + tags[$tag_type]="missing $tag_type" fi done @@ -99,15 +126,12 @@ find "$src_library" -type f -name '*.flac' | while read -r file; do for file in "${files[@]}"; do echo file: "$file" if ! grep -Eq 'drums\.wav$' <<< "$file"; then - echo no drums.wav nodrums+=("$file") else - echo yes drums.wav drum_track="$file" fi if ! grep -Eq 'vocals\.wav$' <<< "$file"; then - echo no vocal karaoke+=("$file") else vocal_track="$file" @@ -121,6 +145,7 @@ find "$src_library" -type f -name '*.flac' | while read -r file; do printf 'No drum track. Will not create a drum practice file.\n' else make_drum + make_drumonly fi for i in "${karaoke[@]}"; do printf 'Karaoke practice: %s\n' "$i"