Hello,
I wrote the following simple python script to be used by pd with the
py/pyext external. It demonstrates a simple tcl/tk dialogue with the
wavesurfer application.
try:
import pyext
except:
print "ERROR: This script must be loaded by the PD/Max pyext external"
from Tkinter import *
from Wsurf import *
import random
class Application(Frame):
"""This is the TK application class"""
def load(self):
file = root.tk.eval('snack::getOpenFile')
ws.openFile(file)
# Some random commands
def stuff(self):
ws.xscroll('moveto',0.01)
ws.configure(selection='1.00 3.00')
ws.configure(title='Test')
ws.play(1.00,3.00)
print ws.cget('selection')
# Create interface stuff
def createWidgets(self):
self.opFile = Button(self, image='snackOpen',
command=self.load )
self.opFile.pack(side='left')
self.ran = Button(self, text='Foo', command=self.stuff )
self.ran.pack(side='left')
# Constructor
def __init__(self,cl):
print 'init called'
self.extcl = cl
Frame.__init__(self)
self.pack(pady=5)
self.createWidgets()
pass
# derive class from pyext._class
class myapp(pyext._class):
"""This class demonstrates how a TCL/TK can be openened from
within a pyext external"""
# how many inlets and outlets?
_inlets = 1
_outlets = 1
# Constructor
def __init__(self):
# detach bang method
self._detach(1)
def bang_1(self):
self._priority(-3)
# display the tcl/tk dialog
global root
root=Tk()
root.tk.eval('package require -exact wsurf 1.8')
global ws
ws=Wsurf(root,title='ABC',configuration='')
ws.pack(expand='yes',fill='both')
f0 = Application(self)
f0.mainloop()
I can load sound files into the wavesurfer application which also has
the functionality to play this file or to record sound input from a
microphone. The only problem is that WaveSurfer can not gain access to
dsp for writing or reading. Obviously because it is locked by PD.
Does any one see a possibility to, e.g., root the output of the
wavesurfer application through PD or some other solution?
Thanks, Jeannette.