Initial commit

This commit is contained in:
Pascal Engélibert 2025-02-27 00:41:31 +01:00
commit 778fe31c38
35 changed files with 1849 additions and 0 deletions

42
level4.py Normal file
View file

@ -0,0 +1,42 @@
"""
Niveau 4
Jouer des accords
Ne pas introduire le facteur d'amplitude avant d'avoir entendu le résultat sans lui
"""
import synthlib, math, sys
music = synthlib.midi()
active = {}
wait = 0
tt = 0
t = 0
loop = True
sound_encoder = synthlib.SoundEncoder()
while loop:
if wait == 0:
while True:
event = music[tt]
tt += 1
if event.type == synthlib.Note:
if event.velocity == 0:
if event.number in active:
active.pop(event.number)
sys.stderr.write("pop "+str(event.number)+"\n")
else:
active[event.number] = event.velocity
sys.stderr.write(str(event.velocity)+" "+str(event.number)+" ("+str(len(active))+")\n")
elif event.type == synthlib.Wait:
wait = int(event.value*8000)
break
elif event.type == synthlib.End:
loop = False
break
else:
wait -= 1
sound_encoder.write_sample(sum([active[number]*math.sin(t/16000*440*2**(number/12)*2*math.pi) for number in active])/max(1,len(active)))
t += 1