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("