我想用Python编写一个播放随机音乐的程序。在给定的时间内是否有可以直接播放给定音高或频率的声音的库?例如,play(440, 4)
应该在4秒钟内弹奏音符A。
我找到了一些可以执行我说的内容的库,但是它们不能直接播放音乐:您必须创建一个.wav
文件,然后播放该文件。如果找不到能满足我需要的库,我将创建一个文件,播放该文件,然后为每个音符将其删除,但我认为直接进行操作会更容易。
答案 0 :(得分:1)
我终于找到了我问题的答案。
有一个名为winsound
(https://docs.python.org/3/library/winsound.html)的模块,可以播放给定频率和持续时间的声音:winsound.Beep(frequency, duration)
。但是问题在于它不是跨平台的,仅适用于Windows操作系统。
因此,我找到了另一个名为pyaudiere
(https://pypi.org/project/pyaudiere/)的跨平台模块。它的工作原理与winsound
有点不同。首先,您创建一个设备:d = audiere.open_device()
。然后,您可以制作t = d.create_tone(440)
的音调。要播放音调,请t.play()
并停止t.stop()
。如果您想在几秒钟内播放它,可以使用time
模块。我仍在调查,但我认为它仅适用于Python2。这是我在stackoverflow上找到答案的地方:Python library for playing fixed-frequency sound。