aboutsummaryrefslogtreecommitdiff
path: root/audio.sh
blob: c5d3c06b43cd424376755508cf4f78208a986236 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/usr/bin/env sh

set -eu -o pipefail

[ $# -lt 1 ] && echo "Fuck" && exit 1;
AUDIO_TRACK_ID="$1"
DB="${2:-fun.db}"

db() { sqlite3 -tabs -noheader "$DB" "$@"; }

samples() {
  audio_track_id="$1"
  db "SELECT value FROM audio_track_samples WHERE audio_track_id='$audio_track_id' ORDER BY position ASC"
}

to_pcm() {
  awk '{printf "%02x\n", $1}' | xxd -r -p
}

play() {
  format="$1"
  sample_rate="$2"
  ffplay -f "$format" -ar "$sample_rate" -b:a 128K -ch_layout mono -autoexit -
}

track_info() {
  local audio_id="$1"
  db "SELECT format, sample_rate FROM audio_tracks WHERE id='$audio_id'"
}


# ## Main stuff

data="$(track_info "$AUDIO_TRACK_ID")"
format="$(echo "$data" | cut -f1)"
sample_rate="$(echo "$data" | cut -f2)"

echo "-----------$data--------"

samples "$AUDIO_TRACK_ID" | to_pcm | play "$format" "$sample_rate"