changeset 249:913257638e6f

Add length parameter
author Neil Muller <neil@dip.sun.ac.za>
date Fri, 27 Aug 2010 15:51:50 +0200
parents 37f892b59c4b
children df57386908c0
files tools/gen_sound.py
diffstat 1 files changed, 8 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/tools/gen_sound.py	Fri Aug 27 13:40:10 2010 +0200
+++ b/tools/gen_sound.py	Fri Aug 27 15:51:50 2010 +0200
@@ -1,6 +1,6 @@
 # Generate 'perfect' sine wave sounds
 
-# Design notes: produces ~= 0.5s raw CDDA audio - 44100 Hz, 16 bit signed values
+# Design notes: produces ~= (use requested) s raw CDDA audio - 44100 Hz, 16 bit signed values
 # Input is freq in Hz - 440 for A, etc. - must be an integer
 # Output is written the file beep<freq>.pcm
 # Convert to ogg with oggenc -r <file>
@@ -13,7 +13,7 @@
 CDDA_RATE = 44100
 MAX = 105*256 # Max value for sine wave
 
-def gen_sine(freq):
+def gen_sine(freq, secs):
     filename = 'beep%s.pcm' % freq
     # We need to generate freq cycles and sample that CDDA_RATE times
     samples_per_cycle = CDDA_RATE / freq
@@ -23,11 +23,15 @@
         y = MAX * math.sin(rad)
         data.append(struct.pack('<i', y))
     output = open(filename, 'w')
-    for x in range(freq/2):
+    for x in range(int(freq * secs)):
         output.write(''.join(data))
     output.close()
 
 
 if __name__ == "__main__":
     freq = int(sys.argv[1])
-    gen_sine(freq)
+    if len(sys.argv) > 2:
+        secs = float(sys.argv[2])
+    else:
+        secs = 0.25
+    gen_sine(freq, secs)