Python 的winsound.Beep() 暂停问题

标签 python beep

所以我的代码是这样的:

import winsound
import time

length = 250

class Notes():
    def frequency(halfNotesFromA4):
        value = 440 * ((2)**(1.0/12.0))**halfNotesFromA4
        return (int)(value)
    def processNote(note):
        if(note == 'C'):return Notes.frequency(3)
        if(note == 'D'):return Notes.frequency(5)
        if(note == 'E'):return Notes.frequency(7)
        if(note == 'F'):return Notes.frequency(8)
        if(note == 'G'):return Notes.frequency(10)
        if(note == 'A'):return Notes.frequency(12)
        if(note == 'B'):return Notes.frequency(14)

song = "EDCDEEE"
noteList = list(song)
print(noteList)

for note in noteList:
    print("Doing ", note)
    frequency = Notes.processNote(note)
    winsound.Beep(frequency, length)

它工作正常,但我遇到的问题是每次蜂鸣声之间有一个暂停。我希望能够不间断地连续播放声音,这样听起来就像真正的音乐。这可以通过winsound.Beep()库实现吗?

最佳答案

即使你使用这样的 while 循环:

 import winsound

 while True:
    winsound.Beep(100, 100)

之间仍然有一个小停顿,听起来不像一个坚实的音符,而且你不能比这更快

你仍然可以尝试一下,但我不认为你可以让它听起来像一声长嘟嘟声,但 winsound 确实有 winsound.PlaySound(sound, flags) 所以你可以在这里加载声音Winsound Docs

你可以做的就是使用 Pygame这将是更多的工作,但它可能是一种更好的创作音乐的方式

您可以使用Pygame Music要加载和播放音乐,我确信您可以使其更具交互性,但您必须从文件加载每个声音

如果您不想执行所有这些操作,请查看 Python In Music这可能是一个很好的起点

关于Python 的winsound.Beep() 暂停问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17423267/

相关文章:

ruby - 从 Ruby 程序创建 'beep' 声音的最简单方法是什么?

c++ - Boost Asio async_send 产生蜂鸣声

python - 不安全平台警告 : A true SSLContext object is not available

python - 用sympy计算多元函数的泰勒级数

c# - System.Beep 等效

c# - 如何使用PC扬声器发出哔哔声?

c++ - 哔哔声不起作用(linux)

python属性和继承

python - 凯撒密码查询

python - 如何将python 3.4.3脚本编译为exe?