Skip to content

Instantly share code, notes, and snippets.

@Fingercomp
Created December 28, 2023 16:06
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 Fingercomp/aae49f0b914271b86b66859eae5b4d34 to your computer and use it in GitHub Desktop.
Save Fingercomp/aae49f0b914271b86b66859eae5b4d34 to your computer and use it in GitHub Desktop.
#!/usr/bin/env bash
set -eu
declare -a NOTES
NOTES=(
G2 A2 D3
G2 A2 D3
G2 B2 D3
G3 E3 D3
E3 G3 B3
E3 G3 B3
E3 G3 C4
D4 A3 B3
E4 G4 A4
E4 G4 A4
C5 A4 B4
G4 E4 C4
D4 E4 A4
G4 E4 C4
D4 Ds4 G4
E5 E4 E3
A4 C5 E5
A4 C5 E5
G5 D5 C5
E5 A4 C5
Fs5 A5 C6
Fs5 A5 C6
E6 D6 A5
C6 A5 Fs5
G5 C6 D6
G5 C6 D6
G6 E6 Fs6
D6 C6 A5
C6 E6 A6
C7 A6 G6
B6 Fs6 A6
E6 E4 E2
)
declare -A FREQS
FREQS=(
[C]=262
[Cs]=277
[Df]=277
[D]=294
[Ds]=311
[Ef]=311
[E]=330
[F]=349
[Fs]=370
[Gf]=370
[G]=392
[Gs]=415
[Af]=415
[A]=440
[As]=466
[Bf]=466
[B]=494
)
CMD=""
for NOTE in ${NOTES[*]}; do
BASE_NOTE=${NOTE:0:1}
OCTAVE=${NOTE: -1:1}
if [ ${#NOTE} -eq 3 ]; then
BASE_NOTE=${NOTE:0:2}
fi
# raise everything by an octave
FREQ=$(calc -p "${FREQS[$BASE_NOTE]} * 2^($OCTAVE - 3)")
echo "$NOTE -> $FREQ"
if [ "${#CMD}" -eq 0 ]; then
CMD="beep"
else
CMD="$CMD -n"
fi
# ~ 230 bpm
CMD="$CMD -f $FREQ -l 130"
done
while true; do
$CMD
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment