<?xml version="1.0" encoding="iso-8859-1"?>
<rss version="2.0">
<channel>
  <title>Linux Format forums</title>
  <link>http://www.linuxformat.com/forums/index.php</link>
  <description>Help, discussion, magazine feedback and more</description>
  <language>english</language>
  <copyright>(c) Copyright Sun May 19, 2013 11:26 am by Linux Format forums</copyright>
  <managingEditor>webmaster@linuxformat.com</managingEditor>
  <webMaster>webmaster@linuxformat.com</webMaster>
  <pubDate>Sun May 19, 2013 11:26 am</pubDate>
  <lastBuildDate>Sun May 19, 2013 11:26 am</lastBuildDate>
  <docs>http://backend.userland.com/rss</docs>
  <generator>phpBB2 RSS Syndication Mod by Lucas</generator>
  <ttl>1</ttl>

  <image>
    <title>Linux Format forums</title>
    <url></url>
    <link>http://www.linuxformat.com/forums/</link>
    <description>Help, discussion, magazine feedback and more</description>
  </image>

                                      <item>
                                        <title>Another Python Freebie... An Audio Sweep Generator.</title>
                                        <link>http://www.linuxformat.com/forums/viewtopic.php?p=103324#103324</link>
                                        <description>&lt;br /&gt;
                                      Author: &lt;a href='http://www.linuxformat.com/forums/profile.php?mode=viewprofile&amp;u=58561'&gt;Bazza&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
                                      Posted: Sat Dec 17, 2011 11:42 am&lt;br /&gt;&lt;br /&gt;
                                      &lt;br /&gt;&lt;br /&gt;
                                      Hi all...&lt;br /&gt;
