2012-10-15 88 views
1

我試圖在同一時間播放song1和song2(註釋掉的一個),但我不知道如何使用myro或winsound或其它方法來做到這一點。有人建議使用線程,但我不知道該怎麼做,因爲我只是一個非常寶寶的初學者程序員。請有人幫我把這件事情弄清楚,並/或詳細解釋如何做到這一點?這是我到目前爲止有:如何在python上同時播放兩個不同的歌曲文件?

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

幾天前你問了這個確切的問題。 – Blender

+0

@Blender我知道(杜)。我得到的答案不是很有幫助(對我來說),所以我把它拿下來,重新張貼一些更詳細的信息,希望得到一些更好的細節 –

回答

3

我建議你使用PyGame對於這樣的工作,並檢查了這related question。你必須使用調音臺模塊。

一般來說,您必須在音頻流上使用一些數學操作來混合PCM數據(例如討論see this question)。


更新:Myro(我從來沒有用過)說:in the docs是有辦法做到這一點使用beep功能:

蜂鳴聲(個體經營,持續時間,頻率,頻率2 =無):發出聲調。如果有 兩種音調,機器人將會合並它們。

舉個簡單的例子,如果你有注意到A,持續時間1秒的第一首歌曲,並注意B,病程2秒的第二首歌,你將不得不調用beep兩次:第一次玩這兩個音符和B同時播放1秒鐘,然後只播放音符B 1秒鐘。不用說,這個代碼將比使用類似PyGame的音頻文件播放聲音和混合它們更復雜。

+0

我已經檢查了相關的問題。至於其他方面,我正在接觸一位寶寶程序員,知道如何去做。我甚至還沒有看過PyGame,所以我必須要更簡單些,更細節。 –

+0

我已經添加了一個'myro'的鏈接,聲稱可以使用他們的庫來完成它。 – sinelaw

+0

是的,但該程序正在讀取一首歌曲文件。因此「saveSong(HftM1,」HymnfortheMissing1.txt「,append = 1)」代碼的一部分。這隻有在我試圖將兩種不同的音調結合起來時纔有效。我試圖基本結合兩張不同的音樂或一組音調。 –

相關問題