如何在python中发出余音

2024-05-17 02:53:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为我当前的小项目使用pygame.midi,它输出一些基于算法结构的注释。我的问题是,我想让声音在迭代循环中徘徊

这种情况的一个最起码的例子如下:

import pygame.midi
import time
from random import random

 pygame.midi.init()
 player = pygame.midi.Output(0)
 player.set_instrument(0)

 def hit(player, note, velocity, duration):
   player.note_on(note, velocity)    
   time.sleep(duration)
   player.note_off(note, velocity)
   return

 for i in range(100):
   time.sleep(0.1)
   if random() < 0.4:
     hit(player, i, 120, 1)

 pygame.midi.quit()

由于音符持续时间大于迭代节拍器,因此期望的迭代速度被破坏。不幸的是,对于我的应用程序,我不能简单地收集循环结果,然后重建,因为输出必须“动态”处理。此外,我希望声音最终重叠,例如当重复时间很短时。是否有适当的方法来处理这种多线程(不确定我在这里使用的术语是否正确)


Tags: 项目import算法声音timesleeprandom结构