Never-Gonna-Give-Beep-Up/beepemu2

36 lines
872 B
Fish
Executable File

#!/usr/bin/fish -c python beepemu2 | play -r 100000 -t s16 -
import math
import struct
import sys
def saw(t):
t = t % 1
if t < 0.25:
return 4*t
elif t < 0.75:
return 2-4*t
else:
return 4*t-4
t,s = 0,0
flag = ''
flags = {}
with open("megalovania.sh") as f:
for x in f.read().split():
if x == 'beep':
pass
elif x[0] == '-':
flag = x[1]
else:
flags[flag] = int(x)
if flag == 'l' and x != '-l':
t += flags['D']
while s < t:
sys.stdout.buffer.write(struct.pack('h', 0))
s += 1/100
flags['D'] = 0
t += flags['l']
while s < t:
sys.stdout.buffer.write(struct.pack('h', int(math.e**(-flags['f']/500)*2**14*saw(flags['f']*s/1000))))
s += 1/100