Skip to content

Instantly share code, notes, and snippets.

@idrysdale
Created August 13, 2018 07:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save idrysdale/506966c86c653a675adcd37d940d0172 to your computer and use it in GitHub Desktop.
Save idrysdale/506966c86c653a675adcd37d940d0172 to your computer and use it in GitHub Desktop.
#!/bin/sh -eux
echo What YouTube song would you like? [Paste the URL]
read youtube_url
youtube-dl -o "tmp/temp.%(ext)s" --extract-audio --audio-format mp3 "${youtube_url}$"
sox tmp/temp.mp3 tmp/temp-resample.mp3 rate 48000
sox --norm=-0.1 tmp/temp-resample.mp3 tmp/temp-normal.mp3
DURATION=$(sox tmp/temp-normal.mp3 -n stat 2>&1 | sed -n 's#^Length (seconds):[^0-9]*\([0-9.]*\)$#\1#p')
sox --norm=-0.1 src/jingle.wav tmp/jingle.wav
echo How long are the reps [30, 45 or 60 seconds?]
read rep_duration
NUMBER_OF_REPS_WE_HAVE=$(echo "$DURATION / $rep_duration" | bc)
echo "🔁 We've got ${NUMBER_OF_REPS_WE_HAVE} repeats in the song!"
if (( NUMBER_OF_REPS_WE_HAVE > 4 )); then
for i in 1 2 3 4 5
do
LAST_REP="$(($i-1))"
REP_TIME_START="$(($LAST_REP*$rep_duration))"
FILE_TO_SPLICE[i]="tmp/rep-${rep_duration}-${i}.mp3"
sox tmp/temp-normal.mp3 "${FILENAME[i]}" trim "${REP_TIME_START}" "${rep_duration}"
done
else
for ((i=1;i<=$NUMBER_OF_REPS_WE_HAVE;i++))
do
LAST_REP="$(($i-1))"
REP_TIME_START="$(($LAST_REP*$rep_duration))"
FILENAME[i]="tmp/rep-${rep_duration}-${i}.mp3"
FILE_TO_SPLICE[i]="${FILENAME[$i]}"
sox tmp/temp-normal.mp3 "${FILENAME[i]}" trim "${REP_TIME_START}" "${rep_duration}"
done
REMAINING_REPS=$(echo "6 - $NUMBER_OF_REPS_WE_HAVE" | bc)
for ((j=1;j<$REMAINING_REPS;j++))
do
SPLICE_COUNTER=$(echo "$NUMBER_OF_REPS_WE_HAVE + $j" | bc)
TMP_COUNTER=$(echo "${SPLICE_COUNTER} % ${NUMBER_OF_REPS_WE_HAVE}" | bc)
FILE_TO_SPLICE[$SPLICE_COUNTER]="${FILENAME[$TMP_COUNTER]}"
done
fi
sox "${FILE_TO_SPLICE[1]}" tmp/jingle.wav "${FILE_TO_SPLICE[2]}" tmp/jingle.wav "${FILE_TO_SPLICE[3]}" tmp/jingle.wav "${FILE_TO_SPLICE[4]}" tmp/jingle.wav "${FILE_TO_SPLICE[5]}" tmp/jingle.wav "${rep_duration}-complete.mp3"
rm tmp/*
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment