Mercurial > pyntnclick
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)