gpt4 book ai didi

python - 如何在python上同时播放两个不同的歌曲文件?

转载 作者:行者123 更新时间:2023-11-30 23:40:07 26 4
gpt4 key购买 nike

我试图同时播放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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com