2014-01-08 105 views
1

我正在嘗試使用tksnack創建一個實時移動到正在播放的聲音的波形。我發現了一些或多或少做我想要的示例代碼。tksnack-試圖創建波形

#! /usr/bin/env python 

from Tkinter import * 
from tkSnack import * 

root = Tkinter.Tk() 
initializeSnack(root) 
snd = Sound() 
def start(): 
    snd.record() 

c = SnackCanvas(height=500, width=1920, bg='white') 
c.pack() 
c.create_waveform(1,1,sound=snd,width=1920,height=500,pixelspersec=500) 

start() 
root.mainloop() 

但是這個例子需要從麥克風的音頻,但我想給它一個MP3。我會如何去做這件事?我嘗試使用snd.read(file)替代snd.record(),但沒有奏效。

回答

2

您也可以使用包snackogg ... tksnack在Linux中使用libsnack-alsa罰款。我不知道用snackogg。

這裏在記錄一個軌道的例子 - 我把按鈕給你的來源。

#! /usr/bin/env python 

    from Tkinter import * 
    from tkSnack import * 

    root = Tkinter.Tk() 
    root.geometry("650x560+100+80") 
    initializeSnack(root) 
    snd = Sound() 

    def start(): 
     snd.record() 

    def stop(): 
     snd.stop() 

    def play(): 
     snd.play() 

    def save(): 
     file = root.tk.call('eval', 'snack::getSaveFile') 
     snd.write(file) 


    c = SnackCanvas(height=500, width=820, bg='white') 
    c.pack() 

    c.create_waveform(1,1,sound=snd,width=1920,height=500,pixelspersec=500) 

    record=Button(root,width=50,height=50,fg='red', bitmap='snackRecord',command=start).place(x=5,y=501) 
    stop=Button(root,width=50,height=50,fg='black', bitmap='snackStop',command=stop).place(x=60,y=501) 
    play=Button(root,width=50,height=50,fg='black', bitmap='snackPlay', command=play).place(x=115,y=501) 
    save=Button(root,width=5,height=3,fg='black', text='Save', command=save).place(x=170,y=501) 
    root.mainloop()