簡體   English   中英

Python 的 winsound.Beep() 暫停問題

[英]Python's winsound.Beep() pause issues

所以我的代碼是這樣的:

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 那可能是一個很好的起點

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM