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, это, вероятно, хорошее место для начала

Другие вопросы по тегам