Looking for a app similar to the Dog Whistle for the iPhone

Adam Jimerson vendion at gmail.com
Mon Apr 27 21:54:12 CEST 2009


Thanks again, I don't know anything about Python programming but where would
I label the inputs for the frequency and the volume at?  I can easily make
the changes to the frequency, a dog whistle is anywhere from 16000 to 22000
Hz and for the volume anything over 0.1 is to loud the speakers on the
FreeRunner struggle with it, what I mean by that is 22000 Hz sounds lower
than 17000 Hz.

On Fri, Apr 24, 2009 at 11:20 AM, Stuart Pullinger <
s.pullinger at elec.gla.ac.uk> wrote:

> 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 at lists.openmoko.org
> http://lists.openmoko.org/mailman/listinfo/community
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.openmoko.org/pipermail/community/attachments/20090427/14f2bbd8/attachment.htm 


More information about the community mailing list