aboutsummaryrefslogtreecommitdiff
path: root/beepemu2
blob: fdc10dd56dd200eafd8daee30bf371b6f8dc5b06 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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