Try this instead; it should work on any OS and generate a .wav file you can play. (It's better than putting up a recording because you can play with the parameters, put in your own tune, etc.)
import math, random, struct, wave
from math import sin,cos,exp,pi
filename = '/home/dgerard/something.wav' # replace with something sensible
def add_note(t,p,d,v):
# t is time in seconds, p is pitch in Hz, d is duration in seconds
# v is volume in arbitrary (amplitude) units
i0 = int(44100*t)
i1 = int(44100*(t+d))
if len(signal)<i1: signal.extend([0 for i in range(len(signal),i1)])
for i in range(i0,i1):
dt = i/44100.-t
if dt<0.02: f = dt/0.02 # attack: 0..1 over 20ms
elif dt<0.2: f = exp(-(dt-0.02)/0.18) # decay: 1..1/e over 180ms
elif dt<d-0.2: f = exp(-1) # sustain: 1/e
else: f = exp(-1)*(d-dt)/0.2 # release: 1/e..0 over 200ms
signal[i] += f*v*(sin(2*pi*p*dt)+0.2*sin(6*pi*p*dt)+0.06*sin(10*pi*p*dt))
def save_signal():
m = max(abs(x) for x in signal)
d = [int(30000./m*x) for x in signal]
w = wave.open(filename, "wb")
w.setparams((1,2,44100,len(signal),'NONE','noncompressed'))
w.writeframes(''.join(struct.pack('h',x) for x in d))
w.close()
signal = []
t=0
for (p,d) in [(4,1),(5,1),(7,3),(None,1), (4,1),(5,1),(7,3),(None,1), (4,1),(7,1),(12,2),(11,2),(9,2),(9,2),(7,1),(None,1), (2,1),(4,1),(5,3),(None,1), (2,1),(4,1),(5,3),(None,1), (2,1),(5,1),(11,1),(9,1),(7,2),(11,2),(12,4)]:
if p is not None: add_note(t, 440*2**((p+1*(random.random()-0.5))/12.), 0.3*d+0.1, 1)
t += 0.3*d
save_signal()
I didn't find the result all that unpleasant. Probably because the sound file was still pretty close to what the intervals/notes were "supposed" to be, my brain categorized them into the right categories. It would have been worse if I perceived them as "completely wrong" intervals (as in a seventh instead of a fourth) rather than just "out-of-tune" intevals.
The next discussion thread is here.
This is a new thread to discuss Eliezer Yudkowsky’s Harry Potter and the Methods of Rationality and anything related to it. This thread is intended for discussing chapter 84. The previous thread has passed 500 comments. Comment in the 14th thread until you read chapter 84.
There is now a site dedicated to the story at hpmor.com, which is now the place to go to find the authors notes and all sorts of other goodies. AdeleneDawner has kept an archive of Author’s Notes. (This goes up to the notes for chapter 76, and is now not updating. The authors notes from chapter 77 onwards are on hpmor.com.)
The first 5 discussion threads are on the main page under the harry_potter tag. Threads 6 and on (including this one) are in the discussion section using its separate tag system. Also: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14.
As a reminder, it’s often useful to start your comment by indicating which chapter you are commenting on.
Spoiler Warning: this thread is full of spoilers. With few exceptions, spoilers for MOR and canon are fair game to post, without warning or rot13. More specifically: