jsb-synth/stage/level5.py
2025-02-27 00:41:31 +01:00

27 lines
563 B
Python

"""
Niveau 5
Jouer une partition
"""
import synth
import math
music = synth.Midi(32000)
encoder = synth.Encoder()
encoder.sampling = 32000
instruments = [
lambda t, f: math.sin(t * f * 2*math.pi),
lambda t, f: math.sin(t * f * 2*math.pi) + math.sin(t * f * 4*math.pi)/2,
lambda t, f: math.sin(t * f * 2*math.pi) + math.sin(t * f * 4*math.pi)/2,
lambda t, f: t * f % 1 - 0.5,
]
t = 0
for notes in music:
total = 0
for note in notes:
total = total + instruments[note[0]](t/32000, 440 * 2**(note[1]/12)) * note[2]
encoder.write(total * 0.3)
t = t + 1