aboutsummaryrefslogtreecommitdiff
path: root/audio.sh
diff options
context:
space:
mode:
authorAkshay Nair <phenax5@gmail.com>2026-06-09 16:48:46 +0530
committerAkshay Nair <phenax5@gmail.com>2026-06-09 16:48:46 +0530
commit133dacf4770c4a77c68caa7a994c76bc2f09c08b (patch)
treea0eea396ba33e784ba4ecfedd216bd306c7ee3e3 /audio.sh
parentafaf82538d09cd77ee4f5a435b79995e88be84f5 (diff)
downloadsqlite-creative-coding-133dacf4770c4a77c68caa7a994c76bc2f09c08b.tar.gz
sqlite-creative-coding-133dacf4770c4a77c68caa7a994c76bc2f09c08b.zip
Add audio generation + mario theme
Diffstat (limited to '')
-rwxr-xr-xaudio.sh40
1 files changed, 40 insertions, 0 deletions
diff --git a/audio.sh b/audio.sh
new file mode 100755
index 0000000..c5d3c06
--- /dev/null
+++ b/audio.sh
@@ -0,0 +1,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"