diff options
| author | Akshay Nair <phenax5@gmail.com> | 2026-06-09 16:48:46 +0530 |
|---|---|---|
| committer | Akshay Nair <phenax5@gmail.com> | 2026-06-09 16:48:46 +0530 |
| commit | 133dacf4770c4a77c68caa7a994c76bc2f09c08b (patch) | |
| tree | a0eea396ba33e784ba4ecfedd216bd306c7ee3e3 /audio.sh | |
| parent | afaf82538d09cd77ee4f5a435b79995e88be84f5 (diff) | |
| download | sqlite-creative-coding-133dacf4770c4a77c68caa7a994c76bc2f09c08b.tar.gz sqlite-creative-coding-133dacf4770c4a77c68caa7a994c76bc2f09c08b.zip | |
Add audio generation + mario theme
Diffstat (limited to '')
| -rwxr-xr-x | audio.sh | 40 |
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" |
