Adam Jimerson wrote: > Thanks that is what I was looking for, No probs.
> to bad there isn't a UI or anything for it. > Tadaaa! Hope pasting it into an email doesn't ruin the formatting. This is my first pygtk/pygst program and it has been cobbled together from various code examples on the web. I hope you like it. Stuart #!/usr/bin/env python ## # testtone.py # Hacked together by Stuart Pullinger (s dot pullinger at elec dot gla dot ac dot uk) from the following sources: # http://www.pygtk.org/pygtk2tutorial/index.html # http://pygstdocs.berlios.de/pygst-tutorial/index.html # http://www.jonobacon.org/2006/08/28/getting-started-with-gstreamer-with-python/ ## import pygtk pygtk.require('2.0') import gtk import pygst pygst.require("0.10") import gst class TestTone: def startstop(self, widget, data=None): if self.playing: #we are playing so stop self.pipeline.set_state(gst.STATE_NULL) self.playing = False else: #we are stopped so start playing self.pipeline.set_state(gst.STATE_PLAYING) self.playing = True def change_freq(self, adj): self.audiotestsrc.set_property('freq', adj.value) def change_vol(self, adj): self.audiotestsrc.set_property('volume', adj.value) def delete_event(self, widget, event, data=None): print "delete event occurred" return False def destroy(self, widget, data=None): print "destroy signal occurred" gtk.main_quit() def __init__(self): # create a new window self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) self.window.connect("delete_event", self.delete_event) self.window.connect("destroy", self.destroy) self.window.set_border_width(10) self.button = gtk.Button("Start / Stop") self.button.connect("clicked", self.startstop, None) self.adjustfreq = gtk.Adjustment(440, 20, 20000, 10, 100, 0) self.freq_button = gtk.SpinButton(adjustment=self.adjustfreq, climb_rate=0.5, digits=2) self.adjustfreq.connect('value_changed', self.change_freq) self.adjustvol = gtk.Adjustment(0.4, 0, 1, 0.01, 0.1, 0) self.vol_button = gtk.SpinButton(adjustment=self.adjustvol, climb_rate=0.5, digits=2) self.adjustvol.connect('value_changed', self.change_vol) self.pipeline = gst.Pipeline("mypipeline") self.audiotestsrc = gst.element_factory_make("audiotestsrc", "audio") self.audiotestsrc.set_property('freq', 440) self.audiotestsrc.set_property('volume', 0.4) self.pipeline.add(self.audiotestsrc) self.sink = gst.element_factory_make("alsasink", "sink") self.pipeline.add(self.sink) self.audiotestsrc.link(self.sink) self.playing = False self.vbox = gtk.VBox(False, 0) self.vbox.pack_start(self.freq_button) self.vbox.pack_start(self.vol_button) self.vbox.pack_start(self.button) self.window.add(self.vbox) self.button.show() self.freq_button.show() self.vol_button.show() self.vbox.show() self.window.show() def main(self): # All PyGTK applications must have a gtk.main(). Control ends here # and waits for an event to occur (like a key press or mouse event). gtk.main() # If the program is run directly or passed as an argument to the python # interpreter then create a HelloWorld instance and show it if __name__ == "__main__": testtone = TestTone() testtone.main() _______________________________________________ Openmoko community mailing list community@lists.openmoko.org http://lists.openmoko.org/mailman/listinfo/community