Python's winsound.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()?
1 ответ
Даже если вы используете цикл while, как это:
import winsound
while True:
winsound.Beep(100, 100)
между ними все еще есть небольшая пауза, и она не будет звучать как сплошная нота, и вы не можете получить намного быстрее, чем это
Вы все еще можете попробовать это, но я не думаю, что вы можете заставить его звучать как один длинный гудок, но у winsound есть winsound.PlaySound(sound, flags)
так что вы можете загрузить звук вот Winsound Docs
то, что вы можете сделать, это использовать Pygame, это будет больше работы, но это, вероятно, гораздо лучший способ создания музыки
Вы можете использовать Pygame Music для загрузки и воспроизведения музыки, и я уверен, что вы можете сделать ее намного более интерактивной, ведь вам нужно загружать каждый звук из файла.
если вы не хотите делать все это, взгляните на Python In Music, это, вероятно, хорошее место для начала