xxwhirlpool
·
2026-04-09
music4coding
1#!/usr/bin/env bash
2#
3# mixtapes from musicForProgramming.net
4# https://musicforprogramming.net
5
6# this is not all of the mixes cuz i'm lazy
7
8declare -A mixtapes=(
9 ["1"]="https://datashat.net/music_for_programming_1-datassette.mp3"
10 ["2"]="https://datashat.net/music_for_programming_2-sunjammer.mp3"
11 ["3"]="https://datashat.net/music_for_programming_3-datassette.mp3"
12 ["4"]="https://datashat.net/music_for_programming_4-com_truise.mp3"
13 ["5"]="https://datashat.net/music_for_programming_5-abe_mangger.mp3"
14 ["6"]="https://datashat.net/music_for_programming_6-gods_of_the_new_age.mp3"
15 ["7"]="https://datashat.net/music_for_programming_7-tahlhoff_garten_and_untitled.mp3"
16 ["8"]="https://datashat.net/music_for_programming_8-connectedness_locus.mp3"
17 ["9"]="https://datashat.net/music_for_programming_9-datassette.mp3"
18 ["10"]="https://datashat.net/music_for_programming_10-unity_gain_temple.mp3"
19 ["11"]="https://datashat.net/music_for_programming_11-miles_tilmann.mp3"
20 ["12"]="https://datashat.net/music_for_programming_12-forgotten_light.mp3"
21 ["13"]="https://datashat.net/music_for_programming_13-matt_whitehead.mp3"
22 ["14"]="https://datashat.net/music_for_programming_14-tahlhoff_garten_and_untitled.mp3"
23 ["15"]="https://datashat.net/music_for_programming_15-dan_adeyemi.mp3"
24 ["16"]="https://datashat.net/music_for_programming_16-silent_stelios.mp3"
25 ["17"]="https://datashat.net/music_for_programming_17-graphplan.mp3"
26 ["18"]="https://datashat.net/music_for_programming_18-konx_om_pax.mp3"
27 ["19"]="https://datashat.net/music_for_programming_19-hivemind.mp3"
28 ["20"]="https://datashat.net/music_for_programming_20-uberdog.mp3"
29)
30
31# little header text graphic to show before playback
32
33gum_echo() {
34 top=$(gum style --bold --foreground "#a6d189" --border none --width 50 --margin "1 0" --align center "musicForProgramming();")
35 bottom=$(gum style --foreground "#f4b8e4" --border none --width 50 --margin "1 0" --align center "$@")
36
37 joingum=$(gum join --vertical --align center "$top" "$bottom")
38 all=$(gum style --border-foreground "#99d1db" --border double --width 50 --padding "0 0" --align center "$joingum")
39
40 gum join --vertical "$all"
41}
42
43random_mix() {
44 length="${#mixtapes[@]}"
45 random_index=$(( SRANDOM % length ))
46 mpv "${mixtapes[$random_index]}"
47}
48
49# run the script
50
51choice() {
52 choose=$(gum choose --header "mixtapes" "random" {1..20} --height 20)
53 case "$choose" in
54 random) gum_echo "random!" && random_mix;;
55 1) gum_echo "datasette" && mpv "${mixtapes['1']}";;
56 2) gum_echo "sunjammer" && mpv "${mixtapes['2']}";;
57 3) gum_echo "datassette" && mpv "${mixtapes['3']}";;
58 4) gum_echo "com truise" && mpv "${mixtapes['4']}";;
59 5) gum_echo "abe mangger" && mpv "${mixtapes['5']}";;
60 6) gum_echo "gods of the new age" && mpv "${mixtapes['6']}";;
61 7) gum_echo "tahlhoff garten + untitled" && mpv "${mixtapes['7']}";;
62 8) gum_echo "connectedness locus" && mpv "${mixtapes['8']}";;
63 9) gum_echo "datassette" && mpv "${mixtapes['9']}";;
64 10) gum_echo "unity gain temple" && mpv "${mixtapes['10']}";;
65 11) gum_echo "miles tilmann" && mpv "${mixtapes['11']}";;
66 12) gum_echo "forgotten light" && mpv "${mixtapes['12']}";;
67 13) gum_echo "matt whitehead" && mpv "${mixtapes['13']}";;
68 14) gum_echo "tahlhoff garten + untitled" && mpv "${mixtapes['14']}";;
69 15) gum_echo "dan adeyemi" && mpv "${mixtapes['15']}";;
70 16) gum_echo "silent stelios" && mpv "${mixtapes['16']}";;
71 17) gum_echo "graphplan" && mpv "${mixtapes['17']}";;
72 18) gum_echo "konx om par" && mpv "${mixtapes['18']}";;
73 19) gum_echo "hivemind" && mpv "${mixtapes['19']}";;
74 20) gum_echo "uberdog" && mpv "${mixtapes['20']}";;
75 esac
76}
77
78choice