2014-01-08 4 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 (файл) на snd.record(), но это не сработало.

ответ

2

Вы также можете использовать пакет snackogg ... tksnack работает в Linux с отличным libsnack-alsa. Я не знаю с snackogg.

Здесь в примере с записью трека - я положил кнопки на источник youre.

#! /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() 
Смежные вопросы