Python звуковая вещь! Как я могу воспроизвести тон с помощью библиотеки WAVE? - PullRequest
0 голосов
/ 12 июля 2020

Следующий код сначала создает файл 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)
...