Мы делаем семестровый проект в университете, и мы столкнулись со следующей проблемой:
Используя pygame,
Сначала мы играем один звук в правом ухе, а затем влевое ухо.Когда звук начинает воспроизводиться, он зацикливается на 10 петлях на заднем плане.Затем он вызовет функцию increase_volume
, которая заканчивается на tkinter.after(500, increase_volume)
.
Наша проблема в том, что нам нужно воспроизвести 12 звуков.По первому звуку работает отлично.
Но когда мы останавливаем первый звук и запускаем второй, очень быстро становится ясно, что функция increase_volume
больше не вызывается каждые 500 мс, а намного быстрее.Этот вызов становится все быстрее и быстрее для каждого звука.Это выглядит почти как экспоненциально.Для программы крайне важно, чтобы она увеличивалась только каждые 500 мс.Но мы не можем найти решение для этого.
Есть предложения?
def increase_volume(self):
volume = pygame.mixer.music.get_volume()
print (volume)
print (datetime.now().time())
if volume < 1.0:
new_volume = volume + 0.01
pygame.mixer.music.set_volume(new_volume)
self.after(500, self.increase_volume)
def play_right_ear(self):
volume = 0.0
pygame.mixer.music.load("../Frekvensafspiller/justerede_lydfiler/" + str(self.frequency) + "Hz_R.mp3")
pygame.mixer.music.set_volume(volume)
pygame.mixer.music.play(10)
self.increase_volume()
def play_left_ear(self):
volume = 0.0
pygame.mixer.music.load("../Frekvensafspiller/justerede_lydfiler/" + str(self.frequency) + "Hz_L.mp3")
pygame.mixer.music.set_volume(volume)
pygame.mixer.music.play(10)
if self.frequency <= 8000:
self.frequency = self.frequency * 2
self.increase_volume()