&lt;br /&gt;
DM might be interested in this little devil...&lt;br /&gt;
&lt;br /&gt;
A Linux Python 3.x.x code to sweep the audio spectrum from 4KHz down&lt;br /&gt;
to 100Hz and back again. (It is effectively a siren sound.)&lt;br /&gt;
&lt;br /&gt;
Written so that anyone can understand how it works...&lt;br /&gt;
&lt;br /&gt;
I will be releasing a Python 2.x.x version to code.activestate.com soon.&lt;br /&gt;
&lt;br /&gt;
Watch out for wordwrapping etc...&lt;br /&gt;
&lt;br /&gt;
Enjoy finding simple solutions to often VERY difficult problems... ;o)&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;table width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot; border=&quot;0&quot; align=&quot;center&quot;&gt;&lt;tr&gt; 	  &lt;td&gt;&lt;span class=&quot;genmed&quot;&gt;&lt;b&gt;Code:&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;	&lt;/tr&gt;	&lt;tr&gt;	  &lt;td class=&quot;code&quot;&gt;&lt;br /&gt;
# SweepGen3x.py&lt;br /&gt;
#&lt;br /&gt;
# A DEMO Audio Sweep Generator from 4KHz down to 100Hz and back up again&lt;br /&gt;
# using standard Text Mode Python. Another kids level piece of code for a very&lt;br /&gt;
# simple, FREE, Test Gear project... Hey, it is not perfect but a simple audio&lt;br /&gt;
# sweep generator for FREE, what more could you want!&lt;br /&gt;
# This working idea is copyright, &amp;#40;C&amp;#41;2010, B.Walker, G0LCU.&lt;br /&gt;
# Initially issued to LXF under the MIT licence.&lt;br /&gt;
# Written in such a way that anyone can understand how it works.&lt;br /&gt;
#&lt;br /&gt;
# Tested on PCLinuxOS 2009 and Debian 6.0.0 using Python 3.1.3 and 3.2.2.&lt;br /&gt;
# &amp;quot;/dev/dsp&amp;quot; IS required for this to work; therefore if you haven't got it then&lt;br /&gt;
# install &amp;quot;oss-compat&amp;quot; from you distro's repository. Ensure the sound system is&lt;br /&gt;
# not already in use.&lt;br /&gt;
# It is easily possible to lengthen the higher frequency playing times and VERY&lt;br /&gt;
# easily alter the output level and to speed up or slow down the sweep speed.&lt;br /&gt;
# I'll let the big guns do that for you...&lt;br /&gt;
# IMPORTANT NOTE&amp;#58;- Every EVEN number of bytes is a symmetrical &amp;quot;square&amp;quot; wave BUT&lt;br /&gt;
# every ODD number of bytes has preference for the &amp;quot;space&amp;quot; by one byte.&lt;br /&gt;
#&lt;br /&gt;
# To run this DEMO type at the Python prompt......&lt;br /&gt;
#&lt;br /&gt;
# &amp;gt;&amp;gt;&amp;gt; exec&amp;#40;open&amp;#40;&amp;quot;/full/path/to/SweepGen3x.py&amp;quot;&amp;#41;.read&amp;#40;&amp;#41;&amp;#41;&amp;lt;RETURN/ENTER&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# ......and away you go.&lt;br /&gt;
#&lt;br /&gt;
# Note&amp;#58;- NO import&amp;#91;s&amp;#93; required at all, good eh! ;o&amp;#41;&lt;br /&gt;
&lt;br /&gt;
def main&amp;#40;&amp;#41;&amp;#58;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Set all &amp;quot;variables&amp;quot; as globals, my choice... ;o&amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;global mark&lt;br /&gt;
&amp;nbsp; &amp;nbsp;global space&lt;br /&gt;
&amp;nbsp; &amp;nbsp;global freq&lt;br /&gt;
&amp;nbsp; &amp;nbsp;global stringlength&lt;br /&gt;
&amp;nbsp; &amp;nbsp;global n&lt;br /&gt;
&amp;nbsp; &amp;nbsp;global sweep&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Allocate initial values.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;mark=b&amp;quot;\xff&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;space=b&amp;quot;\x00&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;freq=mark+space&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# 8KHz is the default sample speed of the sound system.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Therefore this sets the lowest frequency, 8KHz/80=100Hz...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;stringlength=80&lt;br /&gt;
&amp;nbsp; &amp;nbsp;n=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;sweep=0&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# A simple screen clear and user screen for a default Python window...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;for n in range&amp;#40;0,40,1&amp;#41;&amp;#58;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;print&amp;#40;&amp;quot;\r\n&amp;quot;&amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;print&amp;#40;&amp;quot;Sweep Generator DEMO from 4KHz down to 100HZ and back again...\n&amp;quot;&amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;print&amp;#40;&amp;quot;This just gives 5 SIREN like sweeps but it is enough for this DEMO...\n&amp;quot;&amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;print&amp;#40;&amp;quot;Copyright, &amp;#40;C&amp;#41;2010, B.Walker, G0LCU.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n&amp;quot;&amp;#41;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Open the audio device, &amp;quot;/dev/dsp&amp;quot; for writing.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;audio=open&amp;#40;&amp;quot;/dev/dsp&amp;quot;, &amp;quot;wb&amp;quot;&amp;#41;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# Sweep for five times only for this DEMO...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;while 1&amp;#58;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;freq=mark+space&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;stringlength=80&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;n=0&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;while sweep&amp;lt;=4&amp;#58;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Sweep down from 4KHz to 100Hz.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;audio.write&amp;#40;freq&amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Add a trailing 0x00 byte.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;freq=freq+space&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Quit when length of &amp;quot;freq&amp;quot; byte-string is 80 bytes.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if len&amp;#40;freq&amp;#41;&amp;gt;=stringlength&amp;#58; break&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;audio.write&amp;#40;freq&amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Add a leading 0xff byte.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;freq=mark+freq&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Quit when length of &amp;quot;freq&amp;quot; byte-string is 80 bytes.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if len&amp;#40;freq&amp;#41;&amp;gt;=stringlength&amp;#58; break&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;while 1&amp;#58;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Sweep back up again from 100Hz to 4KHz.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Start with an empty byte-string.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;freq=b&amp;quot;&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Now create a new byte square wave byte-string.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;for n in range&amp;#40;0,int&amp;#40;&amp;#40;stringlength&amp;#41;/2&amp;#41;,1&amp;#41;&amp;#58;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;freq=freq+mark&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;for n in range&amp;#40;0,int&amp;#40;&amp;#40;stringlength&amp;#41;/2&amp;#41;,1&amp;#41;&amp;#58;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;freq=freq+space&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;audio.write&amp;#40;freq&amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Create a new byte-string reduced by one byte.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# This removes one 0xff byte.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;stringlength=stringlength-1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Quit when length of &amp;quot;freq&amp;quot; byte-string is 2 bytes.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if len&amp;#40;freq&amp;#41;&amp;lt;=2&amp;#58; break&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Start with an empty byte-string.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;freq=b&amp;quot;&amp;quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Now create a new byte-string reduced by one byte.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;for n in range&amp;#40;0,int&amp;#40;&amp;#40;stringlength&amp;#41;/2&amp;#41;,1&amp;#41;&amp;#58;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;freq=freq+mark&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;for n in range&amp;#40;0,int&amp;#40;&amp;#40;&amp;#40;stringlength&amp;#41;/2&amp;#41;+1&amp;#41;,1&amp;#41;&amp;#58;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;freq=freq+space&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;audio.write&amp;#40;freq&amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# This removes one 0x00 byte.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;stringlength=stringlength-1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Quit when length of &amp;quot;freq&amp;quot; byte-string is 2 bytes.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if len&amp;#40;freq&amp;#41;&amp;lt;=2&amp;#58; break&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;sweep=sweep+1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;# Ensure a complete exit from the loop.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if sweep&amp;gt;=5&amp;#58; break&lt;br /&gt;
&amp;nbsp; &amp;nbsp;# On exit ensure the audio device is closed.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;audio.close&amp;#40;&amp;#41;&lt;br /&gt;
main&amp;#40;&amp;#41;&lt;br /&gt;
&lt;br /&gt;
# End of SweepGen3x.py DEMO...&lt;br /&gt;
# Enjoy finding simple solutions to often VERY difficult problems... ;o&amp;#41;&lt;br /&gt;
&lt;/td&gt;	&lt;/tr&gt;&lt;/table&gt;&lt;span class=&quot;postbody&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
Enjoy banging the metal and getting something useful for your home&lt;br /&gt;
electronics workbench...&lt;br /&gt;
&lt;br /&gt;
Bazza, G0LCU...</description>
                                        <comments>http://www.linuxformat.com/forums/viewtopic.php?p=103324#103324</comments>
                                        <author>Bazza</author>
                                        <pubDate>Sat Dec 17, 2011 11:42 am</pubDate>
                                        <guid isPermaLink="true">http://www.linuxformat.com/forums/viewtopic.php?p=103324#103324</guid>
                                      </item></channel></rss>