29 lines
756 B
Python
29 lines
756 B
Python
import wave
|
|
import math
|
|
import struct
|
|
|
|
|
|
def generate_ding(filename="assets/sounds/ding.wav", frequency=800, duration=0.15):
|
|
sample_rate = 44100
|
|
n_frames = int(sample_rate * duration)
|
|
|
|
with wave.open(filename, "w") as wav_file:
|
|
wav_file.setnchannels(1)
|
|
wav_file.setsampwidth(2)
|
|
wav_file.setframerate(sample_rate)
|
|
|
|
data = []
|
|
for i in range(n_frames):
|
|
# Затухающая синусоида
|
|
t = i / sample_rate
|
|
value = int(
|
|
32767.0 * math.sin(2 * math.pi * frequency * t) * (1 - t / duration)
|
|
)
|
|
data.append(struct.pack("<h", value))
|
|
|
|
wav_file.writeframes(b"".join(data))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
generate_ding()
|