Следующий код сначала создает файл wav auido.wav, а затем использует проигрыватель для воспроизведения звука. Как я могу воспроизвести тон на моем компьютере, используя приведенный ниже код, без необходимости создания файла audio.wav? Код ниже генерирует очень плавную серию звуковых волн, как я хотел. WINSOUND мне не подходит. Точно так же я буду использовать переменную FREQUENZY, чтобы быть источником желаемого тона для прямого и немедленного воспроизведения. Спасибо за любые ответы.
# based on : www.daniweb.com/code/snippet263775.html
import math
import wave
import struct
audio = []
sample_rate = 41000.0
msec = 2000 # milliseconds
FREQUENZY = 440
def append_sinewave0(freq=FREQUENZY, duration_milliseconds=msec,volume=1.0):
global audio # using global variables isn't cool.
num_samples = duration_milliseconds * (sample_rate / 1000.0)
for x in range(int(num_samples)):
audio.append(volume * math.sin(2 * math.pi * freq * ( x / sample_rate )))
return
def save_wav(file_name):
# Open up a wav file
wav_file=wave.open(file_name,"w")
nchannels = 1
sampwidth = 2
nframes = len(audio)
comptype = "NONE"
compname = "not compressed"
wav_file.setparams((nchannels, sampwidth, sample_rate, nframes, comptype, compname))
for sample in audio:
wav_file.writeframes(struct.pack('h', int( sample * 32767.0 )))
wav_file.close()
append_sinewave0(freq=FREQUENZY, volume=1.0)
save_wav("c:/users/hp-qd/music/audio.wav")
# PLAY SOUND
import winsound
filename = 'c:/users/hp-qd/music/audio.wav'
winsound.PlaySound(filename, winsound.SND_FILENAME)