作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图同时播放song1和song2(被注释掉的),但我不知道如何使用myro或winsound或其他任何东西来做到这一点。有人建议使用线程,但我也不知道如何做到这一点,因为我只是一个非常小的初学者程序员。有人可以帮我解决这个问题和/或详细解释如何做到这一点吗?这是我到目前为止所拥有的:
import winsound
from myro import *
def main():
HftM1 = makeSong("Db4 3/8; C4 3/8; Bb3 1/4; Bb3 3/8; Ab3 3/8; Gb3 3/8; Ab3 1/16; C4 3/8; Bb3 3/8; Ab3 1/8; Eb3 1/16; F3 1/16; Ab3 3/8; G3 3/8; F3 3/8; C4 1/16; Db4 3/8; C4 3/8; Bb3 1/8; F3 1/16; Gb3 1/16; Bb3 3/8; Ab3 3/8; Gb3 3/8; C4 3/8; Bb3 3/8; Ab3 1/8; Eb3 1/16; F3 1/16; Ab3 3/8; G3 3/8; F3 3/8")
saveSong(HftM1, "HymnfortheMissing1.txt", append=1)
HftM2 = makeSong("Bb2 1/8; F3 1/8; Bb3 1/4; Bb2 1/8; F3 3/8; Gb2 1/8; Db3 1/8; Gb3 1/4; Gb2 1/8; Db3 3/8; Ab2 1/8; Eb3 1/8; Ab3 1/4; Ab2 1/8; Eb3 3/8; F2 1/8; C3 1/8; F3 1/4; F2 1/8; C3 3/8; Bb2 1/8; F3 1/8; Bb3 1/4; Bb2 1/8; F3 3/8; Gb2 1/8; Db3 1/8; Gb3 1/4; Gb2 1/8; Db3 3/8; Ab2 1/8; Eb3 1/8; Ab3 1/4; Ab2 1/8; Eb3 3/8; F2 1/8; C3 1/8; F3 1/4; F2 1/8; C3 3/8")
saveSong(HftM2, "HymnfortheMissing2.txt", append=1)
song1 = readSong("HymnfortheMissing1.txt")
#song2 = readSong("HymnfortheMissing2.txt") #This part of the song is supposed to be played at the same time as the first part, but I don't know how to do that so...
play = []
for n in range(len(song1)):
play = song1[n]
note = play[0]
duration = play[1]
winsound.Beep(int(note), int(duration*2000))
main()
最佳答案
我建议您使用PyGame对于此类工作,请查看此 related question 。您必须使用混合器模块。
一般来说,您必须对音频流使用一些数学操作来混合 PCM 数据(例如讨论 see this question )。
<小时/>更新:Myro(我从未使用过)说in the docs有一种方法可以使用 beep
函数来做到这一点:
beep(self, duration, frequency, frequency2 = None): make a tone. If two tones are given, the robot will combine them.
举个简单的例子,如果第一首歌曲中有音符 A,持续时间 1 秒,第二首歌曲中有音符 B,持续时间 2 秒,则必须调用 beep
两次:首先同时弹奏音符 A 和 B 1 秒,然后仅弹奏音符 B 1 秒。
不用说,这段代码比仅仅使用 PyGame 之类的东西播放音频文件中的声音并混合它们要复杂得多。
关于python - 如何在python上同时播放两个不同的歌曲文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12902336/
我是一名优秀的程序员,十分优秀!