Just to add: (1) The pointless “1*” is because I experimented with other sizes of error too. (2) A slight modification of this lets you, e.g., have the pitch drift downward by 1⁄10 of a semitone per note, which for me at least is very noticeable and unpleasant even though each individual interval is OK.
While all of the evil credit of course goes to you, I feel that I have made some neat* modifications:
signal = []
t=0L
pscale=5
pexp=2
transpose = 0
iterations = 10
for ii in range(1,iterations):
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, random.choice([440*2**(((p+transpose)+random.choice([-1,0,0,0,1]))/12.),440*2**(((p+transpose)+random.random())/12.)]), 0.3*d+0.1, 1)
t += 0.3*d*math.exp(random.random()*random.random())
transpose = random.choice([-14, -9, -7, -4.5, -2, -1, 0, 0.5, 1, 2, 4.5, 7, 9, 14]) #transpose up or down
t += 5*(pexp*((pscale**pexp)/((random.randrange(200,600,1)/100)**(pexp+1)))) #wait a while before repeating
save_signal()
Just to add: (1) The pointless “1*” is because I experimented with other sizes of error too. (2) A slight modification of this lets you, e.g., have the pitch drift downward by 1⁄10 of a semitone per note, which for me at least is very noticeable and unpleasant even though each individual interval is OK.
While all of the evil credit of course goes to you, I feel that I have made some neat* modifications:
*Where neat is, of course, a synonym for evil