Add new megalovania beep emulator

This commit is contained in:
Anthony Wang 2022-12-27 18:56:11 -06:00
parent af5e812489
commit 6e7454cbe1
No known key found for this signature in database
GPG Key ID: 42A5B952E6DD8D38
1 changed files with 35 additions and 0 deletions

35
beepemu2 Executable file
View File

@ -0,0 +1,35 @@
#!/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