ref: dcad1c92df7594f36c665aafecb20965699c46c2
dir: /bin/frequenzbohrer/
#!/bin/awk -f
# ; mkdir $home/mid
# ; for(i in $notestringsbelow) echo 2 0^$i | mst | games/midi -c > $home/mid/^$i^.pcm
function extant(v, a){
for(e in a)
if(a[e] == v)
return 1
return 0
}
function addrange(n){
i = length(roster) + 1
for(o in range){
m = n + range[o]
if(m > 0 && m <= length(note) && !extant(m, roster))
roster[i++] = m
}
}
function new(){
print "Find die noten, allied schweinhund!"
for(i in qs){
do
n = int(rand() * 10000000 % length(roster) + 1)
while(extant(roster[n], qs))
qs[i] = roster[n]
}
for(i in keys)
qs[int(rand() * 10000000 % length(qs) + 1)] = keys[i]
cmd = "cat $home/mid/^("
for(i=1; i<=length(qs); i++)
cmd = cmd note[qs[i]] ".pcm "
cmd = cmd ") >/dev/audio"
system(cmd)
}
BEGIN{
split("\
c0 c♯0 d0 d♯0 e0 f0 f♯0 g0 g♯0 a0 a♯0 b0 \
c1 c♯1 d1 d♯1 e1 f1 f♯1 g1 g♯1 a1 a♯1 b1 \
c2 c♯2 d2 d♯2 e2 f2 f♯2 g2 g♯2 a2 a♯2 b2 \
c3 c♯3 d3 d♯3 e3 f3 f♯3 g3 g♯3 a3 a♯3 b3 \
c4 c♯4 d4 d♯4 e4 f4 f♯4 g4 g♯4 a4 a♯4 b4 \
c5 c♯5 d5 d♯5 e5 f5 f♯5 g5 g♯5 a5 a♯5 b5 \
c6 c♯6 d6 d♯6 e6 f6 f♯6 g6 g♯6 a6 a♯6 b6 \
c7 c♯7 d7 d♯7 e7 f7 f♯7 g7 g♯7 a7 a♯7 b7 \
c8 c♯8 d8 d♯8 e8 f8 f♯8 g8 g♯8 a8 a♯8 b8 \
c9 c♯9 d9 d♯9 e9 f9 f♯9 g9 g♯9 a9 a♯9 b9 \
c10 c♯10 d10 d♯10 e10 f10 f♯10 g10", note)
# FIXME: just have all notes from octaves -1,0,+1
split("-12 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 12 1 2 3 4 5 6 7 8 9 10 11", range)
srand()
print "Vich noten shall wir testen diese day, bastard?"
}
NR == 1{
n = split($0, keys)
if(n < 1)
exit("no notes to hand")
for(k in keys){
m = 0
for(n in note){
if(keys[k] == note[n]){
m = n
break
}
}
if(m == 0){
print "unknown note " keys[k]
exit("unknown note " keys[k])
}
keys[k] = m
addrange(m)
}
for(i=1; i<=6*length(keys); i++)
qs[i] = 0
new()
}
NR > 1{
# FIXME: just choose one of the notes at random; only test one note;
# say which one it's testing
for(i=1; i<=NF; i++)
if(!($i in qs) || !extant(qs[$i], keys))
print "NEIN! Es ist " note[qs[$i]] "!"
new()
}