你如何在同一时间玩蟒两个不同的歌曲文件?(How do you play two different

2019-09-24 03:36发布

我试图在同一时间打松1和song2(注释掉的),但我不知道怎么说使用myro或广州市运生或不管它是什么做的。 有人使用线程的建议,但我不知道该怎么做决定,因为我只是一个很婴儿初学编程的。 会有人请帮助我这个东西出来和/或详细解释如何做到这一点? 这是我到目前为止有:

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()

Answer 1:

我建议你使用pygame的这种工作的,并检查了此相关的问题 。 你不得不使用混频器模块。

一般来说,你将不得不使用混合的音频流,一些数学运算的PCM数据(一个例子讨论见这个问题 )。


更新 :Myro(我从来没有用过)说, 在文档中 ,有一种方法可以做到这一点使用的beep功能:

蜂鸣声(个体,持续时间,频率,频率2 =无):使一个音调。 如果两个音调给出,机器人将它们组合起来。

举个简单的例子,如果你有注意到A,持续时间1秒的第一首歌曲,并注意B,病程2秒的第二首歌,你将不得不调用beep两次:第一次同时播放两个音符A和B 1秒,然后只玩注②另1秒。

不用说,这个代码会比只使用像pygame的播放音频文件的声音和混合它们更复杂。



文章来源: How do you play two different song files on python at the same time?